PoolImageIds *pool_image_ids)
{
CephContext *cct = ictx->cct;
- int r = ictx->state->refresh_if_required();
- if (r < 0) {
- return r;
- }
// no children for non-layered or old format image
if (!ictx->test_features(RBD_FEATURE_LAYERING, ictx->snap_lock)) {
// search all pools for children depending on this snapshot
librados::Rados rados(ictx->md_ctx);
std::list<std::pair<int64_t, std::string> > pools;
- r = rados.pool_list2(pools);
+ int r = rados.pool_list2(pools);
if (r < 0) {
lderr(cct) << "error listing pools: " << cpp_strerror(r) << dendl;
return r;
CephContext *cct = ictx->cct;
ldout(cct, 20) << "children flatten " << ictx->name << dendl;
+ int r = ictx->state->refresh_if_required();
+ if (r < 0) {
+ return r;
+ }
+
RWLock::RLocker l(ictx->snap_lock);
snap_t snap_id = ictx->get_snap_id(cls::rbd::UserSnapshotNamespace(), snap_name);
ParentSpec parent_spec(ictx->md_ctx.get_id(), ictx->id, snap_id);
map< pair<int64_t, string>, set<string> > image_info;
- int r = api::Image<>::list_children(ictx, parent_spec, &image_info);
+ r = api::Image<>::list_children(ictx, parent_spec, &image_info);
if (r < 0) {
return r;
}
CephContext *cct = ictx->cct;
ldout(cct, 20) << "children list " << ictx->name << dendl;
+ int r = ictx->state->refresh_if_required();
+ if (r < 0) {
+ return r;
+ }
+
RWLock::RLocker l(ictx->snap_lock);
ParentSpec parent_spec(ictx->md_ctx.get_id(), ictx->id, ictx->snap_id);
map< pair<int64_t, string>, set<string> > image_info;
- int r = api::Image<>::list_children(ictx, parent_spec, &image_info);
+ r = api::Image<>::list_children(ictx, parent_spec, &image_info);
if (r < 0) {
return r;
}