Whamcloud - gitweb
LU-11634 tests: sanityn/test_77 improvements
[fs/lustre-release.git] / lustre / tests / sanityn.sh
index 42beac1..a3d505d 100755 (executable)
@@ -814,11 +814,13 @@ enable_lockless_truncate() {
 }
 
 test_32a() { # bug 11270
-       local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+       local save="$TMP/$TESTSUITE-$TESTNAME.parameters"
        local stripe_size=$(do_facet $SINGLEMDS \
                "$LCTL get_param -n lod.$(facet_svc $SINGLEMDS)*.stripesize")
 
-       save_lustre_params client "$OSC.*.lockless_truncate" > $p
+       save_lustre_params client "$OSC.*.lockless_truncate" > $save
+       # restore lockless_truncate default values on exit
+       stack_trap "restore_lustre_params < $save; rm -f $save" EXIT
        cancel_lru_locks $OSC
        enable_lockless_truncate 1
        rm -f $DIR1/$tfile
@@ -846,10 +848,7 @@ test_32a() { # bug 11270
        $CHECKSTAT -s 3000000 $DIR1/$tfile || error "wrong file size"
        [ $(calc_stats $OSC.*.${OSC}_stats lockless_truncate) -eq 0 ] ||
                error "lockless truncate disabling failed"
-       rm $DIR1/$tfile
-       # restore lockless_truncate default values
-       restore_lustre_params < $p
-       rm -f $p
+       rm -f $DIR1/$tfile
 }
 run_test 32a "lockless truncate"
 
@@ -2476,11 +2475,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 +2882,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 +2930,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"
@@ -3122,31 +3123,47 @@ nrs_write_read() {
        chmod 777 $dir
 
        do_nodes $CLIENTS $myRUNAS \
-               dd if=/dev/zero of="$dir/nrs_r_$HOSTNAME" bs=1M count=$n ||
+               dd if=/dev/zero of="$dir/nrs_r_\$HOSTNAME" bs=1M count=$n ||
                error "dd at 0 on client failed (1)"
 
-       for ((i = 0; i < $n; i++)); do
-               do_nodes $CLIENTS $myRUNAS dd if=/dev/zero \
-                       of="$dir/nrs_w_$HOSTNAME" bs=1M seek=$i count=1 ||
-                        error "dd at ${i}MB on client failed (2)" &
-               local pids_w[$i]=$!
-       done
+       do_nodes $CLIENTS $myRUNAS \
+               "declare -a pids_w;
+               for ((i = 0; i < $n; i++)); do
+                       dd if=/dev/zero of=$dir/nrs_w_\$HOSTNAME bs=1M \
+seek=\\\$i count=1 conv=notrunc &
+                       pids_w[\\\$i]=\\\$!;
+               done;
+               rc_w=0;
+               for ((i = 0; i < $n; i++)); do
+                       wait \\\${pids_w[\\\$i]};
+                       newrc=\\\$?;
+                       [ \\\$newrc -gt \\\$rc_w ] && rc_w=\\\$newrc;
+               done;
+               exit \\\$rc_w" &
+       local pid_w=$!
        do_nodes $CLIENTS sync;
        cancel_lru_locks osc
 
-       for ((i = 0; i < $n; i++)); do
-               do_nodes $CLIENTS $myRUNAS dd if="$dir/nrs_w_$HOSTNAME" \
-                       of=/dev/zero bs=1M seek=$i count=1 > /dev/null ||
-                       error "dd at ${i}MB on client failed (3)" &
-               local pids_r[$i]=$!
-       done
+       do_nodes $CLIENTS $myRUNAS \
+               "declare -a pids_r;
+               for ((i = 0; i < $n; i++)); do
+                       dd if=$dir/nrs_r_\$HOSTNAME bs=1M of=/dev/null \
+seek=\\\$i count=1 &
+                       pids_r[\\\$i]=\\\$!;
+               done;
+               rc_r=0;
+               for ((i = 0; i < $n; i++)); do
+                       wait \\\${pids_r[\\\$i]};
+                       newrc=\\\$?;
+                       [ \\\$newrc -gt \\\$rc_r ] && rc_r=\\\$newrc;
+               done;
+               exit \\\$rc_r" &
+       local pid_r=$!
        cancel_lru_locks osc
 
-       for ((i = 0; i < $n; i++)); do
-               wait ${pids_w[$i]}
-               wait ${pids_r[$i]}
-       done
-       rm -rf $dir || error "rm -rf $dir failed"
+       wait $pid_w || error "dd (write) failed (2)"
+       wait $pid_r || error "dd (read) failed (3)"
+       rm -rvf $dir || error "rm -rf $dir failed"
 }
 
 test_77a() { #LU-3266
@@ -4270,10 +4287,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 +4298,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 ] ||