ext4/046: skip test when ext4 doesn't support bs < ps with dioread_nolock
authorYang Xu <xuyang2018.jy@cn.fujitsu.com>
Tue, 19 Jan 2021 06:13:39 +0000 (14:13 +0800)
committerEryu Guan <guaneryu@gmail.com>
Sun, 24 Jan 2021 15:15:24 +0000 (23:15 +0800)
When testing arm machine, this case fails because ps > bs and kernel
doesn't introduced commit c8cc88163f40 ("ext4: Add support for
blocksize < pagesize in dioread_nolock").  Only skip this case when
kernel complains about bs!=ps error, so we can find dioread_nolock
mount regression in the future.

Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
tests/ext4/046

index 5524024e8b36f050d72581a69f21049e4a52b5c5..c6f7a0512af6f332598a27b5292bb308ff352fa4 100755 (executable)
@@ -31,13 +31,22 @@ _cleanup()
 # remove previous $seqres.full before test
 rm -f $seqres.full
 
+_require_check_dmesg
 _supported_fs ext4
 _require_scratch
 _require_xfs_io_command "falloc"
 _require_scratch_size $((6 * 1024 * 1024)) #kB
 
 _scratch_mkfs >> $seqres.full 2>&1
-_scratch_mount "-o dioread_nolock" >> $seqres.full 2>&1
+if ! _try_scratch_mount "-o dioread_nolock" >> $seqres.full 2>&1; then
+       err_str="can't mount with dioread_nolock if block size != PAGE_SIZE"
+       _check_dmesg_for ${err_str}
+       if [ $? -eq 0 ]; then
+               _notrun "mount failed, ext4 doesn't support bs < ps with dioread_nolock"
+       else
+               _fail "mount failed with dioread_nolock"
+       fi
+fi
 
 # Get blksz
 blksz=$(_get_file_block_size $SCRATCH_MNT)