Description of problem: [Anck 5.10][aarch64][内部nightly]xfstests->ext4-2-bigalloc:generic/263用例执行失败, output mismatch,日志如下: [failed, exit status 1]- output mismatch (see /tmp/tone/run/xfstests/results//generic/263.out.bad) --- tests/generic/263.out 2023-04-26 10:23:00.837749430 +0800 +++ /tmp/tone/run/xfstests/results//generic/263.out.bad 2023-04-26 14:01:56.469749430 +0800 @@ -1,3 +1,18 @@ QA output created by 263 fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z +Seed set to 1 +main: filesystem does not support clone range, disabling! +main: filesystem does not support dedupe range, disabling! +skipping zero size read ... (Run 'diff -u /tmp/tone/run/xfstests/tests/generic/263.out /tmp/tone/run/xfstests/results//generic/263.out.bad' to see the entire diff) # diff -u /tmp/tone/run/xfstests/tests/generic/263.out /tmp/tone/run/xfstests/results//generic/263.out.bad --- /tmp/tone/run/xfstests/tests/generic/263.out 2023-04-26 10:23:00.837749430 +0800 +++ /tmp/tone/run/xfstests/results//generic/263.out.bad 2023-04-26 14:01:56.469749430 +0800 @@ -1,3 +1,18 @@ QA output created by 263 fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z +Seed set to 1 +main: filesystem does not support clone range, disabling! +main: filesystem does not support dedupe range, disabling! +skipping zero size read +truncating to largest ever: 0xe400 +insert range: 0x6000 to 0x7000 +do_insert_range: fallocate: Invalid argument +LOG DUMP (5 total operations): +1( 1 mod 256): SKIPPED (no operation) +2( 2 mod 256): SKIPPED (no operation) +3( 3 mod 256): SKIPPED (no operation) +4( 4 mod 256): TRUNCATE UP from 0x0 to 0xe400 +5( 5 mod 256): INSERT 0x6000 thru 0x6fff (0x1000 bytes) +Log of operations saved to "/fs/nvme0n1p1/junk.fsxops"; replay with --replay-ops +Correct content saved for comparison +(maybe hexdump "/fs/nvme0n1p1/junk" vs "/fs/nvme0n1p1/junk.fsxgood") Version-Release number of selected component (if applicable): How reproducible: 必现 Steps to Reproduce: disk1=nvme0n1p1 disk2=nvme0n1p2 mkdir -p /fs/$disk1 /fs/$disk2 export TEST_DIR=/fs/$disk1 export TEST_DEV=/dev/$disk1 export SCRATCH_MNT=/fs/$disk2 export SCRATCH_DEV=/dev/$disk2 git clone --branch anck-4.19 https://gitee.com/anolis/xfstests.git export CFLAGS="-fcommon" make configure ./configure make && make install ./check tests/generic/075 Actual results: 用例执行失败 Expected results: 用例执行pass Additional info: # uname -r 5.10.134-631.git.df0033244.an8.aarch64 [root@nu4f13165 xfstests]# [root@nu4f13165 xfstests]# cat /etc/os-release NAME="Anolis OS" VERSION="8.8" ID="anolis" ID_LIKE="rhel fedora centos" VERSION_ID="8.8" PLATFORM_ID="platform:an8" PRETTY_NAME="Anolis OS 8.8" ANSI_COLOR="0;31" HOME_URL="https://openanolis.cn/" [root@nu4f13165 xfstests]# lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 96 On-line CPU(s) list: 0-95 Thread(s) per core: 1 Core(s) per socket: 48 Socket(s): 2 NUMA node(s): 1 Vendor ID: HiSilicon BIOS Vendor ID: HiSilicon Model: 0 Model name: Kunpeng-920 BIOS Model name: HUAWEI Kunpeng 920 5250 Stepping: 0x1 CPU MHz: 2600.000 CPU max MHz: 2600.0000 CPU min MHz: 200.0000 BogoMIPS: 200.00 L1d cache: 64K L1i cache: 64K L2 cache: 512K L3 cache: 24576K NUMA node0 CPU(s): 0-95 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm [root@nu4f13165 xfstests]# free -h total used free shared buff/cache available Mem: 753Gi 3.4Gi 746Gi 10Mi 3.7Gi 746Gi Swap: 2.0Gi 0B 2.0Gi
anolis8-4.19-x86_64也有同样的失败 # uname -r 4.19.91-710.git.30c6cdce0a.an8.x86_64 测试日志如下: --- tests/generic/263.out 2023-05-16 16:00:08.850949665 +0800 +++ /tmp/tone/run/xfstests/results//generic/263.out.bad 2023-05-16 16:34:12.303923979 +0800 @@ -1,3 +1,18 @@ QA output created by 263 fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z +Seed set to 1 +main: filesystem does not support clone range, disabling! +main: filesystem does not support dedupe range, disabling! +skipping zero size read ... (Run 'diff -u /tmp/tone/run/xfstests/tests/generic/263.out /tmp/tone/run/xfstests/results//generic/263.out.bad' to see the entire diff) Ran: generic/263 Failures: generic/263 Failed 1 of 1 tests [tone]Error: The return code of run() in run.sh is not 0 generic/263: Failed Test running: Done # diff -u /tmp/tone/run/xfstests/tests/generic/263.out /tmp/tone/run/xfstests/results//generic/263.out.bad --- /tmp/tone/run/xfstests/tests/generic/263.out 2023-05-16 16:00:08.850949665 +0800 +++ /tmp/tone/run/xfstests/results//generic/263.out.bad 2023-05-16 16:34:12.303923979 +0800 @@ -1,3 +1,18 @@ QA output created by 263 fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z +Seed set to 1 +main: filesystem does not support clone range, disabling! +main: filesystem does not support dedupe range, disabling! +skipping zero size read +truncating to largest ever: 0xe400 +insert range: 0x6000 to 0x7000 +do_insert_range: fallocate: Invalid argument +LOG DUMP (5 total operations): +1( 1 mod 256): SKIPPED (no operation) +2( 2 mod 256): SKIPPED (no operation) +3( 3 mod 256): SKIPPED (no operation) +4( 4 mod 256): TRUNCATE UP from 0x0 to 0xe400 +5( 5 mod 256): INSERT 0x6000 thru 0x6fff (0x1000 bytes) +Log of operations saved to "/fs/nvme0n1p1/junk.fsxops"; replay with --replay-ops +Correct content saved for comparison +(maybe hexdump "/fs/nvme0n1p1/junk" vs "/fs/nvme0n1p1/junk.fsxgood")
alinux2 x86版本有同样问题 # uname -r 4.19.91-1411.git.c18ed0b83a1b.al7.x86_64 generic/263 [failed, exit status 1]- output mismatch (see /tmp/tone/run/xfstests/results//generic/263.out.bad) --- tests/generic/263.out 2023-05-17 22:30:57.264025191 +0800 +++ /tmp/tone/run/xfstests/results//generic/263.out.bad 2023-05-17 22:57:57.746661701 +0800 @@ -1,3 +1,18 @@ QA output created by 263 fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z +Seed set to 1 +main: filesystem does not support clone range, disabling! +main: filesystem does not support dedupe range, disabling! +skipping zero size read ... (Run 'diff -u /tmp/tone/run/xfstests/tests/generic/263.out /tmp/tone/run/xfstests/results//generic/263.out.bad' to see the entire diff)
alinux3 016 rc1版本测试,spr ecs,该问题仍然存在 # uname -r 5.10.134-16_rc1.al8.x86_64 测试日志: generic/263 5s ... [failed, exit status 1]- output mismatch (see /var/tmp/tone/run/xfstests/results//generic/263.out.bad) --- tests/generic/263.out 2023-10-11 10:50:55.000000000 +0800 +++ /var/tmp/tone/run/xfstests/results//generic/263.out.bad 2023-10-13 15:51:57.797783063 +0800 @@ -1,3 +1,18 @@ QA output created by 263 fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z +Seed set to 1 +main: filesystem does not support clone range, disabling! +main: filesystem does not support dedupe range, disabling! +skipping zero size read ... (Run 'diff -u /var/tmp/tone/run/xfstests/tests/generic/263.out /var/tmp/tone/run/xfstests/results//generic/263.out.bad' to see the entire diff)
alinux3-5.10.134-16_rc1.al8内核依旧有此问题: 日志如下: generic/263 5s ... [failed, exit status 1]- output mismatch (see /var/tmp/tone/run/xfstests/results//generic/263.out.bad) --- tests/generic/263.out 2023-10-11 18:02:42.641864643 +0800 +++ /var/tmp/tone/run/xfstests/results//generic/263.out.bad 2023-10-12 21:25:30.545507993 +0800 @@ -1,3 +1,18 @@ QA output created by 263 fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z +Seed set to 1 +main: filesystem does not support clone range, disabling! +main: filesystem does not support dedupe range, disabling! +skipping zero size read ... (Run 'diff -u /var/tmp/tone/run/xfstests/tests/generic/263.out /var/tmp/tone/run/xfstests/results//generic/263.out.bad' to see the entire diff)
在016版本内部跟踪
内部跟踪已有分析结论:在开启bigalloc的情况下, fallocate 操作需要 offset|len 与 cluster_size(16K) 对齐,但目前xfstests本身代码不会主动读取磁盘的cluster_zie信息并以此调整合并区间;且测试本身就会对小块做操作,ext4-2-bigalloc下满足不了条件,所以这个case不适用于在ext4-2-bigalloc文件系统中执行,适配用例,关闭该bug。