]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph_filestore_dump: Add list-attrs object command
authorDavid Zafman <david.zafman@inktank.com>
Thu, 15 May 2014 01:32:42 +0000 (18:32 -0700)
committerDavid Zafman <dzafman@redhat.com>
Thu, 28 Aug 2014 23:21:28 +0000 (16:21 -0700)
Signed-off-by: David Zafman <david.zafman@inktank.com>
src/tools/ceph_filestore_dump.cc

index e723b6a1e170731e27bc18ccc941f506aac1924b..7f173c04da0eba2a9729c94ccce43aeb9f08f970 100644 (file)
@@ -1188,6 +1188,24 @@ int do_remove_object(ObjectStore *store, coll_t coll, ghobject_t &ghobj)
   return 0;
 }
 
+int do_list_attrs(ObjectStore *store, coll_t coll, ghobject_t &ghobj)
+{
+  map<string,bufferptr> aset;
+  int r = store->getattrs(coll, ghobj, aset);
+  if (r < 0) {
+    cerr << "getattrs: " << cpp_strerror(-r) << std::endl;
+    return r;
+  }
+
+  for (map<string,bufferptr>::iterator i = aset.begin();i != aset.end(); ++i) {
+    string key(i->first);
+    if (outistty)
+      cleanbin(key);
+    cout << key << std::endl;
+  }
+  return 0;
+}
+
 void usage(po::options_description &desc)
 {
     cerr << std::endl;
@@ -1560,6 +1578,12 @@ int main(int argc, char **argv)
           ret = 1;
         }
         goto out;
+      } else if (objcmd == "list-attrs") {
+        int r = do_list_attrs(fs, coll, ghobj);
+        if (r) {
+          ret = 1;
+        }
+        goto out;
       }
       cerr << "Unknown object command '" << objcmd << "'" << std::endl;
       usage(desc);