diff options
author | Yehuda Sadeh <yehuda@inktank.com> | 2012-07-11 11:34:21 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-07-11 20:06:32 -0700 |
commit | cc8df29e19a1fc441ad903aeeb59f7d3e15a5e7c (patch) | |
tree | 01bcb242152067c064bf1bacc4485e51d6e887bf | |
parent | 762a5b63833b3df4f958bfd3e66acaa6d1ba6c95 (diff) | |
download | ceph-cc8df29e19a1fc441ad903aeeb59f7d3e15a5e7c.tar.gz |
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 <yehuda@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/rados.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/rados.cc b/src/rados.cc index e5bdddd0ad0..4c02da5f9d8 100644 --- a/src/rados.cc +++ b/src/rados.cc @@ -68,7 +68,7 @@ void usage(ostream& out) " get <obj-name> [outfile] fetch object\n" " put <obj-name> [infile] write object\n" " create <obj-name> [category] create object\n" -" rm <obj-name> remove object\n" +" rm <obj-name> ... remove object(s)\n" " cp <obj-name> [target-obj] copy object\n" " listxattr <obj-name>\n" " getxattr <obj-name> 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<const char *>::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) { |