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

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

index 5aab52f..6daa692 100644 (file)
 
 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 c55e67a..ceb8b34 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 5134689..bac165b 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 */
@@ -1120,7 +1120,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);
 }
 
@@ -1309,7 +1309,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);
         }