Re: git: 460ed6106cf0 - main - Add support for managing UFS/FFS snapshots to fsck_ffs(8).
Date: Thu, 10 Nov 2022 02:52:08 UTC
On Thu, Nov 10, 2022 at 02:31:22AM +0000, Glen Barber wrote: > On Wed, Nov 09, 2022 at 06:46:51PM +0000, Kirk McKusick wrote: > > The branch main has been updated by mckusick: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=460ed6106cf0854caff62e4eeba8ffcd00ab0690 > > > > commit 460ed6106cf0854caff62e4eeba8ffcd00ab0690 > > Author: Kirk McKusick <mckusick@FreeBSD.org> > > AuthorDate: 2022-11-09 18:44:03 +0000 > > Commit: Kirk McKusick <mckusick@FreeBSD.org> > > CommitDate: 2022-11-09 18:46:31 +0000 > > > > Add support for managing UFS/FFS snapshots to fsck_ffs(8). > > > > The kernel handles the managment of UFS/FFS snapshots. Since UFS/FFS > > updates filesystem data (rather than always writing changes to new > > locations like ZFS), the kernel must check every filesystem write > > to see if the block being written is part of a snapshot. If it is > > part of a snapshot, then the kernel must make a copy of the old > > block value into a newly allocated block for the snapshot before > > allowing the write to be done. Similarly, if a block is being freed, > > the kernel must check to see if it is part of a snapshot and let > > the snapshot claim the block rather than freeing it for future use. > > When a snapshot is freed, its blocks need to be offered to older > > snapshots and freed only if no older snapshots wish to claim them. > > > > When snapshots were added to UFS/FFS they were integrated into soft > > updates and just a small part of the management of snapshots needed > > to be added to fsck_ffs(8) as soft updates minimized the set of > > snapshot changes that might need correction. When journaling was > > added to soft updates a much more complete knowledge of snapshots > > needed to be added to fsck_ffs(8) for it to be able to properly > > handle the filesystem changes that a journal rollback needs to do > > (specifically the freeing and allocation of blocks). Since this > > functionality was unavailable, the use of snapshots was disabled > > when running with journaled soft updates. > > > > This set of changes imports the kernel code for the management of > > snapshots to fsck_ffs(8). With this code in place it will become > > possible to enable snapshots when running with journalled soft > > updates. The most immediate benefit will be the ability to use > > snapshots to take consistent filesystem dumps on live filesystems. > > Future work will be done to update fsck_ffs(8) to be able to use > > snapshots to run in background on live filesystems running with > > journaled soft updates. > > > > I think this broke the main build. > > Notably: > > % @@ -483,11 +507,38 @@ flush(int fd, struct bufarea *bp) > % } > % /* FALLTHROUGH */ > % default: > % + copyonwrite(&sblock, bp, std_checkblkavail); > % blwrite(fd, bp->b_un.b_buf, bp->b_bno, bp->b_size); > % break; > > https://ci.freebsd.org/job/FreeBSD-main-i386-build/24590/console > Oddly, the failure email I received was from stable/13, not main, but it was the exact same failure case according to the logs. That said, I see you had committed a fix already, so please disregard this email for now. Glen