return r;
}
- return objecter->with_osdmap(std::mem_fn(&OSDMap::lookup_pg_pool_name),
- name);
+ int64_t ret = objecter->with_osdmap(std::mem_fn(&OSDMap::lookup_pg_pool_name),
+ name);
+ if (-ENOENT == ret) {
+ // Make sure we have the latest map
+ int r = wait_for_latest_osdmap();
+ if (r < 0)
+ return r;
+ ret = objecter->with_osdmap(std::mem_fn(&OSDMap::lookup_pg_pool_name),
+ name);
+ }
+
+ return ret;
}
bool librados::RadosClient::pool_requires_alignment(int64_t pool_id)
{
int64_t poolid = lookup_pool(name);
if (poolid < 0) {
- // Make sure we have the latest map
- int r = wait_for_latest_osdmap();
- if (r < 0)
- return r;
-
- poolid = lookup_pool(name);
- if (poolid < 0) {
- return (int)poolid;
- }
+ return (int)poolid;
}
*io = new librados::IoCtxImpl(this, objecter, poolid, CEPH_NOSNAP);