using util::create_async_context_callback;
template <typename I>
-CloneRequest<I>::CloneRequest(ConfigProxy& config,
- IoCtx& parent_io_ctx,
- const std::string& parent_image_id,
- const std::string& parent_snap_name,
- uint64_t parent_snap_id,
- IoCtx &c_ioctx,
- const std::string &c_name,
- const std::string &c_id,
- ImageOptions c_options,
- cls::rbd::MirrorImageMode mirror_image_mode,
- const std::string &non_primary_global_image_id,
- const std::string &primary_mirror_uuid,
- ContextWQ *op_work_queue, Context *on_finish)
+CloneRequest<I>::CloneRequest(
+ ConfigProxy& config,
+ IoCtx& parent_io_ctx,
+ const std::string& parent_image_id,
+ const std::string& parent_snap_name,
+ const cls::rbd::SnapshotNamespace& parent_snap_namespace,
+ uint64_t parent_snap_id,
+ IoCtx &c_ioctx,
+ const std::string &c_name,
+ const std::string &c_id,
+ ImageOptions c_options,
+ cls::rbd::MirrorImageMode mirror_image_mode,
+ const std::string &non_primary_global_image_id,
+ const std::string &primary_mirror_uuid,
+ ContextWQ *op_work_queue, Context *on_finish)
: m_config(config), m_parent_io_ctx(parent_io_ctx),
m_parent_image_id(parent_image_id), m_parent_snap_name(parent_snap_name),
+ m_parent_snap_namespace(parent_snap_namespace),
m_parent_snap_id(parent_snap_id), m_ioctx(c_ioctx), m_name(c_name),
m_id(c_id), m_opts(c_options), m_mirror_image_mode(mirror_image_mode),
m_non_primary_global_image_id(non_primary_global_image_id),
m_parent_io_ctx, true);
} else {
m_parent_image_ctx = I::create("", m_parent_image_id,
- m_parent_snap_name.c_str(), m_parent_io_ctx,
+ m_parent_snap_name.c_str(),
+ m_parent_io_ctx,
true);
+ m_parent_image_ctx->snap_namespace = m_parent_snap_namespace;
}
Context *ctx = create_context_callback<
template <typename ImageCtxT = ImageCtx>
class CloneRequest {
public:
- static CloneRequest *create(ConfigProxy& config, IoCtx& parent_io_ctx,
- const std::string& parent_image_id,
- const std::string& parent_snap_name,
- uint64_t parent_snap_id,
- IoCtx &c_ioctx, const std::string &c_name,
- const std::string &c_id, ImageOptions c_options,
- cls::rbd::MirrorImageMode mirror_image_mode,
- const std::string &non_primary_global_image_id,
- const std::string &primary_mirror_uuid,
- ContextWQ *op_work_queue, Context *on_finish) {
+ static CloneRequest *create(
+ ConfigProxy& config, IoCtx& parent_io_ctx,
+ const std::string& parent_image_id,
+ const std::string& parent_snap_name,
+ const cls::rbd::SnapshotNamespace& parent_snap_namespace,
+ uint64_t parent_snap_id,
+ IoCtx &c_ioctx, const std::string &c_name,
+ const std::string &c_id, ImageOptions c_options,
+ cls::rbd::MirrorImageMode mirror_image_mode,
+ const std::string &non_primary_global_image_id,
+ const std::string &primary_mirror_uuid,
+ ContextWQ *op_work_queue, Context *on_finish) {
return new CloneRequest(config, parent_io_ctx, parent_image_id,
- parent_snap_name, parent_snap_id, c_ioctx, c_name,
- c_id, c_options, mirror_image_mode,
- non_primary_global_image_id, primary_mirror_uuid,
- op_work_queue, on_finish);
+ parent_snap_name, parent_snap_namespace,
+ parent_snap_id, c_ioctx, c_name, c_id, c_options,
+ mirror_image_mode, non_primary_global_image_id,
+ primary_mirror_uuid, op_work_queue, on_finish);
}
CloneRequest(ConfigProxy& config, IoCtx& parent_io_ctx,
const std::string& parent_image_id,
const std::string& parent_snap_name,
+ const cls::rbd::SnapshotNamespace& parent_snap_namespace,
uint64_t parent_snap_id,
IoCtx &c_ioctx, const std::string &c_name,
const std::string &c_id, ImageOptions c_options,
IoCtx &m_parent_io_ctx;
std::string m_parent_image_id;
std::string m_parent_snap_name;
+ cls::rbd::SnapshotNamespace m_parent_snap_namespace;
uint64_t m_parent_snap_id;
ImageCtxT *m_parent_image_ctx;
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);
C_SaferCond ctx;
ImageOptions clone_opts;
- auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", 123,
+ auto req = new MockCloneRequest(m_cct->_conf, m_ioctx, "parent id", "", {}, 123,
m_ioctx, "clone name", "clone id", clone_opts,
cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", "",
image_ctx->op_work_queue, &ctx);