From: Alex Zhuravlev Date: Wed, 10 Apr 2024 11:21:35 +0000 (+0300) Subject: LU-17721 tests: improve sanity-flr/210b X-Git-Tag: 2.15.63~90 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=47573f85e60ac91f69c09b9edfbffc3f74fef298;p=fs%2Flustre-release.git LU-17721 tests: improve sanity-flr/210b do not use total space counters - it's proven to be an unreliable approach. instead check whether specific object is really removed (using debugfs). Test-Parameters: trivial env=ONLY=210b,ONLY_REPEAT=20 testlist=sanity-flr Signed-off-by: Alex Zhuravlev Change-Id: I8d7af4ef5404115ce94040960b3cae9c05c9832f Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/54719 Tested-by: Maloo Tested-by: jenkins Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- diff --git a/lustre/tests/sanity-flr.sh b/lustre/tests/sanity-flr.sh index 15de4e3..bdd29bd 100644 --- a/lustre/tests/sanity-flr.sh +++ b/lustre/tests/sanity-flr.sh @@ -4478,37 +4478,39 @@ run_test 210a "handle broken mirrored lovea" test_210b() { local tf=$DIR/$tfile - local after - local mirrorred - local before [ "$FSTYPE" != "zfs" ] || skip "ZFS file number is not accurate" - stack_trap "rm -f $tf" - - # XXX: how to avoid precreate - wait_delete_completed - $LFS df -i | grep OST - before=$($LFS df -i|grep OST|awk '{sum=sum+$3}END{print sum}') - echo "before file creation: $before" - $LFS setstripe -c 2 $tf || error "can't create file" + $LFS setstripe -i0 -c1 $tf || error "can't create file" dd if=/dev/zero of=$tf bs=1M count=1 || error "can't dd" + local ostdev=$(ostdevname 1) + local fid=($($LFS getstripe $DIR/$tfile | grep 0x)) + local seq=${fid[3]#0x} + local oid=${fid[1]} + local oid_hex + if [ $seq == 0 ]; then + oid_hex=${fid[1]} + else + oid_hex=${fid[2]#0x} + fi + local objpath="O/$seq/d$(($oid % 32))/$oid_hex" + local cmd="$DEBUGFS -c -R \\\"stat $objpath\\\" $ostdev" + + local ino=$(do_facet ost1 $cmd | grep Inode:) + [[ -n $ino ]] || error "can't access obj object: $objpath" + #define OBD_FAIL_LOV_INVALID_OSTIDX 0x1428 do_facet mds1 "$LCTL set_param fail_loc=0x1428" $LFS mirror extend -N $tf || error "can't mirror" - $LFS df -i | grep OST - mirrored=$($LFS df -i|grep OST|awk '{sum=sum+$3}END{print sum}') - echo "after mirror: $mirrored" + # now remove the file with bogus ostidx in the striping info rm $tf || error "can't remove" [[ -f $tf ]] && error "rm failed" wait_delete_completed - $LFS df -i | grep OST - after=$($LFS df -i|grep OST|awk '{sum=sum+$3}END{print sum}') - echo "after rm: $after" - (( after < before )) || error "something went wrong with unlink" + local ino=$(do_facet ost1 $cmd | grep Inode:) + [[ -z $ino ]] || error "still CAN access obj object: $objpath" } run_test 210b "handle broken mirrored lovea (unlink)"