From: Sage Weil Date: Fri, 13 Aug 2010 21:20:39 +0000 (-0700) Subject: mds: only kick head on snap rdlock if in SNAP_SYNC state X-Git-Tag: v0.22~281 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1a0ab55321fedf5fdc157ffd9b64e290c1834b06;p=ceph.git mds: only kick head on snap rdlock if in SNAP_SYNC state We may, e.g., be in the SCAN state, which is totally unrelated to the head! --- diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index 299351f0a097..85d29030bb5c 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -783,7 +783,8 @@ bool Locker::rdlock_start(SimpleLock *lock, MDRequest *mut, bool as_anon) if (lock->get_type() != CEPH_LOCK_DN) in = (CInode *)lock->get_parent(); - if (in && !in->is_head() && in->is_auth()) { + if (in && !in->is_head() && in->is_auth() && + lock->get_state() == LOCK_SNAP_SYNC) { // okay, we actually need to kick the head's lock to get ourselves synced up. CInode *head = mdcache->get_inode(in->ino()); assert(head);