Whamcloud - gitweb
EX-6808 tests: allow run_lfsck() to skip error
authorJian Yu <yujian@whamcloud.com>
Fri, 3 Feb 2023 21:05:47 +0000 (13:05 -0800)
committerAndreas Dilger <adilger@whamcloud.com>
Wed, 8 Feb 2023 05:47:32 +0000 (05:47 +0000)
If e2fsck or lfsck are repairing any corruption it means
the filesystem was corrupted by something, and that
shouldn't happen during testing. Running run_lfsck() will
fail and report an error.

However, after running sanityn test 70b, there will be
some known corruptions need to be repaired. We have to
make run_lfsck() support skipping some allowed errors
so as to make sanity-lipe-find3 and sanity-lipe-find3
tests proceed.

Test-Parameters: trivial testlist=sanityn,sanity-lipe-scan3
Test-Parameters: trivial testlist=sanityn,sanity-lipe-find3
Test-Parameters: trivial mdscount=2 mdtcount=4 \
testlist=sanityn,sanity-lipe-scan3
Test-Parameters: trivial mdscount=2 mdtcount=4 \
env=SANITY_LIPE_FIND3_EXCEPT=109 \
testlist=sanityn,sanity-lipe-find3

Fixes: f9ba28af02 ("EX-6692 tests: run LFSCK in sanity-lipe-scan3/find3")
Change-Id: I686820a70b1a393611d90e286febfd3512fd40f7
Signed-off-by: Jian Yu <yujian@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/49903
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/tests/sanity-lipe-find3.sh
lustre/tests/sanity-lipe-scan3.sh
lustre/tests/test-framework.sh

index 44217e9..257ac5d 100644 (file)
@@ -32,7 +32,7 @@ which jq || skip_env "jq is not installed"
 
 build_test_filter
 check_and_setup_lustre
-run_lfsck
+run_lfsck 2
 
 if [ -d $MOUNT/.lustre/lost+found ] && [ "$(ls -A $MOUNT/.lustre/lost+found)" ]
 then
index f01f12b..b3e3e4b 100644 (file)
@@ -43,7 +43,7 @@ declare -r ROOT_FID="[0x200000007:0x1:0x0]"
 
 build_test_filter
 check_and_setup_lustre
-run_lfsck
+run_lfsck 2
 
 if [ -d $MOUNT/.lustre/lost+found ] && [ "$(ls -A $MOUNT/.lustre/lost+found)" ]
 then
index 6cc11ea..b646de1 100755 (executable)
@@ -5755,6 +5755,8 @@ check_shared_dir() {
 }
 
 run_lfsck() {
+       local allowed_errors=${1:-0}
+
        do_nodes $(comma_list $(mdts_nodes) $(osts_nodes)) \
                $LCTL set_param printk=+lfsck
        do_facet $SINGLEMDS "$LCTL lfsck_start -M $FSNAME-MDT0000 -r -A -t all"
@@ -5777,8 +5779,8 @@ run_lfsck() {
                        $LCTL get_param -n obdfilter.$FSNAME-*.lfsck_* |
                        awk '/repaired/ { print $2 }' | calc_sum)
        local repaired=$((rep_mdt + rep_ost))
-       [ $repaired -eq 0 ] ||
-               error "lfsck repaired $rep_mdt MDT and $rep_ost OST errors"
+       (( $repaired <= $allowed_errors )) ||
+               error "lfsck repaired $rep_mdt MDT and $rep_ost OST errors > $allowed_errors"
 }
 
 dump_file_contents() {