Whamcloud - gitweb
LU-17721 tests: improve sanity-flr/210b 19/54719/3
authorAlex Zhuravlev <bzzz@whamcloud.com>
Wed, 10 Apr 2024 11:21:35 +0000 (14:21 +0300)
committerOleg Drokin <green@whamcloud.com>
Fri, 12 Apr 2024 03:23:07 +0000 (03:23 +0000)
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 <bzzz@whamcloud.com>
Change-Id: I8d7af4ef5404115ce94040960b3cae9c05c9832f
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/54719
Tested-by: Maloo <maloo@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/tests/sanity-flr.sh

index 15de4e3..bdd29bd 100644 (file)
@@ -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)"