]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph_filestore_dump: Add get-omaphdr object command
authorDavid Zafman <david.zafman@inktank.com>
Tue, 20 May 2014 17:44:37 +0000 (10:44 -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 30c0f3114e665acdd99e64bf0d2a7399b33e8d61)

src/tools/ceph_filestore_dump.cc

index 4d70799314ab07a7ac3a0c017290154ce8da0639..1c42c864071920e724c57a78a517614b6f65dbb9 100644 (file)
@@ -1432,6 +1432,26 @@ int do_rm_omap(ObjectStore *store, coll_t coll, ghobject_t &ghobj, string key)
   return 0;
 }
 
+int do_get_omaphdr(ObjectStore *store, coll_t coll, ghobject_t &ghobj)
+{
+  bufferlist hdrbl;
+
+  int r = store->omap_get_header(coll, ghobj, &hdrbl, true);
+  if (r < 0) {
+    cerr << "omap_get_header: " << cpp_strerror(-r) << std::endl;
+    return r;
+  }
+
+  string header(hdrbl.c_str(), hdrbl.length());
+  if (outistty) {
+    cleanbin(header);
+    header.push_back('\n');
+  }
+  cout << header;
+
+  return 0;
+}
+
 void usage(po::options_description &desc)
 {
     cerr << std::endl;
@@ -1922,6 +1942,13 @@ int main(int argc, char **argv)
        if (r)
          ret = 1;
         goto out;
+      } else if (objcmd == "get-omaphdr") {
+       if (vm.count("arg1"))
+         usage(desc);
+       r = do_get_omaphdr(fs, coll, ghobj);
+       if (r)
+         ret = 1;
+        goto out;
       }
       cerr << "Unknown object command '" << objcmd << "'" << std::endl;
       usage(desc);