From 855bae73d2ffc66cacd5ecd86a0b3a239cacce56 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 26 Mar 2010 14:12:42 -0700 Subject: [PATCH] mds: make rdlock waiter wait on STABLE | RD, not just RD, when lock is unstable --- src/mds/Locker.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index ce07e3b987991..35fa35025648b 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -722,7 +722,8 @@ bool Locker::rdlock_try(SimpleLock *lock, client_t client, Context *con) // wait! dout(7) << "rdlock_try waiting on " << *lock << " on " << *lock->get_parent() << dendl; - if (con) lock->add_waiter(SimpleLock::WAIT_RD, con); + if (con) + lock->add_waiter(SimpleLock::WAIT_STABLE|SimpleLock::WAIT_RD, con); return false; } @@ -754,7 +755,7 @@ bool Locker::rdlock_start(SimpleLock *lock, MDRequest *mut) // wait! int wait_on; - if (lock->get_parent()->is_auth()) + if (lock->get_parent()->is_auth() && lock->is_stable()) wait_on = SimpleLock::WAIT_RD; else wait_on = SimpleLock::WAIT_STABLE; // REQRDLOCK is ignored if lock is unstable, so we need to retry. -- 2.39.5