]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph_filestore_dump: Add list-omap object command
authorDavid Zafman <david.zafman@inktank.com>
Thu, 15 May 2014 00:50:16 +0000 (17:50 -0700)
committerDavid Zafman <dzafman@redhat.com>
Tue, 3 Mar 2015 17:51:30 +0000 (09:51 -0800)
Signed-off-by: David Zafman <david.zafman@inktank.com>
(cherry picked from commit 48890c7741d76cf92b5f589f49378ca57292e88b)

src/tools/ceph_filestore_dump.cc

index 844c624c82f9f2232efba2f3e3794bd8dfae868d..67a549d7063e287b6bef2b5a040dbfcc5a9cbe64 100644 (file)
@@ -1204,6 +1204,28 @@ int do_list_attrs(ObjectStore *store, coll_t coll, ghobject_t &ghobj)
   return 0;
 }
 
+int do_list_omap(ObjectStore *store, coll_t coll, ghobject_t &ghobj)
+{
+  ObjectMap::ObjectMapIterator iter = store->get_omap_iterator(coll, ghobj);
+  if (!iter) {
+    cerr << "omap_get_iterator: " << cpp_strerror(ENOENT) << std::endl;
+    return -ENOENT;
+  }
+  iter->seek_to_first();
+  map<string, bufferlist> oset;
+  while(iter->valid()) {
+    get_omap_batch(iter, oset);
+
+    for (map<string,bufferlist>::iterator i = oset.begin();i != oset.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;
@@ -1582,6 +1604,12 @@ int main(int argc, char **argv)
           ret = 1;
         }
         goto out;
+      } else if (objcmd == "list-omap") {
+        int r = do_list_omap(fs, coll, ghobj);
+        if (r) {
+          ret = 1;
+        }
+        goto out;
       }
       cerr << "Unknown object command '" << objcmd << "'" << std::endl;
       usage(desc);