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)
<< "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<unsigned,unsigned>, uint64_t > foo;
for (map<uint64_t,mds_info_t>::iterator p = mds_info.begin();
#ifndef CEPH_MDSMAP_H
#define CEPH_MDSMAP_H
+#include <errno.h>
+
#include "include/types.h"
#include "common/Clock.h"
#include "msg/Message.h"
}
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<int>& s) {
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());