From 5c7ba6bdf83fda82cce70f384e2ec8218f13002e Mon Sep 17 00:00:00 2001 From: Kirk McKusick Date: Sat, 12 Nov 2022 15:36:07 -0800 Subject: [PATCH] Fix for tunefs(8) unable to add a UFS/FFS soft update journal. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- lib/libufs/cgroup.c | 4 ++++ 1 file changed, 4 insertions(+) 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);