Whamcloud - gitweb
don't lose wakeups for imp_recovery_waitq
authorshadow <shadow>
Wed, 28 Jan 2009 09:12:00 +0000 (09:12 +0000)
committershadow <shadow>
Wed, 28 Jan 2009 09:12:00 +0000 (09:12 +0000)
Branch b1_8
b=18154
i=nathan
i=rread

lustre/ChangeLog
lustre/ptlrpc/client.c
lustre/ptlrpc/import.c

index 0f71ef1..b1ea7a7 100644 (file)
@@ -126,6 +126,14 @@ Details    : MSG_CONNECT_INITIAL is not set on the initial MDS->OST connect.
 
 Severity   : normal
 Frequency  : rare
+Bugzilla   : 18154
+Descriptoin: don't lose wakeup for imp_recovery_waitq
+Details    : recover_import_no_retry or invalidate_import and import_close can
+             both sleep on imp_recovery_waitq, but we was send only one wakeup
+             to sleep queue.
+
+Severity   : normal
+Frequency  : rare
 Bugzilla   : 18238
 Descriptoin: panic in mds_open
 Details    : don't confuse mds_finish_transno() with PTR_ERR(-ENOENT)
index 1e77223..54bceb2 100644 (file)
@@ -1329,7 +1329,7 @@ int ptlrpc_check_set(struct ptlrpc_request_set *set)
                 spin_unlock(&imp->imp_lock);
 
                 set->set_remaining--;
-                cfs_waitq_signal(&imp->imp_recovery_waitq);
+                cfs_waitq_broadcast(&imp->imp_recovery_waitq);
         }
 
         /* If we hit an error, we want to recover promptly. */
@@ -2135,7 +2135,7 @@ restart:
 
         LASSERT(!req->rq_receiving_reply);
         ptlrpc_rqphase_move(req, RQ_PHASE_INTERPRET);
-        cfs_waitq_signal(&imp->imp_recovery_waitq);
+        cfs_waitq_broadcast(&imp->imp_recovery_waitq);
         RETURN(rc);
 }
 
index 07427e7..bb9a38d 100644 (file)
@@ -353,7 +353,7 @@ out:
         obd_import_event(imp->imp_obd, imp, IMP_EVENT_INVALIDATE);
 
         atomic_dec(&imp->imp_inval_count);
-        cfs_waitq_signal(&imp->imp_recovery_waitq);
+        cfs_waitq_broadcast(&imp->imp_recovery_waitq);
 }
 
 /* unset imp_invalid */
@@ -1124,7 +1124,7 @@ finish:
         imp->imp_last_recon = 0;
         spin_unlock(&imp->imp_lock);
 
-        cfs_waitq_signal(&imp->imp_recovery_waitq);
+        cfs_waitq_broadcast(&imp->imp_recovery_waitq);
         RETURN(rc);
 }
 
@@ -1313,7 +1313,7 @@ int ptlrpc_import_recovery_state_machine(struct obd_import *imp)
         }
 
         if (imp->imp_state == LUSTRE_IMP_FULL) {
-                cfs_waitq_signal(&imp->imp_recovery_waitq);
+                cfs_waitq_broadcast(&imp->imp_recovery_waitq);
                 ptlrpc_wake_delayed(imp);
         }