[ "$SLOW" = "no" ] && EXCEPT_SLOW="17 26a 26b 50 51 57"
[ $(facet_fstype $SINGLEMDS) = "zfs" ] &&
-# bug number for skipped test: LU-2194 LU-2547
- ALWAYS_EXCEPT="$ALWAYS_EXCEPT 19b 24a 24b"
+# bug number for skipped test: LU-2547
+ ALWAYS_EXCEPT="$ALWAYS_EXCEPT 24a 24b"
build_test_filter
run_test 9 "pause bulk on OST (bug 1420)"
#bug 1521
-test_10() {
- do_facet client mcreate $DIR/$tfile ||
- { error "mcreate failed: $?"; return 1; }
- drop_bl_callback "chmod 0777 $DIR/$tfile" || echo "evicted as expected"
- # wait for the mds to evict the client
- #echo "sleep $(($TIMEOUT*2))"
- #sleep $(($TIMEOUT*2))
- do_facet client touch $DIR/$tfile || echo "touch failed, evicted"
- do_facet client checkstat -v -p 0777 $DIR/$tfile ||
- { error "client checkstat failed: $?"; return 3; }
- do_facet client "munlink $DIR/$tfile"
- # allow recovery to complete
- client_up || client_up || sleep $TIMEOUT
+test_10a() {
+ local before=$(date +%s)
+ local evict
+
+ do_facet client "stat $DIR > /dev/null" ||
+ error "failed to stat $DIR: $?"
+ drop_bl_callback "chmod 0777 $DIR" ||
+ error "failed to chmod $DIR: $?"
+
+ # let the client reconnect
+ client_reconnect
+ evict=$(do_facet client $LCTL get_param mdc.$FSNAME-MDT*.state |
+ awk -F"[ [,]" '/EVICTED ]$/ { if (mx<$5) {mx=$5;} } END { print mx }')
+ [ ! -z "$evict" ] && [[ $evict -gt $before ]] ||
+ (do_facet client $LCTL get_param mdc.$FSNAME-MDT*.state;
+ error "no eviction: $evict before:$before")
+
+ do_facet client checkstat -v -p 0777 $DIR ||
+ error "client checkstat failed: $?"
+}
+run_test 10a "finish request on server after client eviction (bug 1521)"
+
+test_10b() {
+ local before=$(date +%s)
+ local evict
+
+ [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.6.53) ]] &&
+ skip "Need MDS version at least 2.6.53" && return
+ do_facet client "stat $DIR > /dev/null" ||
+ error "failed to stat $DIR: $?"
+ drop_bl_callback_once "chmod 0777 $DIR" ||
+ error "failed to chmod $DIR: $?"
+
+ # let the client reconnect
+ client_reconnect
+ evict=$(do_facet client $LCTL get_param mdc.$FSNAME-MDT*.state |
+ awk -F"[ [,]" '/EVICTED ]$/ { if (mx<$5) {mx=$5;} } END { print mx }')
+
+ [ -z "$evict" ] || [[ $evict -le $before ]] ||
+ (do_facet client $LCTL get_param mdc.$FSNAME-MDT*.state;
+ error "eviction happened: $evict before:$before")
+
+ do_facet client checkstat -v -p 0777 $DIR ||
+ error "client checkstat failed: $?"
}
-run_test 10 "finish request on server after client eviction (bug 1521)"
+run_test 10b "re-send BL AST"
+
+test_10d() {
+ local before=$(date +%s)
+ local evict
+
+ [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.6.90) ]] &&
+ skip "Need MDS version at least 2.6.90" && return
+
+ # sleep 1 is to make sure that BEFORE is not equal to EVICTED below
+ sleep 1
+ rm -f $TMP/$tfile
+ echo -n ", world" | dd of=$TMP/$tfile bs=1c seek=5
+
+ mount_client $MOUNT2
+
+ $LFS setstripe -i 0 -c 1 $DIR1/$tfile
+ echo -n hello > $DIR1/$tfile
+
+ stat $DIR2/$tfile >& /dev/null
+ $LCTL set_param fail_err=71
+ drop_bl_callback_once "echo -n \\\", world\\\" >> $DIR2/$tfile"
+
+ client_reconnect
+
+ cmp $DIR1/$tfile $DIR2/$tfile || error "file contents differ"
+ cmp $DIR1/$tfile $TMP/$tfile || error "wrong content found"
+
+ evict=$(do_facet client $LCTL get_param osc.$FSNAME-OST0000*.state | \
+ tr -d '\-\[\] ' | \
+ awk -F"[ [,]" '/EVICTED$/ { if (mx<$1) {mx=$1;} } END { print mx }')
+
+ [[ $evict -gt $before ]] ||
+ (do_facet client $LCTL get_param osc.$FSNAME-OST0000*.state;
+ error "no eviction: $evict before:$before")
+
+ rm $TMP/$tfile
+ umount_client $MOUNT2
+}
+run_test 10d "test failed blocking ast"
#bug 2460
# wake up a thread waiting for completion after eviction
do_facet client $MULTIOP $DIR/$tfile or ||
{ error "multiop read failed: $?"; return 3; }
- drop_bl_callback $MULTIOP $DIR/$tfile Ow || echo "evicted as expected"
+ drop_bl_callback_once $MULTIOP $DIR/$tfile Ow ||
+ echo "evicted as expected"
do_facet client munlink $DIR/$tfile ||
{ error "munlink failed: $?"; return 4; }
# let the client reconnect
sleep 5
EVICT=$(do_facet client $LCTL get_param mdc.$FSNAME-MDT*.state |
- awk -F"[ [,]" '/EVICTED]$/ { if (mx<$4) {mx=$4;} } END { print mx }')
+ awk -F"[ [,]" '/EVICTED ]$/ { if (mx<$5) {mx=$5;} } END { print mx }')
[ -z "$EVICT" ] || [[ $EVICT -le $BEFORE ]] || error "eviction happened"
}
test_28() { # bug 6086 - error adding new clients
do_facet client mcreate $DIR/$tfile || return 1
- drop_bl_callback "chmod 0777 $DIR/$tfile" ||echo "evicted as expected"
+ drop_bl_callback_once "chmod 0777 $DIR/$tfile" ||
+ echo "evicted as expected"
#define OBD_FAIL_MDS_CLIENT_ADD 0x12f
do_facet $SINGLEMDS "lctl set_param fail_loc=0x8000012f"
# fail once (evicted), reconnect fail (fail_loc), ok
pid=$!
sleep 1
lctl set_param fail_loc=0
- drop_bl_callback rm -f $DIR/$tfile
+ drop_bl_callback_once rm -f $DIR/$tfile
wait $pid
# the first 'df' could tigger the eviction caused by
- # 'drop_bl_callback', and it's normal case.
+ # 'drop_bl_callback_once', and it's normal case.
# but the next 'df' should return successfully.
do_facet client "df $DIR" || do_facet client "df $DIR"
}
# get one of the clients from client list
local rcli=$(echo $RCLIENTS |cut -d' ' -f 1)
- local old_MOUNTOPT=$MOUNTOPT
- MOUNTOPT=${MOUNTOPT},noir
+ local mount_opts=${MOUNT_OPTS:+$MOUNT_OPTS,}noir
zconf_umount $rcli $MOUNT || error "umount failed"
- zconf_mount $rcli $MOUNT || error "mount failed"
+ zconf_mount $rcli $MOUNT $mount_opts || error "mount failed"
# make sure lustre mount at $rcli disabling IR
local ir_state=$(check_cli_ir_state $rcli)
[ $ir_state = "DISABLED" -o $ir_state = "OFF" ] ||
error "IR status on ost1 should be DISABLED"
- # restore it
- MOUNTOPT=$old_MOUNTOPT
+ # remount with the default MOUNT_OPTS
zconf_umount $rcli $MOUNT || error "umount failed"
zconf_mount $rcli $MOUNT || error "mount failed"
# let the client reconnect
client_reconnect
EVICT=$($LCTL get_param mdc.$FSNAME-MDT*.state |
- awk -F"[ [,]" '/EVICTED]$/ { if (mx<$4) {mx=$4;} } END { print mx }')
+ awk -F"[ [,]" '/EVICTED ]$/ { if (mx<$5) {mx=$5;} } END { print mx }')
[ -z "$EVICT" ] || [[ $EVICT -le $BEFORE ]] || error "eviction happened"
}