Thread (7 messages) 7 messages, 3 authors, 2018-01-29

Re: xfs_repair: couldn't map inode 2089979520, err = 117

From: Christian Kujau <hidden>
Date: 2018-01-29 03:22:56

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)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help