From 94ea226ccaf30346f5068a156944944571e42ecb Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 11 May 2009 11:34:37 -0700 Subject: [PATCH] mds: fix loner drops This was broken way back by commit 0c3becdf. Only drop loner in eval(). --- src/mds/CInode.h | 1 - src/mds/Locker.cc | 37 ++++--------------------------------- 2 files changed, 4 insertions(+), 34 deletions(-) diff --git a/src/mds/CInode.h b/src/mds/CInode.h index 035cf3cfa4f95..71e3d2f55f58d 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -595,7 +595,6 @@ public: n++; } return false; - } int get_loner() { return loner_cap; diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index ad50fbd6da35a..439512991c966 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -523,9 +523,6 @@ void Locker::eval_gather(SimpleLock *lock, bool first, bool *need_issue) lock->is_stable()) lock->get_parent()->auth_unpin(lock); - if (caps) - in->try_drop_loner(); - lock->finish_waiters(SimpleLock::WAIT_STABLE|SimpleLock::WAIT_WR|SimpleLock::WAIT_RD|SimpleLock::WAIT_XLOCK); if (caps) { @@ -572,9 +569,10 @@ bool Locker::eval(CInode *in, int mask) eval_any(&in->nestlock, &need_issue); // drop loner? - if (in->is_auth() && in->get_loner() >= 0) { - if (in->multiple_nonstale_caps() && - in->try_drop_loner()) { + if (in->is_auth() && in->get_loner() >= 0 && + in->multiple_nonstale_caps()) { + dout(10) << " trying to drop loner" << dendl; + if (in->try_drop_loner()) { dout(10) << " dropped loner" << dendl; need_issue = true; } @@ -2411,16 +2409,6 @@ void Locker::simple_eval(SimpleLock *lock, bool *need_issue) dout(7) << "simple_eval stable, syncing " << *lock << " on " << *lock->get_parent() << dendl; simple_sync(lock, need_issue); - - // drop loner? - if (in && in->get_loner() >= 0) { - if (in->multiple_nonstale_caps() && - in->try_drop_loner()) { - dout(10) << " dropped loner" << dendl; - if (need_issue) - *need_issue = true; - } - } } } @@ -2489,8 +2477,6 @@ bool Locker::simple_sync(SimpleLock *lock, bool *need_issue) lock->encode_locked_state(data); send_lock_message(lock, LOCK_AC_SYNC, data); } - if (in) - in->try_drop_loner(); lock->set_state(LOCK_SYNC); lock->finish_waiters(SimpleLock::WAIT_RD|SimpleLock::WAIT_STABLE); return true; @@ -2603,8 +2589,6 @@ void Locker::simple_lock(SimpleLock *lock, bool *need_issue) if (gather) { lock->get_parent()->auth_pin(lock); } else { - if (in) - in->try_drop_loner(); lock->set_state(LOCK_LOCK); lock->finish_waiters(ScatterLock::WAIT_XLOCK|ScatterLock::WAIT_WR|ScatterLock::WAIT_STABLE); } @@ -2948,8 +2932,6 @@ void Locker::scatter_tempsync(ScatterLock *lock, bool *need_issue) in->auth_pin(lock); } else { // do tempsync - in->try_drop_loner(); - lock->set_state(LOCK_TSYN); lock->finish_waiters(ScatterLock::WAIT_RD|ScatterLock::WAIT_STABLE); } @@ -3068,16 +3050,6 @@ void Locker::file_eval(ScatterLock *lock, bool *need_issue) simple_sync(lock, need_issue); else dout(10) << " waiting for wrlock to drain" << dendl; - - // drop loner? - if (in->get_loner() >= 0) { - if (in->multiple_nonstale_caps() && - in->try_drop_loner()) { - dout(10) << " dropped loner" << dendl; - if (need_issue) - *need_issue = true; - } - } } } @@ -3187,7 +3159,6 @@ void Locker::file_mixed(ScatterLock *lock, bool *need_issue) if (gather) lock->get_parent()->auth_pin(lock); else { - in->try_drop_loner(); lock->set_state(LOCK_MIX); lock->clear_scatter_wanted(); if (in->is_replicated()) { -- 2.39.5