auto fs = std::make_shared<Filesystem>();
fs->mds_map.fs_name = name;
fs->mds_map.max_mds = 1;
- fs->mds_map.data_pools.insert(data_pool);
+ fs->mds_map.data_pools.push_back(data_pool);
fs->mds_map.metadata_pool = metadata_pool;
fs->mds_map.cas_pool = -1;
fs->mds_map.max_file_size = g_conf->mds_max_file_size;
while (n--) {
__u32 m;
::decode(m, p);
- legacy_mds_map.data_pools.insert(m);
+ legacy_mds_map.data_pools.push_back(m);
}
__s32 s;
::decode(s, p);
}
f->close_section();
f->open_array_section("data_pools");
- for (set<int64_t>::const_iterator p = data_pools.begin(); p != data_pools.end(); ++p)
- f->dump_int("pool", *p);
+ for (const auto p: data_pools)
+ f->dump_int("pool", p);
f->close_section();
f->dump_int("metadata_pool", metadata_pool);
f->dump_bool("enabled", enabled);
{
MDSMap *m = new MDSMap();
m->max_mds = 1;
- m->data_pools.insert(0);
+ m->data_pools.push_back(0);
m->metadata_pool = 1;
m->cas_pool = 2;
m->compat = get_mdsmap_compat_set_all();
}
n = data_pools.size();
::encode(n, bl);
- for (set<int64_t>::const_iterator p = data_pools.begin(); p != data_pools.end(); ++p) {
- n = *p;
+ for (const auto p: data_pools) {
+ n = p;
::encode(n, bl);
}
while (n--) {
__u32 m;
::decode(m, p);
- data_pools.insert(m);
+ data_pools.push_back(m);
}
__s32 s;
::decode(s, p);
#include <set>
#include <map>
#include <string>
+#include <algorithm>
#include "common/config.h"
__u32 session_autoclose;
uint64_t max_file_size;
- std::set<int64_t> data_pools; // file data pools available to clients (via an ioctl). first is the default.
+ std::vector<int64_t> data_pools; // file data pools available to clients (via an ioctl). first is the default.
int64_t cas_pool; // where CAS objects go
int64_t metadata_pool; // where fs metadata objects go
mds_rank_t get_tableserver() const { return tableserver; }
mds_rank_t get_root() const { return root; }
- const std::set<int64_t> &get_data_pools() const { return data_pools; }
+ const std::vector<int64_t> &get_data_pools() const { return data_pools; }
int64_t get_first_data_pool() const { return *data_pools.begin(); }
int64_t get_metadata_pool() const { return metadata_pool; }
bool is_data_pool(int64_t poolid) const {
- return data_pools.count(poolid);
+ return std::binary_search(data_pools.begin(), data_pools.end(), poolid);
}
bool pool_in_use(int64_t poolid) const {
// data pools
void add_data_pool(int64_t poolid) {
- data_pools.insert(poolid);
+ data_pools.push_back(poolid);
}
int remove_data_pool(int64_t poolid) {
- std::set<int64_t>::iterator p = data_pools.find(poolid);
+ std::vector<int64_t>::iterator p = std::find(data_pools.begin(), data_pools.end(), poolid);
if (p == data_pools.end())
return -ENOENT;
data_pools.erase(p);
uint64_t pg_count = 0;
objecter->with_osdmap([&](const OSDMap& o) {
// Number of PGs across all data pools
- const std::set<int64_t> &data_pools = mds_map.get_data_pools();
+ const std::vector<int64_t> &data_pools = mds_map.get_data_pools();
for (const auto dp : data_pools) {
if (o.get_pg_pool(dp) == NULL) {
// It is possible that we have an older OSDMap than MDSMap,
dout(7) << "commit " << tid << " destroy " << sn << " seq " << seq << dendl;
snaps.erase(sn);
- for (set<int64_t>::const_iterator p = mds->mdsmap->get_data_pools().begin();
- p != mds->mdsmap->get_data_pools().end();
- ++p) {
- need_to_purge[*p].insert(sn);
- need_to_purge[*p].insert(seq);
+ for (const auto p : mds->mdsmap->get_data_pools()) {
+ need_to_purge[p].insert(sn);
+ need_to_purge[p].insert(seq);
}
pending_destroy.erase(tid);
}
for (auto fs : fsmap.get_filesystems()) {
- const set<int64_t>& data_pools = fs->mds_map.get_data_pools();
+ const std::vector<int64_t> &data_pools = fs->mds_map.get_data_pools();
string sure;
- if ((data_pools.find(data) != data_pools.end()
+ if ((std::find(data_pools.begin(), data_pools.end(), data) != data_pools.end()
|| fs->mds_map.get_metadata_pool() == metadata)
&& ((!cmd_getval(g_ceph_context, cmdmap, "sure", sure)
|| sure != "--allow-dangerous-metadata-overlay"))) {
ds << "name: " << mds_map.fs_name << ", metadata pool: "
<< md_pool_name << ", data pools: [";
- for (std::set<int64_t>::iterator dpi = mds_map.data_pools.begin();
- dpi != mds_map.data_pools.end(); ++dpi) {
- const string &pool_name = mon->osdmon()->osdmap.get_pool_name(*dpi);
+ for (auto dpi : mds_map.data_pools) {
+ const string &pool_name = mon->osdmon()->osdmap.get_pool_name(dpi);
ds << pool_name << " ";
}
ds << "]" << std::endl;