]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: use set to store MDSMap data pools
authorSage Weil <sage@inktank.com>
Thu, 27 Dec 2012 19:09:00 +0000 (11:09 -0800)
committerSage Weil <sage@inktank.com>
Thu, 27 Dec 2012 19:09:00 +0000 (11:09 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
src/mds/MDCache.cc
src/mds/MDSMap.cc
src/mds/MDSMap.h
src/mds/SnapServer.cc
src/mon/MDSMonitor.cc

index c345b11e448e9ba6ff3f3f00b4b73fc08b2741e8..e223806e661062a43990fd23562080f43e4973ee 100644 (file)
@@ -266,7 +266,7 @@ void MDCache::remove_inode(CInode *o)
 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();
@@ -314,7 +314,7 @@ CInode *MDCache::create_root_inode()
   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;
 }
 
index e6308fbc7f7ce4a21696fddfd98feee3594dd910..2118d5e1de92473f80b7262c8b46d4b37b9b5894 100644 (file)
@@ -110,7 +110,7 @@ void MDSMap::dump(Formatter *f) const
   }
   f->close_section();
   f->open_array_section("data_pools");
-  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)
     f->dump_int("pool", *p);
   f->close_section();
   f->dump_int("metadata_pool", metadata_pool);
index ccf86a04612521dd446e7a99adf153762283e4fe..3a83ed88b08e34abbba00e709aa894fbae7a35b2 100644 (file)
@@ -174,7 +174,7 @@ protected:
   __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
   
@@ -239,12 +239,12 @@ public:
   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; }
@@ -278,18 +278,14 @@ public:
 
   // 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
@@ -517,7 +513,7 @@ public:
     ::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);
     }
@@ -572,7 +568,7 @@ public:
       while (n--) {
        __u32 m;
        ::decode(m, p);
-       data_pools.push_back(m);
+       data_pools.insert(m);
       }
       __s32 s;
       ::decode(s, p);
index cca54e3eb845bc2f7ffdb5a9a948d242c3ff3440..29da28c3ce477cef14f9950d6de6856fc91446b4 100644 (file)
@@ -115,7 +115,7 @@ void SnapServer::_commit(version_t tid)
     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);
index f46e623ddeaf358adea6ee401690d672cfb550c7..cd2dc8fa517955e4f194568715dcfe3942e014a4 100644 (file)
@@ -60,7 +60,7 @@ void MDSMonitor::create_new_fs(MDSMap &m, int metadata_pool, int data_pool)
 {
   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();