mount_mds_client
replay_barrier mds1
umount_mds_client
- local before=$SECONDS
fail mds1
- local after=$SECONDS
- (( $after-$before < $TIMEOUT*2 )) ||
- error "recovery took too long" $((after-bsfore)) $TIMEOUT
+ local recovery=$(do_facet mds1 dmesg |
+ awk -F: '/Recovery over after/ { print $4 }' |
+ cut -d, -f1 | tail -1)
+ (( $recovery < $TIMEOUT*2 )) ||
+ error "recovery took too long $recovery > $((TIMEOUT * 2))"
}
run_test 140b "local mount is excluded from recovery"
+test_141() {
+ local oldc
+ local newc
+
+ [ $PARALLEL == "yes" ] && skip "skip parallel run"
+ combined_mgs_mds || skip "needs combined MGS/MDT"
+ ( local_mode || from_build_tree ) &&
+ skip "cannot run in local mode or from build tree"
+
+ # some get_param have a bug to handle dot in param name
+ do_rpc_nodes $(facet_active_host $SINGLEMDS) cancel_lru_locks MGC
+ oldc=$(do_facet $SINGLEMDS $LCTL get_param -n \
+ 'ldlm.namespaces.MGC*.lock_count')
+ fail $SINGLEMDS
+ do_rpc_nodes $(facet_active_host $SINGLEMDS) cancel_lru_locks MGC
+ newc=$(do_facet $SINGLEMDS $LCTL get_param -n \
+ 'ldlm.namespaces.MGC*.lock_count')
+
+ [ $oldc -eq $newc ] || error "mgc lost locks ($oldc != $newc)"
+ return 0
+}
+run_test 141 "do not lose locks on MGS restart"
+
+test_142() {
+ [ $MDS1_VERSION -lt $(version_code 2.11.56) ] &&
+ skip "Need MDS version at least 2.11.56"
+
+ #define OBD_FAIL_MDS_ORPHAN_DELETE 0x165
+ do_facet mds1 $LCTL set_param fail_loc=0x165
+ $MULTIOP $DIR/$tfile Ouc || error "multiop failed"
+
+ stop mds1
+ start mds1 $(mdsdevname 1) $MDS_MOUNT_OPTS
+
+ wait_update_facet mds1 "pgrep orph_.*-MDD | wc -l" "0" ||
+ error "MDD orphan cleanup thread not quit"
+}
+run_test 142 "orphan name stub can be cleaned up in startup"
+
+test_143() {
+ [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.13.00) ] &&
+ skip "Need MDS version at least 2.13.00"
+ [ $PARALLEL == "yes" ] && skip "skip parallel run"
+
+ local mntpt=$(facet_mntpt $SINGLEMDS)
+ stop mds1
+ mount_fstype $SINGLEMDS || error "mount as fstype $SINGLEMDS failed"
+ do_facet $SINGLEMDS touch $mntpt/PENDING/$tfile
+ unmount_fstype $SINGLEMDS
+ start mds1 $(mdsdevname 1) $MDS_MOUNT_OPTS || error "mds1 start fail"
+
+ wait_recovery_complete $SINGLEMDS || error "MDS recovery not done"
+ wait_update_facet mds1 "pgrep orph_.*-MDD | wc -l" "0" ||
+ error "MDD orphan cleanup thread not quit"
+}
+run_test 143 "orphan cleanup thread shouldn't be blocked even delete failed"
+
complete $SECONDS
check_and_cleanup_lustre
exit_status