}
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
$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"
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