From 92746916dc19ef155b943c326ab0f8062811edac Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 17 Aug 2011 16:53:28 -0700 Subject: [PATCH] mon: add/remove data_pg_pools from mdsmap Signed-off-by: Sage Weil --- src/mds/MDSMap.cc | 7 +++++++ src/mds/MDSMap.h | 17 +++++++++++++++++ src/mon/MDSMonitor.cc | 10 ++++++++++ 3 files changed, 34 insertions(+) diff --git a/src/mds/MDSMap.cc b/src/mds/MDSMap.cc index cefe1c0d4b86e..e3a948a41d5cf 100644 --- a/src/mds/MDSMap.cc +++ b/src/mds/MDSMap.cc @@ -120,6 +120,11 @@ void MDSMap::dump(Formatter *f) const f->close_section(); } f->close_section(); + f->open_array_section("data_pools"); + for (vector<__u32>::const_iterator p = data_pg_pools.begin(); p != data_pg_pools.end(); ++p) + f->dump_int("pool", *p); + f->close_section(); + f->dump_int("metadata_pool", metadata_pg_pool); } void MDSMap::print(ostream& out) @@ -140,6 +145,8 @@ void MDSMap::print(ostream& out) << "up\t" << up << "\n" << "failed\t" << failed << "\n" << "stopped\t" << stopped << "\n"; + out << "data_pools\t" << data_pg_pools << "\n"; + out << "metadata_pool\t" << metadata_pg_pool << "\n"; multimap< pair, uint64_t > foo; for (map::iterator p = mds_info.begin(); diff --git a/src/mds/MDSMap.h b/src/mds/MDSMap.h index 36e4c04d16040..54adf3d991b31 100644 --- a/src/mds/MDSMap.h +++ b/src/mds/MDSMap.h @@ -16,6 +16,8 @@ #ifndef CEPH_MDSMAP_H #define CEPH_MDSMAP_H +#include + #include "include/types.h" #include "common/Clock.h" #include "msg/Message.h" @@ -266,6 +268,21 @@ public: } int get_num_failed() { return failed.size(); } + // data pools + void add_data_pg_pool(__u32 poolid) { + data_pg_pools.push_back(poolid); + } + int remove_data_pg_pool(__u32 poolid) { + for (vector<__u32>::iterator p = data_pg_pools.begin(); + p != data_pg_pools.end(); + ++p) { + if (*p == poolid) { + data_pg_pools.erase(p); + return 0; + } + } + return -ENOENT; + } // sets void get_mds_set(set& s) { diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 46445ec8316b8..c4a907cfeb286 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -821,6 +821,16 @@ bool MDSMonitor::prepare_command(MMonCommand *m) r = -ENOENT; } } + } else if (m->cmd[1] == "add_data_pool" && m->cmd.size() == 3) { + int poolid = atoi(m->cmd[2].c_str()); + pending_mdsmap.add_data_pg_pool(poolid); + ss << "added data pool " << poolid << " to mdsmap"; + r = 0; + } else if (m->cmd[1] == "remove_data_pool" && m->cmd.size() == 3) { + int poolid = atoi(m->cmd[2].c_str()); + r = pending_mdsmap.remove_data_pg_pool(poolid); + if (r == 0) + ss << "removed data pool " << poolid << " from mdsmap"; } else if (m->cmd[1] == "newfs" && m->cmd.size() == 4) { MDSMap newmap(g_ceph_context); int metadata = atoi(m->cmd[2].c_str()); -- 2.39.5