From: Sage Weil Date: Thu, 1 Sep 2011 23:28:42 +0000 (-0700) Subject: mds: _finish_xlock helper X-Git-Tag: v0.35~81 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f9412b102d1eb634dd31ff8aa16f55156448eba6;p=ceph.git mds: _finish_xlock helper Factor out _finish_xlock helper to move from XLOCKDONE (or, later, PREXLOCK) to a non-xlock state. Signed-off-by: Sage Weil --- diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index 5ee3ff3a3ba68..66fea23493c7e 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -1347,6 +1347,18 @@ bool Locker::xlock_start(SimpleLock *lock, MDRequest *mut) } } +void Locker::_finish_xlock(SimpleLock *lock, bool *pneed_issue) +{ + assert(!lock->is_stable()); + lock->get_parent()->auth_unpin(lock); + if (lock->get_type() != CEPH_LOCK_DN && ((CInode*)lock->get_parent())->get_loner() >= 0) + lock->set_state(LOCK_EXCL); + else + lock->set_state(LOCK_LOCK); + if (lock->get_cap_shift()) + *pneed_issue = true; +} + void Locker::xlock_finish(SimpleLock *lock, Mutation *mut, bool *pneed_issue) { if (lock->get_type() == CEPH_LOCK_IVERSION || @@ -1386,14 +1398,7 @@ void Locker::xlock_finish(SimpleLock *lock, Mutation *mut, bool *pneed_issue) lock->get_num_rdlocks() == 0 && lock->get_num_wrlocks() == 0 && lock->get_num_client_lease() == 0) { - assert(!lock->is_stable()); - lock->get_parent()->auth_unpin(lock); - if (lock->get_type() != CEPH_LOCK_DN && ((CInode*)lock->get_parent())->get_loner() >= 0) - lock->set_state(LOCK_EXCL); - else - lock->set_state(LOCK_LOCK); - if (lock->get_cap_shift()) - do_issue = true; + _finish_xlock(lock, &do_issue); } // others waiting? diff --git a/src/mds/Locker.h b/src/mds/Locker.h index 4987094fead6d..35de701cdef8e 100644 --- a/src/mds/Locker.h +++ b/src/mds/Locker.h @@ -141,6 +141,7 @@ public: void remote_wrlock_finish(SimpleLock *lock, int target, Mutation *mut); bool xlock_start(SimpleLock *lock, MDRequest *mut); + void _finish_xlock(SimpleLock *lock, bool *pneed_issue); void xlock_finish(SimpleLock *lock, Mutation *mut, bool *pneed_issue); void xlock_export(SimpleLock *lock, Mutation *mut);