]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
FileStore::_setattrs: only do omap operations if necessary
authorSamuel Just <sam.just@inktank.com>
Thu, 21 Feb 2013 21:25:49 +0000 (13:25 -0800)
committerSamuel Just <sam.just@inktank.com>
Thu, 21 Feb 2013 21:25:49 +0000 (13:25 -0800)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/os/FileStore.cc

index a7390361d468190b403d0b70d11cde226da74853..deab9ede8759bd5bc230203a02a543a149c742e3 100644 (file)
@@ -3882,13 +3882,18 @@ int FileStore::_setattrs(coll_t cid, const hobject_t& oid, map<string,bufferptr>
     }
   }
 
-  if (g_conf->filestore_xattr_use_omap) {
+  if (omap_remove.size()) {
+    assert(g_conf->filestore_xattr_use_omap);
     r = object_map->remove_xattrs(oid, omap_remove, &spos);
     if (r < 0 && r != -ENOENT) {
       dout(10) << __func__ << " could not remove_xattrs r = " << r << dendl;
       assert(!m_filestore_fail_eio || r != -EIO);
       goto out_close;
     }
+  }
+  
+  if (omap_set.size()) {
+    assert(g_conf->filestore_xattr_use_omap);
     r = object_map->set_xattrs(oid, omap_set, &spos);
     if (r < 0) {
       dout(10) << __func__ << " could not set_xattrs r = " << r << dendl;