-rmultiop_start() {
- local client=$1
- local file=$2
- local cmds=$3
-
- # We need to run do_node in bg, because pdsh does not exit
- # if child process of run script exists.
- # I.e. pdsh does not exit when runmultiop_bg_pause exited,
- # because of multiop_bg_pause -> $MULTIOP_PROG &
- # By the same reason we need sleep a bit after do_nodes starts
- # to let runmultiop_bg_pause start muliop and
- # update /tmp/multiop_bg.pid ;
- # The rm /tmp/multiop_bg.pid guarantees here that
- # we have the updated by runmultiop_bg_pause
- # /tmp/multiop_bg.pid file
-
- local pid_file=$TMP/multiop_bg.pid.$$
- do_node $client "MULTIOP_PID_FILE=$pid_file LUSTRE= runmultiop_bg_pause $file $cmds" &
- local pid=$!
- sleep 3
- 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 $(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 $?
+#
+# get_version(): Gets the version of an object on servers
+# Parameter1: Client/Machine Name
+# Parameter2: File Path
+# Returns: Objectversion Or -1 if getobjversion fails.
+#
+get_version() {
+ local var=${SINGLEMDS}_svc
+ local client=$1
+ local file=$2
+ local fid=$(do_node $client $LFS path2fid $file)
+ local objver=$(do_facet $SINGLEMDS $LCTL --device ${!var} \
+ getobjversion \\\"$fid\\\")
+
+ [[ -z $objver ]] && objver=-1
+ echo $objver
- local file=$DIR/$tfile
- local pre
- local post
-
- do_node $CLIENT1 mcreate $file
- pre=$(get_version $CLIENT1 $file)
- do_node $CLIENT1 openfile -f O_RDWR $file
- post=$(get_version $CLIENT1 $file)
- if (($pre != $post)); then
- error "version changed unexpectedly: pre $pre, post $post"
- fi
+ local file=$DIR/$tfile
+ local pre
+ local post
+
+ do_node $CLIENT1 mcreate $file
+ pre=$(chk_get_version $CLIENT1 $file)
+ do_node $CLIENT1 openfile -f O_RDWR $file
+ post=$(chk_get_version $CLIENT1 $file)
+ if (($pre != $post)); then
+ error "version changed unexpectedly: pre $pre, post $post"
+ fi
- local pre
- local post
-
- # fifo
- pre=$(get_version $CLIENT1 $DIR)
- do_node $CLIENT1 mkfifo $DIR/$tfile-fifo
- post=$(get_version $CLIENT1 $DIR)
- if (($pre != $post)); then
- error "version was changed: pre $pre, post $post"
- fi
- # mkdir
- pre=$(get_version $CLIENT1 $DIR)
- do_node $CLIENT1 mkdir $DIR/$tfile-dir
- post=$(get_version $CLIENT1 $DIR)
- if (($pre != $post)); then
- error "version was changed: pre $pre, post $post"
- fi
- do_node $CLIENT1 rmdir $DIR/$tfile-dir
-
- # mknod
- pre=$(get_version $CLIENT1 $DIR)
- do_node $CLIENT1 mkfifo $DIR/$tfile-nod
- post=$(get_version $CLIENT1 $DIR)
- if (($pre != $post)); then
- error "version was changed: pre $pre, post $post"
- fi
- # symlink
- pre=$(get_version $CLIENT1 $DIR)
- do_node $CLIENT1 mkfifo $DIR/$tfile-symlink
- post=$(get_version $CLIENT1 $DIR)
- if (($pre != $post)); then
- error "version was changed: pre $pre, post $post"
- fi
+ local pre
+ local post
+
+ # fifo
+ pre=$(chk_get_version $CLIENT1 $DIR)
+ do_node $CLIENT1 mkfifo $DIR/$tfile-fifo
+ post=$(chk_get_version $CLIENT1 $DIR)
+ if (($pre != $post)); then
+ error "version was changed: pre $pre, post $post"
+ fi
+ # mkdir
+ pre=$(chk_get_version $CLIENT1 $DIR)
+ do_node $CLIENT1 mkdir $DIR/$tfile-dir
+ post=$(chk_get_version $CLIENT1 $DIR)
+ if (($pre != $post)); then
+ error "version was changed: pre $pre, post $post"
+ fi
+ do_node $CLIENT1 rmdir $DIR/$tfile-dir
+
+ # mknod
+ pre=$(chk_get_version $CLIENT1 $DIR)
+ do_node $CLIENT1 mkfifo $DIR/$tfile-nod
+ post=$(chk_get_version $CLIENT1 $DIR)
+ if (($pre != $post)); then
+ error "version was changed: pre $pre, post $post"
+ fi
+ # symlink
+ pre=$(chk_get_version $CLIENT1 $DIR)
+ do_node $CLIENT1 mkfifo $DIR/$tfile-symlink
+ post=$(chk_get_version $CLIENT1 $DIR)
+ if (($pre != $post)); then
+ error "version was changed: pre $pre, post $post"
+ fi
- local pre
- local post
-
- do_node $CLIENT1 mcreate $DIR/$tfile
- pre=$(get_version $CLIENT1 $DIR)
- do_node $CLIENT1 rm $DIR/$tfile
- post=$(get_version $CLIENT1 $DIR)
- if (($pre != $post)); then
- error "version was changed: pre $pre, post $post"
- fi
+ local pre
+ local post
+
+ do_node $CLIENT1 mcreate $DIR/$tfile
+ pre=$(chk_get_version $CLIENT1 $DIR)
+ do_node $CLIENT1 rm $DIR/$tfile
+ post=$(chk_get_version $CLIENT1 $DIR)
+ if (($pre != $post)); then
+ error "version was changed: pre $pre, post $post"
+ fi
- local file=$DIR/$tfile
- local pre
- local post
-
- do_node $CLIENT1 mcreate $file
- pre=$(get_version $CLIENT1 $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"
- fi
+ local file=$DIR/$tfile
+ local pre
+ local post
+
+ do_node $CLIENT1 mcreate $file
+ pre=$(chk_get_version $CLIENT1 $file)
+ do_node $CLIENT1 chown $RUNAS_ID:$RUNAS_GID $file
+ post=$(chk_get_version $CLIENT1 $file)
+ if (($pre == $post)); then
+ error "version not changed: pre $pre, post $post"
+ fi
- local file=$DIR/$tfile
- local pre
- local post
-
- do_node $CLIENT1 mcreate $file
- pre=$(get_version $CLIENT1 $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"
- fi
+ local file=$DIR/$tfile
+ local pre
+ local post
+
+ do_node $CLIENT1 mcreate $file
+ pre=$(chk_get_version $CLIENT1 $file)
+ do_node $CLIENT1 chgrp $RUNAS_GID $file
+ post=$(chk_get_version $CLIENT1 $file)
+ if (($pre == $post)); then
+ error "version not changed: pre $pre, post $post"
+ fi
- local file=$DIR/$tfile
- local pre
- local post
-
- do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file
- pre=$(get_version $CLIENT1 $file)
- do_node $CLIENT1 chmod 666 $file
- post=$(get_version $CLIENT1 $file)
- if (($pre == $post)); then
- error "version not changed: pre $pre, post $post"
- fi
+ local file=$DIR/$tfile
+ local pre
+ local post
+
+ do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $file
+ pre=$(chk_get_version $CLIENT1 $file)
+ do_node $CLIENT1 chmod 666 $file
+ post=$(chk_get_version $CLIENT1 $file)
+ if (($pre == $post)); then
+ error "version not changed: pre $pre, post $post"
+ fi
- local file=$DIR/$tfile
- local pre
- local post
-
- do_node $CLIENT1 mcreate $file
- pre=$(get_version $CLIENT1 $file)
- do_node $CLIENT1 chattr +i $file
- post=$(get_version $CLIENT1 $file)
- do_node $CLIENT1 chattr -i $file
- if (($pre == $post)); then
- error "version not changed: pre $pre, post $post"
- fi
+ local file=$DIR/$tfile
+ local pre
+ local post
+
+ do_node $CLIENT1 mcreate $file
+ pre=$(chk_get_version $CLIENT1 $file)
+ do_node $CLIENT1 chattr +i $file
+ post=$(chk_get_version $CLIENT1 $file)
+ do_node $CLIENT1 chattr -i $file
+ if (($pre == $post)); then
+ error "version not changed: pre $pre, post $post"
+ fi
- local file=$DIR/$tfile
- local pre
- local post
- local ad_orig
- local var=${SINGLEMDS}_svc
-
- ad_orig=$(do_facet $SINGLEMDS "$LCTL get_param mdd.${!var}.atime_diff")
- do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.atime_diff=0"
- do_node $CLIENT1 mcreate $file
- pre=$(get_version $CLIENT1 $file)
- do_node $CLIENT1 touch $file
- post=$(get_version $CLIENT1 $file)
- #
- # We don't fail MDS in this test. atime_diff shall be
- # restored to its original value.
- #
- do_facet $SINGLEMDS "$LCTL set_param $ad_orig"
- if (($pre != $post)); then
- error "version changed unexpectedly: pre $pre, post $post"
- fi
+ local file=$DIR/$tfile
+ local pre
+ local post
+ local ad_orig
+ local var=${SINGLEMDS}_svc
+
+ ad_orig=$(do_facet $SINGLEMDS "$LCTL get_param mdd.${!var}.atime_diff")
+ do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.atime_diff=0"
+ do_node $CLIENT1 mcreate $file
+ pre=$(chk_get_version $CLIENT1 $file)
+ do_node $CLIENT1 touch $file
+ post=$(chk_get_version $CLIENT1 $file)
+ #
+ # We don't fail MDS in this test. atime_diff shall be
+ # restored to its original value.
+ #
+ do_facet $SINGLEMDS "$LCTL set_param $ad_orig"
+ if (($pre != $post)); then
+ error "version changed unexpectedly: pre $pre, post $post"
+ fi
- local file=$DIR/$tfile
- local pre
- local post
-
- do_node $CLIENT1 mcreate $file
- pre=$(get_version $CLIENT1 $file)
- do_node $CLIENT1 $TRUNCATE $file 1
- post=$(get_version $CLIENT1 $file)
- if (($pre != $post)); then
- error "version changed unexpectedly: pre $pre, post $post"
- fi
+ local file=$DIR/$tfile
+ local pre
+ local post
+
+ do_node $CLIENT1 mcreate $file
+ pre=$(chk_get_version $CLIENT1 $file)
+ do_node $CLIENT1 $TRUNCATE $file 1
+ post=$(chk_get_version $CLIENT1 $file)
+ if (($pre != $post)); then
+ error "version changed unexpectedly: pre $pre, post $post"
+ fi
- local pre
- local post
- local tp_pre
- local tp_post
-
- do_node $CLIENT1 mcreate $DIR/$tfile
- do_node $CLIENT1 mkdir -p $DIR/$tdir
- pre=$(get_version $CLIENT1 $DIR/$tfile)
- tp_pre=$(get_version $CLIENT1 $DIR/$tdir)
- do_node $CLIENT1 link $DIR/$tfile $DIR/$tdir/$tfile
- post=$(get_version $CLIENT1 $DIR/$tfile)
- tp_post=$(get_version $CLIENT1 $DIR/$tdir)
- if (($pre == $post)); then
- error "version of source not changed: pre $pre, post $post"
- fi
- if (($tp_pre != $tp_post)); then
- error "version of target parent was changed: pre $tp_pre, post $tp_post"
- fi
+ local pre
+ local post
+ local tp_pre
+ local tp_post
+
+ do_node $CLIENT1 mcreate $DIR/$tfile
+ do_node $CLIENT1 mkdir -p $DIR/$tdir
+ pre=$(chk_get_version $CLIENT1 $DIR/$tfile)
+ tp_pre=$(chk_get_version $CLIENT1 $DIR/$tdir)
+ do_node $CLIENT1 link $DIR/$tfile $DIR/$tdir/$tfile
+ post=$(chk_get_version $CLIENT1 $DIR/$tfile)
+ tp_post=$(chk_get_version $CLIENT1 $DIR/$tdir)
+ if (($pre == $post)); then
+ error "version of source not changed: pre $pre, post $post"
+ fi
+ if (($tp_pre != $tp_post)); then
+ error "version of target parent was changed:"\
+ "pre $tp_pre, post $tp_post"
+ fi
- local sp_pre
- local tp_pre
- local sp_post
- local tp_post
-
- do_node $CLIENT1 mcreate $DIR/$tfile
- do_node $CLIENT1 mkdir -p $DIR/$tdir
- sp_pre=$(get_version $CLIENT1 $DIR)
- tp_pre=$(get_version $CLIENT1 $DIR/$tdir)
- do_node $CLIENT1 mv $DIR/$tfile $DIR/$tdir/$tfile
- sp_post=$(get_version $CLIENT1 $DIR)
- tp_post=$(get_version $CLIENT1 $DIR/$tdir)
- if (($sp_pre != $sp_post)); then
- error "version of source parent was changed: pre $sp_pre, post $sp_post"
- fi
- if (($tp_pre != $tp_post)); then
- error "version of target parent was changed: pre $tp_pre, post $tp_post"
- fi
+ local sp_pre
+ local tp_pre
+ local sp_post
+ local tp_post
+
+ do_node $CLIENT1 mcreate $DIR/$tfile
+ do_node $CLIENT1 mkdir -p $DIR/$tdir
+ sp_pre=$(chk_get_version $CLIENT1 $DIR)
+ tp_pre=$(chk_get_version $CLIENT1 $DIR/$tdir)
+ do_node $CLIENT1 mv $DIR/$tfile $DIR/$tdir/$tfile
+ sp_post=$(chk_get_version $CLIENT1 $DIR)
+ tp_post=$(chk_get_version $CLIENT1 $DIR/$tdir)
+ if (($sp_pre != $sp_post)); then
+ error "version of source parent was changed:" \
+ "pre $sp_pre, post $sp_post"
+ fi
+ if (($tp_pre != $tp_post)); then
+ error "version of target parent was changed:" \
+ "pre $tp_pre, post $tp_post"
+ fi
- local pre
- local post
-
- do_node $CLIENT1 mcreate $DIR/$tfile
- pre=$(get_version $CLIENT1 $DIR)
- do_node $CLIENT1 mv $DIR/$tfile $DIR/$tfile-new
- post=$(get_version $CLIENT1 $DIR)
- if (($pre != $post)); then
- error "version of parent was changed: pre $pre, post $post"
- fi
+ local pre
+ local post
+
+ do_node $CLIENT1 mcreate $DIR/$tfile
+ pre=$(chk_get_version $CLIENT1 $DIR)
+ do_node $CLIENT1 mv $DIR/$tfile $DIR/$tfile-new
+ post=$(chk_get_version $CLIENT1 $DIR)
+ if (($pre != $post)); then
+ error "version of parent was changed: pre $pre, post $post"
+ fi
- first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
- lost="mkdir $MOUNT2/$tdir/$tfile-0;rmdir $MOUNT2/$tdir/$tfile-0"
- last="createmany -o $DIR/$tdir/$tfile- 1"
- test_7_cycle "$first" "$lost" "$last" && error "Test 7g.1 failed"
-
- first="createmany -o $DIR/$tdir/$tfile- 2; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
- lost="createmany -o $MOUNT2/$tdir/$tfile- 1; rm $MOUNT2/$tdir/$tfile-0"
- last="mkdir $DIR/$tdir/$tfile-0"
- test_7_cycle "$first" "$lost" "$last" && error "Test 7g.2 failed"
-
- first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
- lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
- last="link $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
- test_7_cycle "$first" "$lost" "$last" || error "Test 7g.3 failed"
+ first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
+ lost="mkdir $MOUNT2/$tdir/$tfile-0;rmdir $MOUNT2/$tdir/$tfile-0"
+ last="createmany -o $DIR/$tdir/$tfile- 1"
+ test_7_cycle "$first" "$lost" "$last" && error "Test 7g.1 failed"
+
+ first="createmany -o $DIR/$tdir/$tfile- 2; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
+ lost="createmany -o $MOUNT2/$tdir/$tfile- 1; rm $MOUNT2/$tdir/$tfile-0"
+ last="mkdir $DIR/$tdir/$tfile-0"
+ test_7_cycle "$first" "$lost" "$last" && error "Test 7g.2 failed"
+
+ first="createmany -o $DIR/$tdir/$tfile- 1; mv $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile"
+ lost="createmany -o $MOUNT2/$tdir/$tfile- 1"
+ last="link $DIR/$tdir/$tfile-0 $DIR/$tdir/$tfile-1"
+ if [ "$MDS1_VERSION" -lt $(version_code 2.5.1) ]; then
+ test_7_cycle "$first" "$lost" "$last" ||
+ error "Test 7g.3 failed"
+ else #LU-4442 LU-3528
+ test_7_cycle "$first" "$lost" "$last" &&
+ error "Test 7g.3 failed"
+ fi
- local pre
- local post
- local var=${SINGLEMDS}_svc
-
- [ -n "$CLIENTS" ] || { skip "Need two or more clients" && exit 0; }
- [ $CLIENTCOUNT -ge 2 ] || \
- { skip "Need two or more clients, have $CLIENTCOUNT" && exit 0; }
-
- do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
- do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
-
- zconf_mount $CLIENT1 $MOUNT
- zconf_mount $CLIENT2 $MOUNT1
- zconf_mount $CLIENT2 $MOUNT2
- do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile-a
- do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile-b
-
- #
- # Save an MDT transaction number before recovery.
- #
- do_node $CLIENT1 touch $DIR1/$tfile
- pre=$(get_version $CLIENT1 $DIR/$tfile)
-
- #
- # Comments on the replay sequence state the expected result
- # of each request.
- #
- # "R" Replayed.
- # "U" Unable to replay.
- # "J" Rejected.
- #
- replay_barrier $SINGLEMDS
- do_node $CLIENT1 chmod 666 $DIR/$tfile-a # R
- do_node $CLIENT2 chmod 666 $DIR1/$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
-
- client_evicted $CLIENT1 || error "$CLIENT1:$MOUNT not evicted"
- client_up $CLIENT2 || error "$CLIENT2:$MOUNT1 evicted"
-
- #
- # Check the MDT epoch. $post must be the first transaction
- # number assigned after recovery.
- #
- do_node $CLIENT2 chmod 666 $DIR1/$tfile
- post=$(get_version $CLIENT2 $DIR1/$tfile)
- if (($(($pre >> 32)) == $((post >> 32)))); then
- error "epoch not changed: pre $pre, post $post"
- fi
+ local pre
+ local post
+ local var=${SINGLEMDS}_svc
+
+ [ -n "$CLIENTS" ] || { skip "Need two or more clients" && exit 0; }
+ [ $CLIENTCOUNT -ge 2 ] || \
+ { skip "Need two or more clients, have $CLIENTCOUNT" && \
+ exit 0; }
+
+ do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
+ do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
+
+ zconf_mount $CLIENT1 $MOUNT
+ zconf_mount $CLIENT2 $MOUNT1
+ zconf_mount $CLIENT2 $MOUNT2
+ do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile-a
+ do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile-b
+
+ #
+ # Save an MDT transaction number before recovery.
+ #
+ do_node $CLIENT1 touch $DIR1/$tfile
+ pre=$(chk_get_version $CLIENT1 $DIR/$tfile)
+
+ #
+ # Comments on the replay sequence state the expected result
+ # of each request.
+ #
+ # "R" Replayed.
+ # "U" Unable to replay.
+ # "J" Rejected.
+ #
+ replay_barrier $SINGLEMDS
+ do_node $CLIENT1 chmod 666 $DIR/$tfile-a # R
+ do_node $CLIENT2 chmod 666 $DIR1/$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
+
+ client_evicted $CLIENT1 || error "$CLIENT1:$MOUNT not evicted"
+ client_up $CLIENT2 || error "$CLIENT2:$MOUNT1 evicted"
+
+ #
+ # Check the MDT epoch. $post must be the first transaction
+ # number assigned after recovery.
+ #
+ do_node $CLIENT2 chmod 666 $DIR1/$tfile
+ post=$(chk_get_version $CLIENT2 $DIR1/$tfile)
+ if (($(($pre >> 32)) == $((post >> 32)))); then
+ error "epoch not changed: pre $pre, post $post"
+ fi
+test_13() { # LU-8826
+ local var=${SINGLEMDS}_svc
+
+ if combined_mgs_mds ; then
+ skip "Needs separate MGS to enable IR"
+ return 0
+ fi
+
+ do_facet $SINGLEMDS "$LCTL set_param mdd.${!var}.sync_permission=0"
+ do_facet $SINGLEMDS "$LCTL set_param mdt.${!var}.commit_on_sharing=0"
+
+ zconf_mount $CLIENT2 $MOUNT2
+ do_node $CLIENT1 openfile -f O_RDWR:O_CREAT -m 0644 $DIR/$tfile
+
+ # set ir_timeout to a reasonable small value
+ local ir_timeout=$(do_facet mgs $LCTL get_param -n mgs.*.ir_timeout)
+ do_facet mgs $LCTL set_param mgs.*.ir_timeout=5
+ # make sure IR functional
+ sleep 5
+
+ replay_barrier $SINGLEMDS
+ do_node $CLIENT1 chmod 666 $DIR/$tfile
+ do_node $CLIENT2 chmod 777 $DIR2/$tfile
+
+ # make sure client data of $CLIENT2:$MOUNT2 is remained
+ # define OBD_FAIL_TGT_CLIENT_DEL 0x718
+ do_facet $SINGLEMDS $LCTL set_param fail_loc=0x718
+ zconf_umount $CLIENT2 $MOUNT2
+ # define OBD_FAIL_TGT_SLUGGISH_NET 0x719
+ do_facet $SINGLEMDS $LCTL set_param fail_loc=0x719
+ facet_failover $SINGLEMDS
+
+ client_up $CLIENT1 || error "$CLIENT1 evicted"
+
+ do_facet $SINGLEMDS $LCTL set_param fail_loc=0
+ do_facet mgs $LCTL set_param mgs.*.ir_timeout=$ir_timeout
+
+ do_node $CLIENT1 $CHECKSTAT -p 0666 $DIR/$tfile ||
+ error "$DIR/$tfile-a: unexpected state"
+}
+run_test 13 "Shouldn't give up VBR easily on sluggish network"
+