set -e
# bug 5494 5493
-ALWAYS_EXCEPT="24 52 $RECOVERY_SMALL_EXCEPT"
+ALWAYS_EXCEPT="24 52 $RECOVERY_SMALL_EXCEPT"
export MULTIOP=${MULTIOP:-multiop}
PTLDEBUG=${PTLDEBUG:--1}
lctl set_param fail_loc=0
drop_bl_callback rm -f $DIR/$tfile
wait $pid
- do_facet client "df $DIR"
+ # the first 'df' could tigger the eviction caused by
+ # 'drop_bl_callback', and it's normal case.
+ # but the next 'df' should return successfully.
+ do_facet client "df $DIR" || do_facet client "df $DIR"
}
run_test 58 "Eviction in the middle of open RPC reply processing"
st=$(do_facet $target "lctl get_param -n $recovery_proc |
awk '/IR:/{ print \\\$2}'")
- [ $st != ON -o $st != OFF ] ||
- error "Error state $st, must be ON or OFF"
+ [ $st != ON -o $st != OFF -o $st != ENABLED -o $st != DISABLED ] ||
+ error "Error state $st, must be ENABLED or DISABLED"
echo -n $st
}
# 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 state must be DISABLED at $rcli"
+ [ $ir_state = "DISABLED" -o $ir_state = "OFF" ] ||
+ error "IR state must be DISABLED at $rcli"
# Since the client just mounted, its last_rcvd entry is not on disk.
# Send an RPC so exp_need_sync forces last_rcvd to commit this export
}
run_test 105 "IR: NON IR clients support"
+cleanup_106() {
+ trap 0
+ umount_client $DIR2
+}
+
+test_106() { # LU-1789
+#define OBD_FAIL_MDC_LIGHTWEIGHT 0x805
+ $LCTL set_param fail_loc=0x805
+
+ trap cleanup_106 EXIT
+
+ # enable lightweight flag on mdc connection
+ mount_client $DIR2
+
+ local MDS_NEXP=$(do_facet $SINGLEMDS \
+ lctl get_param -n mdt.${mds1_svc}.num_exports |
+ cut -d' ' -f2)
+ $LCTL set_param fail_loc=0
+
+ touch $DIR2/$tfile || error "failed to create empty file"
+ replay_barrier $SINGLEMDS
+ facet_failover $SINGLEMDS
+
+ # lightweight connection must be evicted
+ touch -c $DIR2/$tfile || true
+ evicted=`dmesg | awk '/test 106/ {start = 1;}
+ /This client was evicted by .*MDT0000/ {
+ if (start) {
+ print;
+ }
+ }'`
+ [ -z "$evicted" ] && error "lightweight client not evicted by mds"
+
+ # and all operations performed by lightweight client should be
+ # synchronous, so the file created before mds restart should be there
+ $CHECKSTAT -t file $DIR/$tfile || error "file not present"
+ rm -f $DIR/$tfile
+
+ cleanup_106
+}
+run_test 106 "lightweight connection support"
+
complete $(basename $0) $SECONDS
check_and_cleanup_lustre
exit_status