Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/freebsd/freebsd-src.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirk McKusick <mckusick@FreeBSD.org>2022-11-13 02:36:07 +0300
committerKirk McKusick <mckusick@FreeBSD.org>2022-11-13 02:37:27 +0300
commit5c7ba6bdf83fda82cce70f384e2ec8218f13002e (patch)
tree942b2a2e00f972b7b003c0e99375b9aeb477f9dc
parent30a6c8a3a8a65074e531010f4adc8c1559f954ac (diff)
Fix for tunefs(8) unable to add a UFS/FFS soft update journal.
The reported bug is UFS: bad file descriptor: soft update journaling can not be enabled on some FreeBSD-provided disk images – failed to write updated cg. The UFS library (libufs(3)) failed to reopen its disk descriptor when first attempting to update a cylinder group. The error only occurred when trying to add journaling to a filesystem whose first cylinder group was too full to hold the journal. PR: 259090 MFC after: 1 week Sponsored by: The FreeBSD Foundation
-rw-r--r--lib/libufs/cgroup.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/libufs/cgroup.c b/lib/libufs/cgroup.c
index 90b28eadad2c..2058d16e9b6d 100644
--- a/lib/libufs/cgroup.c
+++ b/lib/libufs/cgroup.c
@@ -268,6 +268,10 @@ cgwrite1(struct uufsd *disk, int cg)
static char errmsg[BUFSIZ];
if (cg == disk->d_cg.cg_cgx) {
+ if (ufs_disk_write(disk) == -1) {
+ ERROR(disk, "failed to open disk for writing");
+ return (-1);
+ }
if (cgput(disk->d_fd, &disk->d_fs, &disk->d_cg) == 0)
return (0);
ERROR(disk, NULL);