From 2316f3f4590bf952ee3881a043c3292d847b220c Mon Sep 17 00:00:00 2001 From: shadow Date: Wed, 28 Jan 2009 09:12:00 +0000 Subject: [PATCH] don't lose wakeups for imp_recovery_waitq Branch b1_8 b=18154 i=nathan i=rread --- lustre/ChangeLog | 8 ++++++++ lustre/ptlrpc/client.c | 4 ++-- lustre/ptlrpc/import.c | 6 +++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 0f71ef1..b1ea7a7 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -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) diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c index 1e772239..54bceb2 100644 --- a/lustre/ptlrpc/client.c +++ b/lustre/ptlrpc/client.c @@ -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); } diff --git a/lustre/ptlrpc/import.c b/lustre/ptlrpc/import.c index 07427e7..bb9a38d 100644 --- a/lustre/ptlrpc/import.c +++ b/lustre/ptlrpc/import.c @@ -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); } -- 1.8.3.1