]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mds: Don't acquire replica object's versionlock
authorYan, Zheng <zheng.z.yan@intel.com>
Mon, 19 Nov 2012 02:43:37 +0000 (10:43 +0800)
committerSage Weil <sage@inktank.com>
Sat, 1 Dec 2012 20:52:22 +0000 (12:52 -0800)
commit946b263c108937c0b732217a0ab32d93e3265817
tree613747bd3bed5c0af058bde73b35ef1de365962a
parent5620f3d0bfec29ae3f58c57d2ec502cb41b2cefd
mds: Don't acquire replica object's versionlock

Both CInode and CDentry's versionlocks are of type LocalLock.
Acquiring LocalLock in replica object is useless and problematic.
For example, if two requests try acquiring a replica object's
versionlock, the first request succeeds, the second request
is added to wait queue. Later when the first request finishes,
MDCache::request_drop_foreign_locks() finds the lock's parent is
non-auth, it skips waking requests in the wait queue. So the
second request hangs.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/Locker.cc
src/mds/Server.cc