diff options
author | Kirk McKusick <mckusick@FreeBSD.org> | 2022-11-13 02:36:07 +0300 |
---|---|---|
committer | Kirk McKusick <mckusick@FreeBSD.org> | 2022-11-13 02:37:27 +0300 |
commit | 5c7ba6bdf83fda82cce70f384e2ec8218f13002e (patch) | |
tree | 942b2a2e00f972b7b003c0e99375b9aeb477f9dc | |
parent | 30a6c8a3a8a65074e531010f4adc8c1559f954ac (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.c | 4 |
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); |