(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);
} 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);
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);
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;
}
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);
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");
{
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);
}
}
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;
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;
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;
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) ||
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
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;
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;
}
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);
!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) *
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);
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);
};