From: shadow Date: Wed, 28 Jan 2009 09:09:30 +0000 (+0000) Subject: don't lose wakeup for imp_recovery_waitq X-Git-Tag: v1_7_160~6 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=57e5b0df2893964d4fe068c5a3e3313ec6226314;p=fs%2Flustre-release.git don't lose wakeup for imp_recovery_waitq Branch b_release_1_8_0 b=18154 i=nathan i=rread --- diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 5aab52f..6daa692 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -45,6 +45,14 @@ 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 c55e67a..ceb8b34 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 5134689..bac165b 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 */ @@ -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); }