On Wed, Nov 18, 2020 at 03:05:42PM -0600, Eric Sandeen wrote: > On 11/16/20 3:13 PM, Darrick J. Wong wrote: > > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > > > Enable users to upgrade their filesystems to support inode btree block > > counters. > > > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > --- > > v2: set inprogress to force repair (which xfs_admin immediately does), > > clean up the code to pass around fewer arguments, and try to revert the > > change if we hit io errors > > --- > > sooooo the inprogress thing sets off some unexpected behavior. > > In testing this, I noticed that if we have inprogress set, and uknown features/ > version on disk, we go looking for backup superblocks and actually end up > corrupting the filesystem before bailing out: > > # xfs_repair /dev/pmem0p2 > Phase 1 - find and verify superblock... > bad primary superblock - filesystem mkfs-in-progress bit set !!! > > attempting to find secondary superblock... > .found candidate secondary superblock... > verified secondary superblock... > writing modified primary superblock > sb realtime bitmap inode value 18446744073709551615 (NULLFSINO) inconsistent with calculated value 129 > resetting superblock realtime bitmap inode pointer to 129 > sb realtime summary inode value 18446744073709551615 (NULLFSINO) inconsistent with calculated value 130 > resetting superblock realtime summary inode pointer to 130 > Superblock has unknown compat/rocompat/incompat features (0x0/0x8/0x0). > Using a more recent xfs_repair is recommended. > Found unsupported filesystem features. Exiting now. > > # xfs_db -c check /dev/pmem0p2 > disconnected inode 129, nlink 1 > disconnected inode 130, nlink 1 > > so this seems to have exposed a hole in how repair deals with unknown features > when the inprogress bit is set. > > And TBH scampering off to find backup superblocks to "repair" an inprogress > filesystem seems like ... not the right thing to do after a feature upgrade. > > I'm not sure what's better, but > > > bad primary superblock - filesystem mkfs-in-progress bit set !!! > > seems ... unexpected for this purpose. Yeah. Dave suggested that I use an incompat flag for this, so I think I'll do that instead since inprogress is such a mess. --D > -Eric >