]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/FileStore: use _fgetattr() from getattr()
authorSage Weil <sage@inktank.com>
Sat, 27 Oct 2012 22:18:08 +0000 (15:18 -0700)
committerSage Weil <sage@inktank.com>
Mon, 5 Nov 2012 08:13:53 +0000 (00:13 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
src/os/FileStore.cc

index fc418c8051b105bc5d15a663cb4037ae379c1de6..25d2b6d9f96c923bfa6dbb09538a9eab686894fe 100644 (file)
@@ -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<string, bufferlist> got;
     set<string> to_get;