From: Yehuda Sadeh Date: Wed, 11 Jul 2012 18:34:21 +0000 (-0700) Subject: rados tool: bulk objects removal X-Git-Tag: v0.50~86 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cc8df29e19a1fc441ad903aeeb59f7d3e15a5e7c;p=ceph.git rados tool: bulk objects removal Issue #2776. Allow the removal of multiple objects in a single rados tool command: # rados -p pool rm obj1 [obj2 [...]] Signed-off-by: Yehuda Sadeh Reviewed-by: Sage Weil --- diff --git a/src/rados.cc b/src/rados.cc index e5bdddd0ad0d..4c02da5f9d81 100644 --- a/src/rados.cc +++ b/src/rados.cc @@ -68,7 +68,7 @@ void usage(ostream& out) " get [outfile] fetch object\n" " put [infile] write object\n" " create [category] create object\n" -" rm remove object\n" +" rm ... remove object(s)\n" " cp [target-obj] copy object\n" " listxattr \n" " getxattr attr\n" @@ -1423,11 +1423,15 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, else if (strcmp(nargs[0], "rm") == 0) { if (!pool_name || nargs.size() < 2) usage_exit(); - string oid(nargs[1]); - ret = io_ctx.remove(oid); - if (ret < 0) { - cerr << "error removing " << pool_name << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl; - return 1; + vector::iterator iter = nargs.begin(); + ++iter; + for (; iter != nargs.end(); ++iter) { + const string & oid = *iter; + ret = io_ctx.remove(oid); + if (ret < 0) { + cerr << "error removing " << pool_name << "/" << oid << ": " << strerror_r(-ret, buf, sizeof(buf)) << std::endl; + return 1; + } } } else if (strcmp(nargs[0], "create") == 0) {