From be7f2079bf6832670d8da778075aacb14acfb244 Mon Sep 17 00:00:00 2001
From: johann <johann>
Date: Fri, 2 May 2008 19:18:39 +0000
Subject: [PATCH] Branch b1_6 b=15069 i=rread i=wangdi

Skip the "sleep until imp_inflight == 0" part when invalidating an mgc import
which is already invalid.
---
 lustre/ptlrpc/import.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/lustre/ptlrpc/import.c b/lustre/ptlrpc/import.c
index 69f3d7b81c..e65d1457a0 100644
--- a/lustre/ptlrpc/import.c
+++ b/lustre/ptlrpc/import.c
@@ -199,7 +199,14 @@ void ptlrpc_invalidate_import(struct obd_import *imp)
 
         atomic_inc(&imp->imp_inval_count);
 
-        if (!imp->imp_invalid)
+        /* 
+         * If this is an invalid MGC connection, then don't bother
+         * waiting for imp_inflight to drop to 0.
+         */
+        if (imp->imp_invalid && imp->imp_recon_bk && !imp->imp_obd->obd_no_recov)
+                goto out;
+
+        if (!imp->imp_invalid || imp->imp_obd->obd_no_recov)
                 ptlrpc_deactivate_import(imp);
 
         LASSERT(imp->imp_invalid);
@@ -230,8 +237,9 @@ void ptlrpc_invalidate_import(struct obd_import *imp)
                 LASSERT(atomic_read(&imp->imp_inflight) == 0);
         }
 
+  out:
         obd_import_event(imp->imp_obd, imp, IMP_EVENT_INVALIDATE);
-
+        
         atomic_dec(&imp->imp_inval_count);
         cfs_waitq_signal(&imp->imp_recovery_waitq);
 }
-- 
GitLab