On Thu, 18 Jan 2018, Darrick J. Wong wrote: > Ahhhurrgh. Yes, right now xfsprogs is rather inflexible about the > verifiers -- the directory repairer decides that it can simply reset the > parent pointer, but then libxfs_iget & friends barf because the sf > directory verifier fails, and there's no way to turn that off. > > Well, there /is/ a way -- refactor the sf verifiers such that they're > (optionally) called by _iget so that repair can load the inode w/o > verifiers, make the corrections, and write everything back out. That > refactoring will appear in Linux 4.16, so I imagine xfs_repair 4.16 will > get back on track with that. > > FWIW I think a reasonable reproducer is running xfs/384 with: > > SCRATCH_XFS_LIST_METADATA_FIELDS=u3.sfdir3.hdr.parent.i4 > SCRATCH_XFS_LIST_FUZZ_VERBS=random While the file system could be repaired eventually with xfsprogs-v4.10, it took me a while to find time to setup a VM and try to run xfs/384. I checked out djwong-xfs-linux/master and booted into a kernel with CONFIG_XFS_ONLINE_SCRUB=y and also built djwong-xfsprogs-dev/djwong-devel where xfs_scrub was available, and then: ubuntu0# export PATH=/opt/xfsprogs-dev/sbin:$PATH ubuntu0# export SCRATCH_XFS_LIST_METADATA_FIELDS=u3.sfdir3.hdr.parent.i4 SCRATCH_XFS_LIST_FUZZ_VERBS=random ubuntu0# ./check tests/xfs/384 FSTYP -- xfs (non-debug) PLATFORM -- Linux/x86_64 ubuntu0 4.15.0-rc9-00001-g0d665e7b109d MKFS_OPTIONS -- -f -bsize=4096 /dev/mapper/vg0-lv1 MOUNT_OPTIONS -- /dev/mapper/vg0-lv1 /mnt/scratch xfs/384 - output mismatch (see /opt/xfstests/xfstests/results//xfs/384.out.bad) --- tests/xfs/384.out 2018-01-19 17:10:21.382080009 -0800 +++ /opt/xfstests/xfstests/results//xfs/384.out.bad 2018-01-28 19:17:58.795130435 -0800 @@ -2,4 +2,8 @@ Format and populate Find inline-format dir inode Fuzz inline-format dir inode +offline repair failed (1) with u3.sfdir3.hdr.parent.i4 = random. +offline re-scrub (1) with u3.sfdir3.hdr.parent.i4 = random. +online re-scrub (1) with u3.sfdir3.hdr.parent.i4 = random. +re-repair failed (1) with u3.sfdir3.hdr.parent.i4 = random. ... (Run 'diff -u tests/xfs/384.out /opt/xfstests/xfstests/results//xfs/384.out.bad' to see the entire diff) _check_dmesg: something found in dmesg (see /opt/xfstests/xfstests/results//xfs/384.dmesg) Ran: xfs/384 Failures: xfs/384 Failed 1 of 1 tests If this means anything to you, I've put the result files here: http://nerdbynature.de/bits/4.14/xfs/ Thanks, Christian. -- BOFH excuse #209: Only people with names beginning with 'A' are getting mail this week (a la Microsoft) -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html