X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Freplay-vbr.sh;h=e25ffee0344154d52b8839d3b21b37f3c8665fff;hb=b91e1648a0bef0dee6ce79a6a9fc5b82efa1e0c0;hp=0bf952603e730f03946e19222ec48a40167664ac;hpb=70471a426c13096e537a0d680a96012a288bc9d7;p=fs%2Flustre-release.git diff --git a/lustre/tests/replay-vbr.sh b/lustre/tests/replay-vbr.sh index 0bf9526..e25ffee 100644 --- a/lustre/tests/replay-vbr.sh +++ b/lustre/tests/replay-vbr.sh @@ -61,17 +61,17 @@ rmultiop_start() { local multiop_pid multiop_pid=$(do_node $client cat $pid_file) [ -n "$multiop_pid" ] || error "$client : Can not get multiop_pid from $pid_file " - eval export $(client_var_name $client)_multiop_pid=$multiop_pid - eval export $(client_var_name $client)_do_node_pid=$pid - local var=$(client_var_name $client)_multiop_pid + eval export $(node_var_name $client)_multiop_pid=$multiop_pid + eval export $(node_var_name $client)_do_node_pid=$pid + local var=$(node_var_name $client)_multiop_pid echo client $client multiop_bg started multiop_pid=${!var} return $? } rmultiop_stop() { local client=$1 - local multiop_pid=$(client_var_name $client)_multiop_pid - local do_node_pid=$(client_var_name $client)_do_node_pid + local multiop_pid=$(node_var_name $client)_multiop_pid + local do_node_pid=$(node_var_name $client)_do_node_pid echo "Stopping multiop_pid=${!multiop_pid} (kill ${!multiop_pid} on $client)" do_node $client kill -USR1 ${!multiop_pid} @@ -86,13 +86,31 @@ get_version() { local fid fid=$(do_node $client $LFS path2fid $file) - do_facet $SINGLEMDS $LCTL --device ${!var} getobjversion $fid + do_facet $SINGLEMDS $LCTL --device ${!var} getobjversion \\\"$fid\\\" } #save COS setting cos_param_file=$TMP/rvbr-cos-params save_lustre_params $(comma_list $(mdts_nodes)) "mdt.*.commit_on_sharing" > $cos_param_file +test_0a() { + get_version $CLIENT1 $DIR/$tdir/1a || true +} +run_test 0a "getversion for non existent file shouldn't cause kernel panic" + +test_0b() { + local var=${SINGLEMDS}_svc + local fid + local file=$DIR/$tdir/f + + do_node $CLIENT1 mkdir -p $DIR/$tdir/ + do_node $CLIENT1 touch $file + fid=$(do_node $CLIENT1 $LFS path2fid $file) + do_node $CLIENT1 rm -rf $file + do_facet $SINGLEMDS $LCTL --device ${!var} getobjversion \\\"$fid\\\" || true +} +run_test 0b "getversion for non existent fid shouldn't cause kernel panic" + # test set #1: OPEN test_1a() { # former test_0a local file=$DIR/$tfile @@ -261,7 +279,7 @@ test_4a() { # former test_0h do_node $CLIENT1 mcreate $file pre=$(get_version $CLIENT1 $file) - do_node $CLIENT1 chown $RUNAS_ID $file + do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $file post=$(get_version $CLIENT1 $file) if (($pre == $post)); then error "version not changed: pre $pre, post $post" @@ -276,7 +294,7 @@ test_4b() { # former test_0i do_node $CLIENT1 mcreate $file pre=$(get_version $CLIENT1 $file) - do_node $CLIENT1 chown :$RUNAS_ID $file + do_node $CLIENT1 chgrp $RUNAS_GID $file post=$(get_version $CLIENT1 $file) if (($pre == $post)); then error "version not changed: pre $pre, post $post" @@ -295,8 +313,8 @@ test_4c() { # former test_0j do_node $CLIENT1 mcreate $file replay_barrier $SINGLEMDS - do_node $CLIENT2 chown :$RUNAS_ID $MOUNT2/$tfile - do_node $CLIENT1 chown $RUNAS_ID $file + do_node $CLIENT2 chgrp $RUNAS_GID $MOUNT2/$tfile + do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $file zconf_umount $CLIENT2 $MOUNT2 facet_failover $SINGLEMDS @@ -318,8 +336,8 @@ test_4d() { # former test_0k do_node $CLIENT1 mcreate $file replay_barrier $SINGLEMDS - do_node $CLIENT2 chown $RUNAS_ID $MOUNT2/$tfile - do_node $CLIENT1 chown :$RUNAS_ID $file + do_node $CLIENT2 chown $RUNAS_ID:$RUNAS_GID $MOUNT2/$tfile + do_node $CLIENT1 chgrp $RUNAS_GID $file zconf_umount $CLIENT2 $MOUNT2 facet_failover $SINGLEMDS @@ -356,7 +374,7 @@ test_4f() { # former test_0m do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file replay_barrier $SINGLEMDS - do_node $CLIENT2 chown :$RUNAS_ID $MOUNT2/$tfile + do_node $CLIENT2 chgrp $RUNAS_GID $MOUNT2/$tfile do_node $CLIENT1 chmod 666 $file zconf_umount $CLIENT2 $MOUNT2 facet_failover $SINGLEMDS @@ -454,7 +472,7 @@ test_4j() { # former test_0q do_node $CLIENT1 mcreate $file pre=$(get_version $CLIENT1 $file) - do_node $CLIENT1 truncate $file 1 + do_node $CLIENT1 $TRUNCATE $file 1 post=$(get_version $CLIENT1 $file) if (($pre != $post)); then error "version changed unexpectedly: pre $pre, post $post" @@ -478,7 +496,7 @@ test_4k() { # former test_0r replay_barrier $SINGLEMDS do_node $CLIENT2 chmod 666 $MOUNT2/$tfile - do_node $CLIENT1 truncate $file 1 + do_node $CLIENT1 $TRUNCATE $file 1 sleep 1 mtime_pre=$(do_node $CLIENT1 stat --format=%Y $file) do_node $CLIENT1 touch $file @@ -652,6 +670,7 @@ test_6d() { # former test_0y run_test 6d "rename checks version of target parent" # pdirops tests, bug 18143 +cycle=0 test_7_cycle() { local first=$1 local lost=$2 @@ -659,18 +678,24 @@ test_7_cycle() { local rc=0 local var=${SINGLEMDS}_svc zconf_mount $CLIENT2 $MOUNT2 + cycle=$((cycle + 1)) + local cname=$TESTNAME.$cycle + echo "start cycle: $cname" do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0" do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0" do_node $CLIENT1 mkdir -p $DIR/$tdir replay_barrier $SINGLEMDS # first operation - do_node $CLIENT1 $first || error "Cannot do first operation" + echo "$cname first: $first" + do_node $CLIENT1 $first || error "$cname: Cannot do first operation" # client2 operations that will be lost - do_node $CLIENT2 $lost || error "Cannot do 'lost' operations" + echo "$cname lost: $lost" + do_node $CLIENT2 $lost || error "$cname: Cannot do 'lost' operations" # second operation - do_node $CLIENT1 $last || error "Cannot do last operation" + echo "$cname last: $last" + do_node $CLIENT1 $last || error "$cname: Cannot do last operation" zconf_umount $CLIENT2 $MOUNT2 facet_failover $SINGLEMDS # should fail as conflict expected @@ -1001,11 +1026,11 @@ test_10b() { # former test_2b replay_barrier $SINGLEMDS do_node $CLIENT1 chmod 666 $DIR/$tfile-a # R do_node $CLIENT2 chmod 666 $DIR1/$tfile-b # R - do_node $CLIENT2 chown :$RUNAS_ID $DIR2/$tfile-a # U - do_node $CLIENT1 chown $RUNAS_ID $DIR/$tfile-a # J - do_node $CLIENT2 truncate $DIR2/$tfile-b 1 # U - do_node $CLIENT2 chown :$RUNAS_ID $DIR1/$tfile-b # R - do_node $CLIENT1 chown $RUNAS_ID $DIR/$tfile-b # R + do_node $CLIENT2 chgrp $RUNAS_GID $DIR2/$tfile-a # U + do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $DIR/$tfile-a # J + do_node $CLIENT2 $TRUNCATE $DIR2/$tfile-b 1 # U + do_node $CLIENT2 chgrp $RUNAS_GID $DIR1/$tfile-b # R + do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $DIR/$tfile-b # R zconf_umount $CLIENT2 $MOUNT2 facet_failover $SINGLEMDS @@ -1031,7 +1056,7 @@ test_10b() { # former test_2b do_node $CLIENT2 $CHECKSTAT -p 0666 -u \\\#$UID -g \\\#$UID \ $DIR1/$tfile-a || error "$DIR/$tfile-a: unexpected state" - do_node $CLIENT2 $CHECKSTAT -p 0666 -u \\\#$RUNAS_ID -g \\\#$RUNAS_ID \ + do_node $CLIENT2 $CHECKSTAT -p 0666 -u \\\#$RUNAS_ID -g \\\#$RUNAS_GID \ $DIR1/$tfile-b || error "$DIR/$tfile-b: unexpected state" zconf_umount $CLIENT2 $MOUNT1 @@ -1125,6 +1150,6 @@ rm -f $cos_param_file [ "$CLIENTS" ] && zconf_mount_clients $CLIENTS $DIR -equals_msg `basename $0`: test complete, cleaning up +complete $(basename $0) $SECONDS check_and_cleanup_lustre -[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && grep -q FAIL $TESTSUITELOG && exit 1 || true +exit_status