]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
tools/rados: add a cli option to clear omap
authorAbhishek Lekshmanan <abhishek@suse.com>
Mon, 27 Nov 2017 18:36:16 +0000 (19:36 +0100)
committerAbhishek Lekshmanan <abhishek@suse.com>
Mon, 27 Nov 2017 18:39:48 +0000 (19:39 +0100)
rados clearomap <obj> will clear all the omap keys of an object calling
the underlying omap_clear librados api

Fixes: http://tracker.ceph.com/issues/22255
Signed-off-by: Abhishek Lekshmanan <abhishek@suse.com>
src/tools/rados/rados.cc

index 2102525c0f089d1aac0c350616e439af42bd0409..03c621d8a46c84fabdb24bd034a25c5513ca6c79 100644 (file)
@@ -115,6 +115,7 @@ void usage(ostream& out)
 "                                    in the object's object map\n"
 "   setomapval <obj-name> <key> <val>\n"
 "   rmomapkey <obj-name> <key>\n"
+"   clearomap <obj-name>             clear all the omap keys for this object\n"
 "   getomapheader <obj-name> [file]\n"
 "   setomapheader <obj-name> <val>\n"
 "   tmap-to-omap <obj-name>          convert tmap keys/values to omap\n"
@@ -2589,6 +2590,20 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts,
     } else {
       ret = 0;
     }
+  } else if (strcmp(nargs[0], "clearomap") == 0) {
+    if (!pool_name || nargs.size() < 2) {
+      usage_exit();
+    }
+
+    string oid(nargs[1]);
+    ret = io_ctx.omap_clear(oid);
+    if (ret < 0) {
+      cerr << "error removing omap key " << pool_name << "/" << oid << "/"
+           << cpp_strerror(ret) << std::endl;
+      goto out;
+    } else {
+      ret = 0;
+    }
   } else if (strcmp(nargs[0], "listomapvals") == 0) {
     if (!pool_name || nargs.size() < 2)
       usage_exit();