mirror of
https://github.com/ceph/ceph
synced 2025-02-15 14:58:01 +00:00
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 <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com>
This commit is contained in:
parent
6b52acc850
commit
efcf6265bc
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user