[Issue] xfs: g/754, xfs_repair reports mismatch between format and size in symlink ino

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



Hi

Using upstream kernel, the symlink does not get corrupted in the test of generic/754 on xfs.
But the check of xfs_repair still fails with "mismatch between format (2) and size (297) in symlink ino 139".
Does xfs_repair need to make corresponding modifications to the upstream kernel fix commit?
Could anyone help take a look?

Package Version:
kernel: 6.10.0
xfs_repair: 6.9.0

Results:
```
# ./check generic/754
FSTYP -- xfs (non-debug)
PLATFORM -- Linux/x86_64 localhost 6.10.0 #2 SMP PREEMPT_DYNAMIC Wed Jul 24 05:36:54 EDT 2024
MKFS_OPTIONS -- -f /dev/loop1
MOUNT_OPTIONS -- -o context=system_u:object_r:root_t:s0 /dev/loop1 /mnt/xfstests/scratch

generic/754 _check_xfs_filesystem: filesystem on /dev/loop1 is inconsistent (r)
(see /root/xfstests-dev/results//generic/754.full for details)


HINT: You _MAY_ be missing kernel fix:
XXXXXXXXXXXXX xfs: allow symlinks with short remote targets

Ran: generic/754
Failures: generic/754
Failed 1 of 1 tests
```

Output of "xfs_repair -n":
```
Phase 1 - find and verify superblock...
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan (but don't clear) agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
mismatch between format (2) and size (297) in symlink ino 139
bad data fork in symlink 139
would have cleared inode 139
mismatch between format (2) and size (330) in symlink ino 140
bad data fork in symlink 140
would have cleared inode 140
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
unknown block state, ag 0, blocks 14-15
        - check for inodes claiming duplicate blocks...
        - agno = 1
        - agno = 0
entry "symlink.288" at block 0 offset 288 in directory inode 128 references free inode 139
        would clear inode number in entry at offset 288...
        - agno = 2
        - agno = 3
entry "symlink.320" at block 0 offset 312 in directory inode 128 references free inode 140
        would clear inode number in entry at offset 312...
mismatch between format (2) and size (297) in symlink ino 139
bad data fork in symlink 139
would have cleared inode 139
mismatch between format (2) and size (330) in symlink ino 140
bad data fork in symlink 140
would have cleared inode 140
No modify flag set, skipping phase 5
Phase 6 - check inode connectivity...
        - traversing filesystem ...
entry "symlink.288" in directory inode 128 points to free inode 139, would junk entry
entry "symlink.320" in directory inode 128 points to free inode 140, would junk entry
bad hash table for directory inode 128 (no data entry): would rebuild
would rebuild directory inode 128
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify link counts...
No modify flag set, skipping filesystem flush and exiting.
```




[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux