CreateNonPrimaryRequest<I>::CreateNonPrimaryRequest(
I* image_ctx, bool demoted, const std::string &primary_mirror_uuid,
uint64_t primary_snap_id, const SnapSeqs& snap_seqs,
- const ImageState &image_state, uint64_t *snap_id, Context *on_finish)
+ int64_t group_pool_id, const std::string &group_id,
+ const std::string &group_snap_id, const ImageState &image_state,
+ uint64_t *snap_id, Context *on_finish)
: m_image_ctx(image_ctx), m_demoted(demoted),
m_primary_mirror_uuid(primary_mirror_uuid),
m_primary_snap_id(primary_snap_id), m_snap_seqs(snap_seqs),
- m_image_state(image_state), m_snap_id(snap_id), m_on_finish(on_finish) {
+ m_group_pool_id(group_pool_id), m_group_id(group_id),
+ m_group_snap_id(group_snap_id), m_image_state(image_state),
+ m_snap_id(snap_id), m_on_finish(on_finish) {
m_default_ns_ctx.dup(m_image_ctx->md_ctx);
m_default_ns_ctx.set_namespace("");
}
ns.mirror_peer_uuids = m_mirror_peer_uuids;
}
ns.snap_seqs = m_snap_seqs;
+ ns.group_spec = {m_group_id, m_group_pool_id};
+ ns.group_snap_id = m_group_snap_id;
ns.complete = is_orphan();
ldout(cct, 15) << "ns=" << ns << dendl;
const std::string &primary_mirror_uuid,
uint64_t primary_snap_id,
const SnapSeqs& snap_seqs,
+ int64_t group_pool_id,
+ const std::string &group_id,
+ const std::string &group_snap_id,
const ImageState &image_state,
uint64_t *snap_id,
Context *on_finish) {
return new CreateNonPrimaryRequest(image_ctx, demoted, primary_mirror_uuid,
- primary_snap_id, snap_seqs, image_state,
- snap_id, on_finish);
+ primary_snap_id, snap_seqs,
+ group_pool_id, group_id, group_snap_id,
+ image_state, snap_id, on_finish);
}
CreateNonPrimaryRequest(ImageCtxT *image_ctx,
const std::string &primary_mirror_uuid,
uint64_t primary_snap_id,
const SnapSeqs& snap_seqs,
+ int64_t group_pool_id,
+ const std::string &group_id,
+ const std::string &group_snap_id,
const ImageState &image_state, uint64_t *snap_id,
Context *on_finish);
*/
ImageCtxT *m_image_ctx;
- bool m_demoted;
- std::string m_primary_mirror_uuid;
- uint64_t m_primary_snap_id;
- SnapSeqs m_snap_seqs;
- ImageState m_image_state;
+ const bool m_demoted;
+ const std::string m_primary_mirror_uuid;
+ const uint64_t m_primary_snap_id;
+ const SnapSeqs m_snap_seqs;
+ const int64_t m_group_pool_id;
+ const std::string m_group_id;
+ const std::string m_group_snap_id;
+ const ImageState m_image_state;
uint64_t *m_snap_id;
Context *m_on_finish;
&PromoteRequest<I>::handle_create_orphan_snapshot>(this);
auto req = CreateNonPrimaryRequest<I>::create(
- m_image_ctx, false, "", CEPH_NOSNAP, {}, {}, nullptr, ctx);
+ m_image_ctx, false, "", CEPH_NOSNAP, {}, -1, {}, {}, {}, nullptr, ctx);
req->send();
}
C_SaferCond ctx;
auto req = new MockCreateNonPrimaryRequest(&mock_image_ctx, false,
- "mirror_uuid", 123, {{1, 2}}, {},
- nullptr, &ctx);
+ "mirror_uuid", 123, {{1, 2}}, -1, {},
+ {}, {}, nullptr, &ctx);
req->send();
ASSERT_EQ(0, ctx.wait());
}
C_SaferCond ctx;
auto req = new MockCreateNonPrimaryRequest(&mock_image_ctx, true,
- "mirror_uuid", 123, {{1, 2}}, {},
- nullptr, &ctx);
+ "mirror_uuid", 123, {{1, 2}}, -1,
+ {}, {}, {}, nullptr, &ctx);
req->send();
ASSERT_EQ(0, ctx.wait());
}
C_SaferCond ctx;
auto req = new MockCreateNonPrimaryRequest(&mock_image_ctx, false,
- "mirror_uuid", 123, {{1, 2}}, {},
- nullptr, &ctx);
+ "mirror_uuid", 123, {{1, 2}}, -1,
+ {}, {}, {}, nullptr, &ctx);
req->send();
ASSERT_EQ(-EINVAL, ctx.wait());
}
C_SaferCond ctx;
auto req = new MockCreateNonPrimaryRequest(&mock_image_ctx, false,
- "mirror_uuid", 123, {{1, 2}}, {},
- nullptr, &ctx);
+ "mirror_uuid", 123, {{1, 2}}, -1,
+ {}, {}, {}, nullptr, &ctx);
req->send();
ASSERT_EQ(-EINVAL, ctx.wait());
}
C_SaferCond ctx;
auto req = new MockCreateNonPrimaryRequest(&mock_image_ctx, false,
- "mirror_uuid", 123, {{1, 2}}, {},
- nullptr, &ctx);
+ "mirror_uuid", 123, {{1, 2}}, -1,
+ {}, {}, {}, nullptr, &ctx);
req->send();
ASSERT_EQ(-EINVAL, ctx.wait());
}
C_SaferCond ctx;
auto req = new MockCreateNonPrimaryRequest(&mock_image_ctx, true,
- "mirror_uuid", 123, {{1, 2}}, {},
- nullptr, &ctx);
+ "mirror_uuid", 123, {{1, 2}}, -1,
+ {}, {}, {}, nullptr, &ctx);
req->send();
ASSERT_EQ(-EPERM, ctx.wait());
}
C_SaferCond ctx;
auto req = new MockCreateNonPrimaryRequest(&mock_image_ctx, false,
- "mirror_uuid", 123, {{1, 2}}, {},
- nullptr, &ctx);
+ "mirror_uuid", 123, {{1, 2}}, -1,
+ {}, {}, {}, nullptr, &ctx);
req->send();
ASSERT_EQ(-EINVAL, ctx.wait());
}
C_SaferCond ctx;
auto req = new MockCreateNonPrimaryRequest(&mock_image_ctx, false,
- "mirror_uuid", 123, {{1, 2}}, {},
- nullptr, &ctx);
+ "mirror_uuid", 123, {{1, 2}}, -1,
+ {}, {}, {}, nullptr, &ctx);
req->send();
ASSERT_EQ(-EINVAL, ctx.wait());
}
const std::string &primary_mirror_uuid,
uint64_t primary_snap_id,
SnapSeqs snap_seqs,
+ int64_t group_pool_id,
+ const std::string &group_id,
+ const std::string &group_snap_id,
const ImageState &image_state,
uint64_t *snap_id,
Context *on_finish) {
const std::string &primary_mirror_uuid,
uint64_t primary_snap_id,
const SnapSeqs& snap_seqs,
+ uint64_t local_group_pool_id,
+ const std::string &local_group_id,
+ const std::string &local_group_snap_id,
const ImageState &image_state,
uint64_t *snap_id,
Context *on_finish) {
auto req = librbd::mirror::snapshot::CreateNonPrimaryRequest<I>::create(
local_image_ctx, m_remote_mirror_snap_ns.is_demoted(),
m_state_builder->remote_mirror_uuid, m_remote_snap_id_end,
- m_local_mirror_snap_ns.snap_seqs, m_image_state, &m_local_snap_id_end, ctx);
+ m_local_mirror_snap_ns.snap_seqs, -1, {}, {}, m_image_state,
+ &m_local_snap_id_end, ctx);
req->send();
}