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>
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
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
}
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"
$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() {