return r;
}
-int librados::RadosClient::pool_get_name(uint64_t pool_id, std::string *s)
+int librados::RadosClient::pool_get_name(uint64_t pool_id, std::string *s, bool wait_latest_map)
{
int r = wait_for_osdmap();
if (r < 0)
return r;
+ retry:
objecter->with_osdmap([&](const OSDMap& o) {
if (!o.have_pg_pool(pool_id)) {
r = -ENOENT;
*s = o.get_pool_name(pool_id);
}
});
+ if (r == -ENOENT && wait_latest_map) {
+ r = wait_for_latest_osdmap();
+ if (r < 0)
+ return r;
+ wait_latest_map = false;
+ goto retry;
+ }
+
return r;
}
uint64_t pool_required_alignment(int64_t pool_id);
int pool_required_alignment2(int64_t pool_id, uint64_t *alignment);
int pool_get_auid(uint64_t pool_id, unsigned long long *auid);
- int pool_get_name(uint64_t pool_id, std::string *auid);
+ int pool_get_name(uint64_t pool_id, std::string *auid, bool wait_latest_map = false);
int pool_list(std::list<std::pair<int64_t, string> >& ls);
int get_pool_stats(std::list<string>& ls, map<string,::pool_stat_t>& result);