From: Samuel Just Date: Tue, 18 Jun 2013 20:11:45 +0000 (-0700) Subject: FileStore::lfn_open: don't call get_index under fdcache_lock X-Git-Tag: v0.66~54 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=efcf6265bc2b919099453f901c10aadb3c3ee9d4;p=ceph.git FileStore::lfn_open: don't call get_index under fdcache_lock lfn_open() is called with indexes locked, so we cannot lock and index under fdcache_lock. Fixes: #5389 Signed-off-by: Samuel Just Reviewed-by: Sage Weil --- diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 4218f695bc34..4b6234e09035 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -207,23 +207,23 @@ int FileStore::lfn_open(coll_t cid, int flags = O_RDWR; if (create) flags |= O_CREAT; + Index index2; + if (!index) { + index = &index2; + } + int r = 0; + if (!(*index)) { + r = get_index(cid, index); + } Mutex::Locker l(fdcache_lock); *outfd = fdcache.lookup(oid); if (*outfd) { return 0; } - Index index2; IndexedPath path2; if (!path) path = &path2; int fd, exist; - int r = 0; - if (!index) { - index = &index2; - } - if (!(*index)) { - r = get_index(cid, index); - } if (r < 0) { derr << "error getting collection index for " << cid << ": " << cpp_strerror(-r) << dendl;