init_test_env $@
. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
+init_logging
[ "$SLOW" = "no" ] && EXCEPT_SLOW=""
-[ -n "$CLIENTS" ] || { skip "Need two or more clients" && exit 0; }
+[ -n "$CLIENTS" ] || { skip_env "Need two or more clients" && exit 0; }
[ $CLIENTCOUNT -ge 2 ] || \
- { skip "Need two or more clients, have $CLIENTCOUNT" && exit 0; }
+ { skip_env "Need two or more clients, have $CLIENTCOUNT" && exit 0; }
remote_mds_nodsh && skip "remote MDS with nodsh" && exit 0
[ ! "$NAME" = "ncli" ] && ALWAYS_EXCEPT="$ALWAYS_EXCEPT"
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
if ! do_node $CLIENT1 $CHECKSTAT -a $DIR/$tdir/$tfile; then
error "open succeeded unexpectedly"
fi
rmultiop_start $CLIENT1 $DIR/$tdir/$tfile o_c
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
+ client_up $CLIENT1 || error "$CLIENT1 evicted"
- do_node $CLIENT1 df $MOUNT || error "$CLIENT1 evicted"
rmultiop_stop $CLIENT1 || error "close failed"
zconf_mount $CLIENT2 $MOUNT
}
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
if ! do_node $CLIENT1 $CHECKSTAT -a $DIR/$tdir/$tfile; then
error "create succeeded unexpectedly"
fi
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
if do_node $CLIENT1 $CHECKSTAT -a $DIR/$tdir/$tfile; then
error "unlink succeeded unexpectedly"
fi
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
if ! do_node $CLIENT1 $CHECKSTAT -u \\\#$UID $file; then
error "setattr of UID succeeded unexpectedly"
fi
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
if ! do_node $CLIENT1 $CHECKSTAT -g \\\#$UID $file; then
error "setattr of GID succeeded unexpectedly"
fi
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
if ! do_node $CLIENT1 $CHECKSTAT -p 0644 $file; then
error "setattr of permission succeeded unexpectedly"
fi
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
checkattr $CLIENT1 i $file
rc=$?
do_node $CLIENT1 chattr -i $file
sleep 1
mtime_pre=$(do_node $CLIENT1 stat --format=%Y $file)
do_node $CLIENT1 touch $file
+ sleep 1 # avoid stat caching
mtime_post=$(do_node $CLIENT1 stat --format=%Y $file)
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT || error "$CLIENT1 evicted"
+ client_up $CLIENT1 || error "$CLIENT1 evicted"
if (($mtime_pre >= $mtime_post)); then
error "time not changed: pre $mtime_pre, post $mtime_post"
fi
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
if ! do_node $CLIENT1 $CHECKSTAT -a $DIR/$tdir/$tfile; then
error "link should fail"
fi
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
if ! do_node $CLIENT1 $CHECKSTAT -a $DIR/$tdir/$tfile; then
error "link should fail"
fi
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
if do_node $CLIENT1 $CHECKSTAT -a $DIR/$tfile; then
error "rename should fail"
fi
zconf_umount $CLIENT2 $MOUNT
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1 not evicted"
+ client_evicted $CLIENT1 || error "$CLIENT1 not evicted"
if do_node $CLIENT1 $CHECKSTAT -a $DIR/$tfile; then
error "rename should fail"
fi
facet_failover $SINGLEMDS
# recovery shouldn't fail due to missing client 2
- do_node $CLIENT1 df $DIR || return 1
+ client_up $CLIENT1 || return 1
# All 50 files should have been replayed
do_node $CLIENT1 unlinkmany $DIR/$tfile- 25 || return 2
facet_failover $SINGLEMDS
# recovery shouldn't fail due to missing client 2
- do_node $CLIENT1 df $DIR || return 1
+ client_up $CLIENT1 || return 1
# All 50 files should have been replayed
do_node $CLIENT1 unlinkmany $DIR/$tfile- 25 || return 2
zconf_umount $CLIENT2 $MOUNT2
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $MOUNT && error "$CLIENT1:$MOUNT not evicted"
- do_node $CLIENT2 df $MOUNT1 || error "$CLIENT2:$MOUNT1 evicted"
+ 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
facet_failover $SINGLEMDS
# recovery shouldn't fail due to missing client 2
- do_node $CLIENT1 df $DIR || return 1
+ client_up $CLIENT1 || return 1
do_node $CLIENT1 $CHECKSTAT $DIR/$tfile && return 2
zconf_mount $CLIENT2 $DIR || error "mount $CLIENT2 $DIR fail"
facet_failover $SINGLEMDS
# recovery should fail due to missing client 2
- do_node $CLIENT1 df $DIR && return 1
+ client_evicted $CLIENT1 || return 1
do_node $CLIENT1 $CHECKSTAT -p 0755 $DIR/$tfile && return 2
zconf_mount $CLIENT2 $DIR || error "mount $CLIENT2 $DIR fail"
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
vbr_deactivate_client $CLIENT2
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR || return 1
+ client_up $CLIENT1 || return 1
# All 50 files should have been replayed
do_node $CLIENT1 unlinkmany $DIR/$tfile- 25 || return 2
do_node $CLIENT1 unlinkmany $DIR/$tfile-3- 25 || return 3
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR || return 4
+ client_up $CLIENT2 || return 4
# All 25 files from client2 should have been replayed
do_node $CLIENT2 unlinkmany $DIR/$tdir/$tfile-2- 25 || return 5
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
vbr_deactivate_client $CLIENT2
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR || return 1
+ client_up $CLIENT1 || return 1
# create another set of files
do_node $CLIENT1 createmany -o $DIR/$tfile-3- 25
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR || return 2
+ client_up $CLIENT2 || return 2
# All files from should have been replayed
do_node $CLIENT1 unlinkmany $DIR/$tfile- 25 || return 3
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
vbr_deactivate_client $CLIENT2
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR || return 1
+ client_up $CLIENT1 || return 1
# create another set of files
do_node $CLIENT1 createmany -m $DIR/$tfile-3- 25
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR || return 2
+ client_up $CLIENT2 || return 2
# All files from should have been replayed
do_node $CLIENT1 unlinkmany $DIR/$tfile- 25 || return 3
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
vbr_deactivate_client $CLIENT2
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR && return 1
+ client_evicted $CLIENT1 || return 1
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR || return 2
+ client_up $CLIENT2 || return 2
# First 25 files should have been replayed
do_node $CLIENT1 unlinkmany $DIR/$tfile- 25 || return 3
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
vbr_deactivate_client $CLIENT2
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR || return 1
+ client_up $CLIENT1 || return 1
do_node $CLIENT1 $CHECKSTAT $DIR/$tfile-2-0 && error "$tfile-2-0 exists"
# create another set of files
do_node $CLIENT1 createmany -o $DIR/$tfile-3- 25
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR && return 4
+ client_evicted $CLIENT2 || return 4
# file from client2 should fail
do_node $CLIENT2 $CHECKSTAT $DIR/$tfile-2-0 && error "$tfile-2-0 exists"
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
do_node $CLIENT2 "sysctl -w lustre.fail_val=5"
#define OBD_FAIL_PTLRPC_REPLAY 0x50e
do_node $CLIENT2 "sysctl -w lustre.fail_loc=0x2000050e"
- do_node $CLIENT2 df $DIR
+ client_up $CLIENT2
# vbr_activate_client $CLIENT2
# need way to know that client stops replays
sleep 5
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR || return 1
+ client_up $CLIENT1 || return 1
# All files should have been replayed
do_node $CLIENT1 unlinkmany $DIR/$tfile- 25 || return 2
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
facet_failover $SINGLEMDS
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR || return 4
+ client_up $CLIENT2 || return 4
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR || return 1
+ client_up $CLIENT1 || return 1
# All files should have been replayed
do_node $CLIENT1 unlinkmany $DIR/$tfile- 25 || return 2
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
vbr_deactivate_client $CLIENT2
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR || return 3
+ client_up $CLIENT1 || return 3
#client1 is back and will try to open orphan
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR || return 4
+ client_up $CLIENT2 || return 4
do_node $CLIENT2 $CHECKSTAT $DIR/$tfile && error "$tfile exists"
zconf_umount_clients $CLIENTS $DIR
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
vbr_deactivate_client $CLIENT2
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR || return 2
+ client_up $CLIENT1 || return 2
#client1 is back and will try to open orphan
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR || return 3
+ client_up $CLIENT2 || return 3
rmultiop_stop $CLIENT2 || return 1
do_node $CLIENT2 $CHECKSTAT $DIR/$tfile && error "$tfile exists"
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
vbr_deactivate_client $CLIENT2
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR || return 3
+ client_up $CLIENT1 || return 3
#client1 is back and will try to open orphan
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR || return 4
+ client_up $CLIENT2 || return 4
do_node $CLIENT2 $CHECKSTAT $DIR/$tfile && error "$tfile exists"
zconf_umount_clients $CLIENTS $DIR
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
remote_server $CLIENT2 || \
- { skip "Client $CLIENT2 is on the server node" && return 0; }
+ { skip_env "Client $CLIENT2 is on the server node" && return 0; }
zconf_mount_clients $CLIENT1 $DIR
zconf_mount_clients $CLIENT2 $DIR
vbr_deactivate_client $CLIENT2
facet_failover $SINGLEMDS
- do_node $CLIENT1 df $DIR || return 6
+ client_up $CLIENT1 || return 6
#client1 is back and will try to open orphan
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR || return 8
+ client_up $CLIENT2 || return 8
do_node $CLIENT2 $CHECKSTAT $DIR/$tfile && error "$tfile exists"
zconf_umount_clients $CLIENTS $DIR
zconf_umount $CLIENT1 $DIR
facet_failover $SINGLEMDS
- do_node $CLIENT2 df $DIR || return 6
+ client_up $CLIENT2 || return 6
do_node $CLIENT2 rm $DIR/$tfile || error "$tfile doesn't exists"
zconf_umount_clients $CLIENTS $DIR
zconf_umount $CLIENT1 $DIR
facet_failover $SINGLEMDS
- do_node $CLIENT2 df $DIR || return 6
+ client_up $CLIENT2 || return 6
do_node $CLIENT2 rm $DIR/$tfile || error "$tfile doesn't exists"
zconf_umount $CLIENT2 $DIR
zconf_umount $CLIENT1 $DIR
facet_failover $SINGLEMDS
- do_node $CLIENT2 df $DIR || return 6
+ client_up $CLIENT2 || return 6
do_node $CLIENT2 rmdir $DIR/$tfile || error "$tfile doesn't exists"
zconf_umount $CLIENT2 $DIR
test_10 () {
delayed_recovery_enabled || { skip "No delayed recovery support"; return 0; }
- [ -z "$DBENCH_LIB" ] && skip "DBENCH_LIB is not set" && return 0
+ [ -z "$DBENCH_LIB" ] && skip_env "DBENCH_LIB is not set" && return 0
zconf_mount_clients $CLIENTS $DIR
sleep $TIMEOUT
vbr_activate_client $CLIENT2
- do_node $CLIENT2 df $DIR || return 4
+ client_up $CLIENT2 || return 4
for CLIENT in ${CLIENTS//,/ }; do
PID=`cat pid.$CLIENT`