const std::string& group_header_oid) {
CephContext *cct = (CephContext *)group_ioctx.cct();
+ std::vector<librados::IoCtx> ioctxs;
+ std::vector<librbd::ImageCtx*> ictxs;
std::vector<C_SaferCond*> on_finishes;
int r, ret_code;
- std::vector<librbd::ImageCtx*> ictxs;
-
cls::rbd::GroupSnapshotNamespace ne{group_ioctx.get_id(), group_id,
group_snap.id};
int snap_count = group_snap.snaps.size();
for (int i = 0; i < snap_count; ++i) {
- librbd::IoCtx image_io_ctx;
+ librados::IoCtx image_io_ctx;
r = util::create_ioctx(group_ioctx, "image", group_snap.snaps[i].pool, {},
&image_io_ctx);
if (r < 0) {
return r;
}
+ ioctxs.push_back(std::move(image_io_ctx));
+ }
+ for (int i = 0; i < snap_count; ++i) {
librbd::ImageCtx* image_ctx = new ImageCtx("", group_snap.snaps[i].image_id,
- nullptr, image_io_ctx, false);
+ nullptr, ioctxs[i], false);
C_SaferCond* on_finish = new C_SaferCond;
const std::string& group_id,
ProgressContext& pctx) {
CephContext *cct = (CephContext *)group_ioctx.cct();
+ std::vector<librados::IoCtx> ioctxs;
+ std::vector<librbd::ImageCtx*> ictxs;
std::vector<C_SaferCond*> on_finishes;
int r, ret_code;
- std::vector<librbd::ImageCtx*> ictxs;
-
cls::rbd::GroupSnapshotNamespace ne{group_ioctx.get_id(), group_id,
group_snap.id};
if (r < 0) {
return r;
}
+ ioctxs.push_back(std::move(image_io_ctx));
+ }
+ for (int i = 0; i < snap_count; ++i) {
librbd::ImageCtx* image_ctx = new ImageCtx("", group_snap.snaps[i].image_id,
- nullptr, image_io_ctx, false);
+ nullptr, ioctxs[i], false);
C_SaferCond* on_finish = new C_SaferCond;