Description of problem: xfs文件系统,xfstests下xfs/148 -ls: reading directory TEST_DIR/mount-148/testdir: Structure needs cleaning x86和arm均存在该问题 失败几率:100% 测试日志: ./check tests/xfs/148 FSTYP -- xfs (non-debug) PLATFORM -- Linux/x86_64 iZ2ze6n8cezigzjqlcfjadZ 4.19.91-26_rc1.an7.x86_64 #1 SMP Mon Apr 25 17:24:24 CST 2022 MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb2 MOUNT_OPTIONS -- /dev/vdb2 /fs/scratch xfs/148 - output mismatch (see /tmp/tone/run/xfstests/results//xfs/148.out.bad) --- tests/xfs/148.out 2022-05-05 16:39:04.748723614 +0800 +++ /tmp/tone/run/xfstests/results//xfs/148.out.bad 2022-05-05 16:39:09.344733637 +0800 @@ -27,16 +27,20 @@ attr_get: No data available Could not get "a_are_bad/for_you" for TEST_DIR/mount-148/testfile ++ ACCESSING BAD METADATA -ls: reading directory TEST_DIR/mount-148/testdir: Structure needs cleaning +f_another +f_are_bad/for_you f_something ... (Run 'diff -u /tmp/tone/run/xfstests/tests/xfs/148.out /tmp/tone/run/xfstests/results//xfs/148.out.bad' to see the entire diff) Ran: xfs/148 Failures: xfs/148 Failed 1 of 1 tests Version-Release number of selected component (if applicable): # uname -a Linux iZ2ze6n8cezigzjqlcfjadZ 4.19.91-26_rc1.an7.x86_64 #1 SMP Mon Apr 25 17:24:24 CST 2022 x86_64 x86_64 x86_64 GNU/Linux # uname -a Linux iZ2zebfu2pfe96wy4xb5lsZ 4.19.91-26_rc1.an7.aarch64 #1 SMP Mon Apr 25 17:30:58 CST 2022 aarch64 aarch64 aarch64 GNU/Linux # cat /etc/os-release NAME="Anolis OS" VERSION="7.7" ID="anolis" ID_LIKE="rhel fedora centos" VERSION_ID="7.7" PRETTY_NAME="Anolis OS 7.7" ANSI_COLOR="0;31" HOME_URL="https://openanolis.cn/" BUG_REPORT_URL="https://bugs.openanolis.cn/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7" How reproducible: 1. 准备环境 #准备disk1 disk2测试盘 disk1=vdb1 disk2=vdb2 dmsetup remove_all wipefs -a --force /dev/$disk1 wipefs -a --force /dev/$disk2 mkfs -t xfs -L OStest -q -f /dev/$disk1 mkfs -t xfs -L OStest -q -f /dev/$disk2 export TEST_DIR=/fs/$disk1 export TEST_DEV=/dev/$disk1 export FSTYP=xfs export SCRATCH_MNT=/fs/scratch mkdir /fs/$disk1 -p mkdir /fs/scratch -p export SCRATCH_DEV=/dev/$disk2 2. 下载xfstests测试代码 3. 编译测试源码 cd xfstests-dev export CFLAGS="-fcommon" make make install 4.执行测试用例 ./check tests/xfs/148 Expected results: Additional info: xfsprogs-4.5.0-22.an7.x86_64
an8 上该用例conf xfs/148 [not run] parallel repair binary xfs_prepair64 is not installed
(In reply to kangjiangbo from comment #1) > an8 上该用例conf > xfs/148 [not run] parallel repair binary xfs_prepair64 is not installed 估计你的用例不是最新的,之前老的 xfs_prepair64 已经被丢弃了: 0fd43f3f4bd7 xfs/14[89]: Remove xfs_prepair64 and xfs_prepair tests 新的用例为: See if we catch corrupt directory names or attr names with nulls or slashes in them. 从描述上看是对 dir 和 attr name 做了加固。
应该是下面这个 patchset 修复: https://lore.kernel.org/linux-xfs/157232182246.593721.4902116478429075171.stgit@magnolia/
依赖 patchset: https://lore.kernel.org/linux-xfs/154697976479.2839.3584921201780682011.stgit@magnolia/
合入 2 个 patchset 后,an8 测试通过; an7 需要更新 xfsprogs。
Merged at: https://gitee.com/anolis/cloud-kernel/pulls/353