summaryrefslogtreecommitdiff
path: root/src/mon/MDSMonitor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mon/MDSMonitor.cc')
-rw-r--r--src/mon/MDSMonitor.cc53
1 files changed, 41 insertions, 12 deletions
diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc
index 48c1c99d584..9c561d8dce8 100644
--- a/src/mon/MDSMonitor.cc
+++ b/src/mon/MDSMonitor.cc
@@ -952,20 +952,49 @@ bool MDSMonitor::prepare_command(MMonCommand *m)
}
} else if (prefix == "mds add_data_pool") {
int64_t poolid;
- cmd_getval(g_ceph_context, cmdmap, "poolid", poolid);
- pending_mdsmap.add_data_pool(poolid);
- ss << "added data pool " << poolid << " to mdsmap";
- r = 0;
-
+ if (!cmd_getval(g_ceph_context, cmdmap, "poolid", poolid)) {
+ string poolname;
+ cmd_getval(g_ceph_context, cmdmap, "pool", poolname);
+ poolid = mon->osdmon()->osdmap.lookup_pg_pool_name(poolname);
+ if (poolid < 0) {
+ string err;
+ poolid = strict_strtol(poolname.c_str(), 10, &err);
+ if (err.length()) {
+ r = -ENOENT;
+ poolid = -1;
+ ss << "pool '" << poolname << "' does not exist";
+ }
+ }
+ }
+ if (poolid >= 0) {
+ pending_mdsmap.add_data_pool(poolid);
+ ss << "added data pool " << poolid << " to mdsmap";
+ r = 0;
+ }
} else if (prefix == "mds remove_data_pool") {
int64_t poolid;
- cmd_getval(g_ceph_context, cmdmap, "poolid", poolid);
- r = pending_mdsmap.remove_data_pool(poolid);
- if (r == -ENOENT)
- r = 0;
- if (r == 0)
- ss << "removed data pool " << poolid << " from mdsmap";
-
+ if (!cmd_getval(g_ceph_context, cmdmap, "poolid", poolid)) {
+ string poolname;
+ cmd_getval(g_ceph_context, cmdmap, "pool", poolname);
+ poolid = mon->osdmon()->osdmap.lookup_pg_pool_name(poolname);
+ if (poolid < 0) {
+ string err;
+ poolid = strict_strtol(poolname.c_str(), 10, &err);
+ if (err.length()) {
+ r = -ENOENT;
+ poolid = -1;
+ ss << "pool '" << poolname << "' does not exist";
+ }
+ }
+ }
+ if (poolid >= 0) {
+ cmd_getval(g_ceph_context, cmdmap, "poolid", poolid);
+ r = pending_mdsmap.remove_data_pool(poolid);
+ if (r == -ENOENT)
+ r = 0;
+ if (r == 0)
+ ss << "removed data pool " << poolid << " from mdsmap";
+ }
} else if (prefix == "mds newfs") {
MDSMap newmap;
int64_t metadata, data;