Description of problem: anolis8 aarch64物理机环境,内部nightly xfstests ext4-2-bigalloc测试case:generic/263执行失败。 Version-Release number of selected component (if applicable): How reproducible: Steps to Reproduce: 下载并编译安装内部xfstests mkfs -t ext4 -E lazy_itable_init=0,lazy_journal_init=0 -L OStest -q -F -O bigalloc -C 16k -q -F /dev/nvme0n1p1 mkfs -t ext4 -E lazy_itable_init=0,lazy_journal_init=0 -L OStest -q -F -O bigalloc -C 16k -q -F /dev/nvme0n1p2 mkdir /mnt/nvme0n1p1 mkdir /mnt/nvme0n1p2 #TEST_DEV/SCRATCH_DEV为文件系统所在的磁盘或分区 export TEST_DEV=/dev/nvme0n1p1 export SCRATCH_DEV=/dev/nvme0n1p2 export FSTYP=ext4 #TEST_DIR/SCRATCH_MNT表示待测试文件系统的挂载目录 export SCRATCH_MNT=/mnt/nvme0n1p2 export TEST_DIR=/mnt/nvme0n1p1 cd xfstests安装目录 ./check generic/263 Actual results: [root@l57h15217 xfstests]# ./check generic/263 FSTYP -- ext4 PLATFORM -- Linux/aarch64 l57h15217 4.19.91-724.git.c18ed0b83.an8.aarch64 #1 SMP Wed May 17 13:56:08 UTC 2023 MKFS_OPTIONS -- -F /dev/nvme0n1p2 MOUNT_OPTIONS -- -o acl,user_xattr /dev/nvme0n1p2 /mnt/nvme0n1p2 generic/263 [failed, exit status 1]- output mismatch (see /var/lib/xfstests/results//generic/263.out.bad) --- tests/generic/263.out 2023-03-28 18:46:05.127033139 +0800 +++ /var/lib/xfstests/results//generic/263.out.bad 2023-05-18 17:54:44.766146854 +0800 @@ -1,3 +1,26 @@ 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! +main: filesystem does not support exchange range, disabling! ... (Run 'diff -u /var/lib/xfstests/tests/generic/263.out /var/lib/xfstests/results//generic/263.out.bad' to see the entire diff) Ran: generic/263 Failures: generic/263 Failed 1 of 1 tests [root@l57h15217 xfstests]# diff -u /var/lib/xfstests/tests/generic/263.out /var/lib/xfstests/results//generic/263.out.bad --- /var/lib/xfstests/tests/generic/263.out 2023-03-28 18:46:05.127033139 +0800 +++ /var/lib/xfstests/results//generic/263.out.bad 2023-05-18 17:54:44.766146854 +0800 @@ -1,3 +1,26 @@ 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! +main: filesystem does not support exchange range, disabling! +fallocating to largest ever: 0x6c812 +collapse range: 0x48000 to 0x49000 +do_collapse_range: fallocate: Invalid argument +LOG DUMP (13 total operations): +1( 1 mod 256): FALLOC 0x6ba10 thru 0x6c812 (0xe02 bytes) EXTENDING +2( 2 mod 256): SKIPPED (no operation) +3( 3 mod 256): SKIPPED (no operation) +4( 4 mod 256): TRUNCATE DOWN from 0x6c812 to 0x51800 +5( 5 mod 256): SKIPPED (no operation) +6( 6 mod 256): MAPREAD 0x1b000 thru 0x1c2b7 (0x12b8 bytes) +7( 7 mod 256): PUNCH 0x2ce7a thru 0x2e998 (0x1b1f bytes) +8( 8 mod 256): PUNCH 0x29238 thru 0x2af78 (0x1d41 bytes) +9( 9 mod 256): SKIPPED (no operation) +10( 10 mod 256): PUNCH 0x50de6 thru 0x51337 (0x552 bytes) +11( 11 mod 256): READ 0x8000 thru 0x8fff (0x1000 bytes) +12( 12 mod 256): MAPREAD 0x34000 thru 0x3584b (0x184c bytes) +13( 13 mod 256): COLLAPSE 0x48000 thru 0x48fff (0x1000 bytes) +Log of operations saved to "/mnt/nvme0n1p1/junk.fsxops"; replay with --replay-ops +Correct content saved for comparison +(maybe hexdump "/mnt/nvme0n1p1/junk" vs "/mnt/nvme0n1p1/junk.fsxgood") Expected results: case pass Additional info: [root@l57h15217 xfstests]# uname -r 4.19.91-724.git.c18ed0b83.an8.aarch64 [root@l57h15217 xfstests]# cat /etc/anolis-release Anolis OS release 8.8 [root@l57h15217 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@l57h15217 xfstests]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 378G 0 378G 0% /dev tmpfs 378G 100K 378G 1% /dev/shm tmpfs 378G 4.1G 374G 2% /run tmpfs 378G 0 378G 0% /sys/fs/cgroup /dev/sda2 49G 16G 32G 33% / /dev/sda1 1022M 6.7M 1016M 1% /boot/efi tmpfs 76G 0 76G 0% /run/user/0 [root@l57h15217 xfstests]# free -g total used free shared buff/cache available Mem: 754 677 75 2 2 73 Swap: 1 1 0 [root@l57h15217 xfstests]# cat /proc/cmdline BOOT_IMAGE=(hd1,gpt2)/boot/vmlinuz-4.19.91-724.git.c18ed0b83.an8.aarch64 root=UUID=3fbce54d-0f7f-47cf-a94a-c4592d5d6057 ro console=tty0 console=ttyS0,115200 rd.driver.pre=ahci cgwb_v1 psi=1 slub_debug=FPZU kmemleak=on crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M [root@l57h15217 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
anolis7-4.19-x86 ck27.4版本有同样失败; 内核:4.19.91-27.4.an7.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-22 18:05:38.036799448 +0800 +++ /tmp/tone/run/xfstests/results//generic/263.out.bad 2023-05-22 18:27:34.741265718 +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)
有相关的问题单子 https://bugzilla.openanolis.cn/show_bug.cgi?id=4840 ------------------------ 内部跟踪已有分析结论:在开启bigalloc的情况下, fallocate 操作需要 offset|len 与 cluster_size(16K) 对齐,但目前xfstests本身代码不会主动读取磁盘的cluster_zie信息并以此调整合并区间;且测试本身就会对小块做操作,ext4-2-bigalloc下满足不了条件,所以这个case不适用于在ext4-2-bigalloc文件系统中执行,适配用例,关闭该bug。