Whamcloud - gitweb
LU-11661 test: improve sanityn test_47g
[fs/lustre-release.git] / lustre / tests / sanityn.sh
index 4cd17e5..68a3faa 100755 (executable)
@@ -2476,11 +2476,13 @@ run_test 47f "pdirops: remote mkdir and rename (src)"
 
 test_47g() {
        [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+       sync
+       sync_all_data
 #define OBD_FAIL_ONCE|OBD_FAIL_MDS_PDO_LOCK    0x145
        do_facet $SINGLEMDS lctl set_param fail_loc=0x80000145
        $LFS mkdir -i 1 $DIR1/$tfile &
        PID1=$!
-       sleep 1
+       sleep 2
        stat $DIR2/$tfile > /dev/null || error "stat must succeed"
        check_pdo_conflict $PID1 && { wait $PID1;
                                        error "getattr isn't blocked"; }
@@ -2881,7 +2883,7 @@ test_71a() {
                { skip "checkfiemap not runnable: $?" && return; }
        # write data this way: hole - data - hole - data
        dd if=/dev/urandom of=$DIR1/$tfile bs=40K seek=1 count=1
-       [ "$(facet_fstype ost$(($($GETSTRIPE -i $DIR1/$tfile) + 1)))" = \
+       [ "$(facet_fstype ost$(($($LFS getstripe -i $DIR1/$tfile) + 1)))" = \
                "zfs" ] &&
                skip "ORI-366/LU-1941: FIEMAP unimplemented on ZFS" && return 0
        dd if=/dev/urandom of=$DIR1/$tfile bs=40K seek=3 count=1
@@ -2929,7 +2931,7 @@ test_71b() {
 
        $LFS setstripe -c -1 $DIR1/$tdir || error "setstripe failed"
        dd if=/dev/urandom of=$DIR1/$tdir/$tfile bs=40K count=1
-       [ "$(facet_fstype ost$(($($GETSTRIPE -i $DIR1/$tdir/$tfile) + 1)))" = \
+       [ "$(facet_fstype ost$(($($LFS getstripe -i $DIR1/$tdir/$tfile) + 1)))" = \
                "zfs" ] &&
                skip "ORI-366/LU-1941: FIEMAP unimplemented on ZFS" && return 0
        checkfiemap $DIR1/$tdir/$tfile 40960 || error "checkfiemap failed"
@@ -4270,10 +4272,10 @@ test_93() {
        #define OBD_FAIL_MDS_LOV_CREATE_RACE     0x163
        do_facet $SINGLEMDS "lctl set_param fail_loc=0x00000163"
 
-       $SETSTRIPE -c -1 $DIR1/$tfile-1/file1 &
+       $LFS setstripe -c -1 $DIR1/$tfile-1/file1 &
        local PID1=$!
        sleep 1
-       $SETSTRIPE -c -1 $DIR2/$tfile-2/file2 &
+       $LFS setstripe -c -1 $DIR2/$tfile-2/file2 &
        local PID2=$!
        wait $PID2
        wait $PID1
@@ -4281,11 +4283,11 @@ test_93() {
        do_facet $SINGLEMDS "lctl set_param -n \
                'lod.lustre-MDT*/qos_threshold_rr' $old_rr"
 
-       $GETSTRIPE $DIR1/$tfile-1/file1
-       rc1=$($GETSTRIPE -q $DIR1/$tfile-1/file1 |
+       $LFS getstripe $DIR1/$tfile-1/file1
+       rc1=$($LFS getstripe -q $DIR1/$tfile-1/file1 |
                awk '{if (/[0-9]/) print $1 }' | sort | uniq -d | wc -l)
-       $GETSTRIPE $DIR2/$tfile-2/file2
-       rc2=$($GETSTRIPE -q $DIR2/$tfile-2/file2 |
+       $LFS getstripe $DIR2/$tfile-2/file2
+       rc2=$($LFS getstripe -q $DIR2/$tfile-2/file2 |
                awk '{if (/[0-9]/) print $1 }' | sort | uniq -d | wc -l)
        echo "rc1=$rc1 and rc2=$rc2 "
        [ $rc1 -eq 0 ] && [ $rc2 -eq 0 ] ||
@@ -4308,14 +4310,13 @@ test_100a() {
 
        $CHECKSTAT -t file -s 4096 $DIR/$tdir/dom || error "stat #1"
        # first stat from server should return size data and save glimpse
-       local gls=$(lctl get_param -n mdc.*.stats | \
-               awk '/ldlm_glimpse/ {print $2}')
-       [ -z $gls ] || error "Unexpected $gls glimpse RPCs"
+       local gls=$(lctl get_param -n mdc.*.stats | grep -c ldlm_glimpse)
+       [ $gls -eq 0 ] || error "Unexpected $gls glimpse RPCs"
        # second stat to check size is NOT cached on client without IO lock
        $CHECKSTAT -t file -s 4096 $DIR/$tdir/dom || error "stat #2"
 
-       local gls=$(lctl get_param -n mdc.*.stats | grep ldlm_glimpse | wc -l)
-       [ "1" == "$gls" ] || error "Expect 1 glimpse RPCs but got $gls"
+       local gls=$(lctl get_param -n mdc.*.stats | grep -c ldlm_glimpse)
+       [ $gls -ge 1 ] || error "Expect glimpse RPCs but none"
        rm -f $dom
 }
 run_test 100a "DoM: glimpse RPCs for stat without IO lock (DoM only file)"
@@ -4336,10 +4337,9 @@ test_100b() {
        # second stat to check size is cached on client
        $CHECKSTAT -t file -s 4096 $DIR/$tdir/dom || error "stat #2"
 
-       local gls=$(lctl get_param -n mdc.*.stats |
-                       awk '/ldlm_glimpse/ {print $2}')
+       local gls=$(lctl get_param -n mdc.*.stats | grep -c ldlm_glimpse)
        # both stats should cause no glimpse requests
-       [ -z $gls ] || error "Unexpected $gls glimpse RPCs"
+       [ $gls == 0 ] || error "Unexpected $gls glimpse RPCs"
        rm -f $dom
 }
 run_test 100b "DoM: no glimpse RPC for stat with IO lock (DoM only file)"
@@ -4360,7 +4360,7 @@ test_100c() {
        $CHECKSTAT -t file -s 2097152 $DIR/$tdir/dom ||
                error "Wrong size from stat #1"
 
-       local gls=$(lctl get_param -n osc.*.stats | grep ldlm_glimpse | wc -l)
+       local gls=$(lctl get_param -n osc.*.stats | grep -c ldlm_glimpse)
        [ $gls -eq 0 ] && error "Expect OST glimpse RPCs but got none"
 
        rm -f $dom
@@ -4385,7 +4385,7 @@ test_100d() {
        $CHECKSTAT -t file -s 4096 $DIR/$tdir/dom ||
                error "Wrong size from stat #1"
 
-       local gls=$(lctl get_param -n osc.*.stats | grep ldlm_glimpse | wc -l)
+       local gls=$(lctl get_param -n osc.*.stats | grep -c ldlm_glimpse)
        [ $gls -eq 0 ] && error "Expect OST glimpse but got none"
 
        rm -f $dom
@@ -4412,7 +4412,7 @@ test_101a() {
        lctl set_param -n mdc.*.stats=clear
        rm $DIR2/$tfile || error "Unlink fails"
 
-       local writes=$(lctl get_param -n mdc.*.stats | grep ost_write | wc -l)
+       local writes=$(lctl get_param -n mdc.*.stats | grep -c ost_write)
        [ $writes -eq 0 ] || error "Found WRITE RPC but expect none"
 }
 run_test 101a "Discard DoM data on unlink"
@@ -4437,7 +4437,7 @@ test_101b() {
        lctl set_param -n mdc.*.stats=clear
        mv $DIR2/${tfile}_2 $DIR2/$tfile || error "Rename fails"
 
-       local writes=$(lctl get_param -n mdc.*.stats | grep ost_write | wc -l)
+       local writes=$(lctl get_param -n mdc.*.stats | grep -c ost_write)
        [ $writes -eq 0 ] || error "Found WRITE RPC but expect none"
 }
 run_test 101b "Discard DoM data on rename"
@@ -4464,11 +4464,27 @@ test_101c() {
        rm $DIR2/$tfile > /dev/null || error "Unlink fails for opened file"
        kill -USR1 $MULTIOP_PID && wait $MULTIOP_PID || error "multiop failure"
 
-       local writes=$(lctl get_param -n mdc.*.stats | grep ost_write | wc -l)
+       local writes=$(lctl get_param -n mdc.*.stats | grep -c ost_write)
        [ $writes -eq 0 ] || error "Found WRITE RPC but expect none"
 }
 run_test 101c "Discard DoM data on close-unlink"
 
+# test to verify file handle related system calls
+# (name_to_handle_at/open_by_handle_at)
+# The new system calls are supported in glibc >= 2.14.
+
+# test to verify we can open by handle an unlinked file from > 1 client
+# This test opens the file normally on $DIR1, which is on one mount, and then
+# opens it by handle on $DIR2, which is on a different mount.
+test_102() {
+       echo "Test file_handle syscalls" > $DIR/$tfile ||
+               error "write failed"
+       check_fhandle_syscalls $DIR/$tfile $DIR2 ||
+               error "check_fhandle_syscalls failed"
+       rm -f $DIR2/$tfile
+}
+run_test 102 "Test open by handle of unlinked file"
+
 log "cleanup: ======================================================"
 
 # kill and wait in each test only guarentee script finish, but command in script