]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/OSDMap: return const string from get_pool_name
authorSage Weil <sage@redhat.com>
Sun, 20 Jul 2014 17:52:51 +0000 (10:52 -0700)
committerJohn Spray <john.spray@redhat.com>
Mon, 25 Aug 2014 00:34:01 +0000 (01:34 +0100)
Signed-off-by: Sage Weil <sage@redhat.com>
src/client/Client.cc
src/librados/RadosClient.cc
src/librados/RadosClient.h
src/mon/MDSMonitor.cc
src/mon/OSDMonitor.cc
src/mon/PGMonitor.cc
src/osd/OSDMap.h
src/osd/PG.h

index cc42c5d05c0f1a2e031995c342fbf906e67f2598..d3d71fdea0b783f41e555be2b8df29af1e325a0c 100644 (file)
@@ -7421,7 +7421,7 @@ int Client::_getxattr(Inode *in, const char *name, void *value, size_t size,
                     (long unsigned)in->layout.fl_object_size);
        if (osdmap->have_pg_pool(in->layout.fl_pg_pool))
          r += snprintf(buf + r, sizeof(buf) - r, "%s",
-                       osdmap->get_pool_name(in->layout.fl_pg_pool));
+                       osdmap->get_pool_name(in->layout.fl_pg_pool).c_str());
        else
          r += snprintf(buf + r, sizeof(buf) - r, "%lu",
                        (long unsigned)in->layout.fl_pg_pool);
@@ -7434,7 +7434,7 @@ int Client::_getxattr(Inode *in, const char *name, void *value, size_t size,
       } else if (rest == "layout.pool") {
        if (osdmap->have_pg_pool(in->layout.fl_pg_pool))
          r = snprintf(buf, sizeof(buf), "%s",
-                      osdmap->get_pool_name(in->layout.fl_pg_pool));
+                      osdmap->get_pool_name(in->layout.fl_pg_pool).c_str());
        else
          r = snprintf(buf, sizeof(buf), "%lu",
                       (long unsigned)in->layout.fl_pg_pool);
index 964521f787ca7be439bb1f9967c885a72fc5624c..ae2d0571e344aeac43c24a9ac5556b447908ab3c 100644 (file)
@@ -105,7 +105,7 @@ uint64_t librados::RadosClient::pool_required_alignment(int64_t pool_id)
     osdmap.get_pg_pool(pool_id)->required_alignment() : 0;
 }
 
-const char *librados::RadosClient::get_pool_name(int64_t pool_id)
+std::string librados::RadosClient::get_pool_name(int64_t pool_id)
 {
   Mutex::Locker l(lock);
   return osdmap.get_pool_name(pool_id);
@@ -130,10 +130,9 @@ int librados::RadosClient::pool_get_name(uint64_t pool_id, std::string *s)
   int r = wait_for_osdmap();
   if (r < 0)
     return r;
-  const char *str = osdmap.get_pool_name(pool_id);
-  if (!str)
+  if (!osdmap.have_pg_pool(pool_id))
     return -ENOENT;
-  *s = str;
+  *s = osdmap.get_pool_name(pool_id);
   return 0;
 }
 
index 793feb7ab977eff32f2e6c147141e78110c3e841..7c3df8cbb66ef692a1068ad88cd5f45c4646b985 100755 (executable)
@@ -92,7 +92,7 @@ public:
 
   int get_fsid(std::string *s);
   int64_t lookup_pool(const char *name);
-  const char *get_pool_name(int64_t pool_id);
+  std::string get_pool_name(int64_t pool_id);
   bool pool_requires_alignment(int64_t pool_id);
   uint64_t pool_required_alignment(int64_t pool_id);
   int pool_get_auid(uint64_t pool_id, unsigned long long *auid);
