From efcf6265bc2b919099453f901c10aadb3c3ee9d4 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 18 Jun 2013 13:11:45 -0700 Subject: [PATCH] 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 --- src/os/FileStore.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 4218f695bc347..4b6234e09035a 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; -- 2.39.5