void MDCache::init_layouts()
{
default_file_layout = g_default_file_layout;
- default_file_layout.fl_pg_pool = mds->mdsmap->get_data_pool();
+ default_file_layout.fl_pg_pool = mds->mdsmap->get_first_data_pool();
default_log_layout = g_default_file_layout;
default_log_layout.fl_pg_pool = mds->mdsmap->get_metadata_pool();
CInode *i = create_system_inode(MDS_INO_ROOT, S_IFDIR|0755);
i->default_layout = new struct default_file_layout;
i->default_layout->layout = default_file_layout;
- i->default_layout->layout.fl_pg_pool = mds->mdsmap->get_data_pool();
+ i->default_layout->layout.fl_pg_pool = mds->mdsmap->get_first_data_pool();
return i;
}
__u32 session_autoclose;
uint64_t max_file_size;
- vector<int64_t> data_pools; // file data pools available to clients (via an ioctl). first is the default.
+ set<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
int get_tableserver() const { return tableserver; }
int get_root() const { return root; }
- const vector<int64_t> &get_data_pools() const { return data_pools; }
- int64_t get_data_pool() const { return data_pools[0]; }
+ const set<int64_t> &get_data_pools() const { return data_pools; }
+ int64_t get_first_data_pool() const { return *data_pools.begin(); }
int64_t get_cas_pool() const { return cas_pool; }
int64_t get_metadata_pool() const { return metadata_pool; }
bool is_data_pool(int64_t poolid) const {
- return std::find(data_pools.begin(), data_pools.end(), poolid) != data_pools.end();
+ return data_pools.count(poolid);
}
const map<uint64_t,mds_info_t>& get_mds_info() { return mds_info; }
// data pools
void add_data_pool(int64_t poolid) {
- data_pools.push_back(poolid);
+ data_pools.insert(poolid);
}
int remove_data_pool(int64_t poolid) {
- for (vector<int64_t>::iterator p = data_pools.begin();
- p != data_pools.end();
- ++p) {
- if (*p == poolid) {
- data_pools.erase(p);
- return 0;
- }
- }
- return -ENOENT;
+ set<int64_t>::iterator p = data_pools.find(poolid);
+ if (p == data_pools.end())
+ return -ENOENT;
+ data_pools.erase(p);
+ return 0;
}
// sets
::encode(mds_info, bl);
__u32 n = data_pools.size();
::encode(n, bl);
- for (vector<int64_t>::const_iterator p = data_pools.begin(); p != data_pools.end(); ++p) {
+ for (set<int64_t>::const_iterator p = data_pools.begin(); p != data_pools.end(); ++p) {
n = *p;
::encode(n, bl);
}
while (n--) {
__u32 m;
::decode(m, p);
- data_pools.push_back(m);
+ data_pools.insert(m);
}
__s32 s;
::decode(s, p);
dout(7) << "commit " << tid << " destroy " << sn << " seq " << seq << dendl;
snaps.erase(sn);
- for (vector<int64_t>::const_iterator p = mds->mdsmap->get_data_pools().begin();
+ 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);
{
m.max_mds = g_conf->max_mds;
m.created = ceph_clock_now(g_ceph_context);
- m.data_pools.push_back(data_pool);
+ m.data_pools.insert(data_pool);
m.metadata_pool = metadata_pool;
m.cas_pool = -1;
m.compat = get_mdsmap_compat_set();