Whamcloud - gitweb
LU-13449 tgt: fix recovery timer comparisons
[fs/lustre-release.git] / lustre / tests / recovery-small.sh
index 0b9285f..6ce8a57 100755 (executable)
@@ -2970,14 +2970,72 @@ test_140b() {
        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