From: Somnath Roy Date: Mon, 30 Jun 2014 08:54:36 +0000 (-0700) Subject: FileStore: FDCache lookup is rearranged X-Git-Tag: v0.85~37^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cfff9f6ac37c8bf75ae0859c5d59a11be0a0f1c0;p=ceph.git FileStore: FDCache lookup is rearranged In lfn_open() there is no point of building the Index if the cache lookup is successful and caller is not asking for Index. Signed-off-by: Somnath Roy --- diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 9e27244f90d..4c4a1658150 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -225,8 +225,23 @@ int FileStore::lfn_open(coll_t cid, ( oid.shard_id == shard_id_t::NO_SHARD && oid.generation == ghobject_t::NO_GEN )); assert(outfd); + int r = 0; bool need_lock = true; + if (!replaying) { + *outfd = fdcache.lookup(oid); + if (*outfd) { + if (!index) { + return 0; + } else { + if (!((*index).index)) { + r = get_index(cid, index); + return r; + } + } + } + } + int flags = O_RDWR; if (create) flags |= O_CREAT; @@ -235,7 +250,7 @@ int FileStore::lfn_open(coll_t cid, if (!index) { index = &index2; } - int r = 0; + if (!((*index).index)) { r = get_index(cid, index); } else { @@ -243,11 +258,6 @@ int FileStore::lfn_open(coll_t cid, } int fd, exist; - if (!replaying) { - *outfd = fdcache.lookup(oid); - if (*outfd) - return 0; - } assert(NULL != (*index).index);