index 4096f89f8854c9e3c3f53c5db078948d22a23608..3e22a5431a852bebcdd73889eaee4fada72eb819 100644 (file)
@@ -711,10 +711,9 @@ bool MDSMonitor::preprocess_command(MMonCommand *m)
           f->open_object_section("filesystem");
           {
             f->dump_string("name", pending_mdsmap.fs_name);
-            const char *md_pool_name = mon->osdmon()->osdmap.get_pool_name(pending_mdsmap.metadata_pool);
+            const string &md_pool_name = mon->osdmon()->osdmap.get_pool_name(pending_mdsmap.metadata_pool);
             /* Output both the names and IDs of pools, for use by
              * humans and machines respectively */
-            assert(md_pool_name != NULL);
             f->dump_string("metadata_pool", md_pool_name);
             f->dump_int("metadata_pool_id", pending_mdsmap.metadata_pool);
             f->open_array_section("data_pool_ids");
@@ -729,8 +728,7 @@ bool MDSMonitor::preprocess_command(MMonCommand *m)
             {
                 for (std::set<int64_t>::iterator dpi = pending_mdsmap.data_pools.begin();
                    dpi != pending_mdsmap.data_pools.end(); ++dpi) {
-                  const char *pool_name = mon->osdmon()->osdmap.get_pool_name(*dpi);
-                  assert(pool_name != NULL);
+                  const string &pool_name = mon->osdmon()->osdmap.get_pool_name(*dpi);
                   f->dump_string("data_pool", pool_name);
                 }
             }
@@ -744,14 +742,12 @@ bool MDSMonitor::preprocess_command(MMonCommand *m)
       f->flush(ds);
     } else {
       if (pending_mdsmap.get_enabled()) {
-        const char *md_pool_name = mon->osdmon()->osdmap.get_pool_name(pending_mdsmap.metadata_pool);
-        assert(md_pool_name != NULL);
+        const string &md_pool_name = mon->osdmon()->osdmap.get_pool_name(pending_mdsmap.metadata_pool);
         
         ds << "name: " << pending_mdsmap.fs_name << ", metadata pool: " << md_pool_name << ", data pools: [";
         for (std::set<int64_t>::iterator dpi = pending_mdsmap.data_pools.begin();
            dpi != pending_mdsmap.data_pools.end(); ++dpi) {
-          const char *pool_name = mon->osdmon()->osdmap.get_pool_name(*dpi);
-          assert(pool_name != NULL);
+          const string &pool_name = mon->osdmon()->osdmap.get_pool_name(*dpi);
           ds << pool_name << " ";
         }
         ds << "]" << std::endl;
@@ -933,8 +929,7 @@ bool MDSMonitor::management_command(
       r = -ENOENT;
       return true;
     } else if (p->is_erasure()) {
-      const char *pn = mon->osdmon()->osdmap.get_pool_name(data);
-      assert(pn != NULL);
+      const string& pn = mon->osdmon()->osdmap.get_pool_name(data);
       ss << "pool '" << pn << "' (id '" << data << "')"
          << " is an erasure-code pool";
       r = -EINVAL;
@@ -947,8 +942,7 @@ bool MDSMonitor::management_command(
       r = -ENOENT;
       return true;
     } else if (p->is_erasure()) {
-      const char *pn = mon->osdmon()->osdmap.get_pool_name(metadata);
-      assert(pn != NULL);
+      const string& pn = mon->osdmon()->osdmap.get_pool_name(metadata);
       ss << "pool '" << pn << "' (id '" << metadata << "')"
          << " is an erasure-code pool";
       r = -EINVAL;
index dd729f064aa62b7868834e66e605a1396a376703..0c051660afd6dfeaff0b6382708f5c7d78cee75f 100644 (file)
@@ -3005,7 +3005,7 @@ bool OSDMonitor::update_pools_status()
     pool_stat_t& stats = mon->pgmon()->pg_map.pg_pool_sum[it->first];
     object_stat_sum_t& sum = stats.stats.sum;
     const pg_pool_t &pool = it->second;
-    const char *pool_name = osdmap.get_pool_name(it->first);
+    const string& pool_name = osdmap.get_pool_name(it->first);
 
     bool pool_is_full =
       (pool.quota_max_bytes > 0 && (uint64_t)sum.num_bytes >= pool.quota_max_bytes) ||
@@ -3056,7 +3056,7 @@ void OSDMonitor::get_pools_health(
     pool_stat_t& stats = mon->pgmon()->pg_map.pg_pool_sum[it->first];
     object_stat_sum_t& sum = stats.stats.sum;
     const pg_pool_t &pool = it->second;
-    const char *pool_name = osdmap.get_pool_name(it->first);
+    const string& pool_name = osdmap.get_pool_name(it->first);
 
     if (pool.get_flags() & pg_pool_t::FLAG_FULL) {
       // uncomment these asserts if/when we update the FULL flag on pg_stat update
@@ -6137,7 +6137,7 @@ bool OSDMonitor::prepare_pool_op_create(MPoolOp *m)
 int OSDMonitor::_check_remove_pool(int64_t pool, const pg_pool_t *p,
                                   ostream *ss)
 {
-  string poolstr = osdmap.get_pool_name(pool);
+  const string& poolstr = osdmap.get_pool_name(pool);
 
   // If the Pool is in use by CephFS, refuse to delete it
   MDSMap const &pending_mdsmap = mon->mdsmon()->pending_mdsmap;
@@ -6155,9 +6155,7 @@ int OSDMonitor::_check_remove_pool(int64_t pool, const pg_pool_t *p,
   if (!p->tiers.empty()) {
     *ss << "pool '" << poolstr << "' has tiers";
     for(std::set<uint64_t>::iterator i = p->tiers.begin(); i != p->tiers.end(); ++i) {
-      const char *name = osdmap.get_pool_name(*i);
-      assert(name != NULL);
-      *ss << " " << name;
+      *ss << " " << osdmap.get_pool_name(*i);
     }
     return -EBUSY;
   }
index ca8142dd500b42492bad7d6bad82229bec24dc5d..d6ff07225761e8959a0b0b2986aeac4bfdb9cade 100644 (file)
@@ -1304,7 +1304,7 @@ void PGMonitor::dump_pool_stats(stringstream &ss, Formatter *f, bool verbose)
     int64_t pool_id = p->first;
     if ((pool_id < 0) || (pg_map.pg_pool_sum.count(pool_id) == 0))
       continue;
-    string pool_name = osdmap.get_pool_name(pool_id);
+    const string& pool_name = osdmap.get_pool_name(pool_id);
     pool_stat_t &stat = pg_map.pg_pool_sum[pool_id];
 
     const pg_pool_t *pool = osdmap.get_pg_pool(pool_id);
@@ -2010,7 +2010,7 @@ void PGMonitor::get_health(list<pair<health_status_t,string> >& summary,
        !pg_map.pg_pool_sum.count(p->first))
       continue;
     bool nearfull = false;
-    const char *name = mon->osdmon()->osdmap.get_pool_name(p->first);
+    const string& name = mon->osdmon()->osdmap.get_pool_name(p->first);
     const pool_stat_t& st = pg_map.get_pg_pool_sum_stat(p->first);
     uint64_t ratio = p->second.cache_target_full_ratio_micro +
       ((1000000 - p->second.cache_target_full_ratio_micro) *
index 0c48889f1f5fb9514149f2e631a7cfbb3ff2fda9..aafadb6b6c0e0eddfaa5d8f2556829342298e3e5 100644 (file)
@@ -702,11 +702,10 @@ public:
   const map<int64_t,pg_pool_t>& get_pools() const {
     return pools;
   }
-  const char *get_pool_name(int64_t p) const {
+  const string& get_pool_name(int64_t p) const {
     map<int64_t, string>::const_iterator i = pool_name.find(p);
-    if (i != pool_name.end())
-      return i->second.c_str();
-    return 0;
+    assert(i != pool_name.end());
+    return i->second;
   }
   bool have_pg_pool(int64_t p) const {
     return pools.count(p);
index 79fd9dbd2d0c3a1bf28a1021f04691dc95b90b36..62278dac115e0acf40d60264ce1e8c774e65ef91 100644 (file)
@@ -170,11 +170,8 @@ struct PGPool {
   interval_set<snapid_t> cached_removed_snaps;      // current removed_snaps set
   interval_set<snapid_t> newly_removed_snaps;  // newly removed in the last epoch
 
-  PGPool(int64_t i, const char *_name, uint64_t au) :
-    id(i), auid(au) {
-    if (_name)
-      name = _name;
-  }
+  PGPool(int64_t i, const string& _name, uint64_t au)
+    : id(i), name(_name), auid(au) { }
 
   void update(OSDMapRef map);
 };