From 666e7852a8dc6df7873ed60a07d2eeec16e5596d Mon Sep 17 00:00:00 2001 From: shadow Date: Wed, 28 Jan 2009 09:20:21 +0000 Subject: [PATCH] don't lose wakeup fro imp_recovery_waitq Branch HEAD 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 b8a9007..5db2ee0 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -14,6 +14,14 @@ tbd Sun Microsystems, Inc. * File join has been disabled in this release, refer to Bugzilla 16929. 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 : always with long access acl Bugzilla : 17636 Descriptoin: mds can't pack reply with long acl. diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c index 75f365a..1188d41 100644 --- a/lustre/ptlrpc/client.c +++ b/lustre/ptlrpc/client.c @@ -1427,7 +1427,7 @@ int ptlrpc_check_set(const struct lu_env *env, 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. */ @@ -2299,7 +2299,7 @@ after_send: 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 70576f2..573f7a3 100644 --- a/lustre/ptlrpc/import.c +++ b/lustre/ptlrpc/import.c @@ -362,7 +362,7 @@ out: sptlrpc_import_flush_all_ctx(imp); atomic_dec(&imp->imp_inval_count); - cfs_waitq_signal(&imp->imp_recovery_waitq); + cfs_waitq_broadcast(&imp->imp_recovery_waitq); } /* unset imp_invalid */ @@ -1157,7 +1157,7 @@ out: 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); } @@ -1337,7 +1337,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