From: Sage Weil Date: Sat, 27 Oct 2012 22:18:08 +0000 (-0700) Subject: os/FileStore: use _fgetattr() from getattr() X-Git-Tag: v0.55~188^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b6bfeed922b4b15edb77a483233e30701d2f89e5;p=ceph.git os/FileStore: use _fgetattr() from getattr() Signed-off-by: Sage Weil --- diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index fc418c8051b..25d2b6d9f96 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -3740,9 +3740,16 @@ int FileStore::_getattr(const char *fn, const char *name, bufferptr& bp) int FileStore::getattr(coll_t cid, const hobject_t& oid, const char *name, bufferptr &bp) { dout(15) << "getattr " << cid << "/" << oid << " '" << name << "'" << dendl; + int r; + int fd = lfn_open(cid, oid, 0); + if (fd < 0) { + r = -errno; + goto out; + } char n[CHAIN_XATTR_MAX_NAME_LEN]; get_attrname(name, n, CHAIN_XATTR_MAX_NAME_LEN); - int r = _getattr(cid, oid, n, bp); + r = _fgetattr(fd, n, bp); + TEMP_FAILURE_RETRY(::close(fd)); if (r == -ENODATA && g_conf->filestore_xattr_use_omap) { map got; set to_get;