namespace image_replayer {
template <typename I>
-CreateImageRequest<I>::CreateImageRequest(Threads<I>* threads,
- librados::IoCtx &local_io_ctx,
- const std::string &global_image_id,
- const std::string &remote_mirror_uuid,
- const std::string &local_image_name,
- const std::string &local_image_id,
- I *remote_image_ctx,
- Context *on_finish)
+CreateImageRequest<I>::CreateImageRequest(
+ Threads<I>* threads,
+ librados::IoCtx &local_io_ctx,
+ const std::string &global_image_id,
+ const std::string &remote_mirror_uuid,
+ const std::string &local_image_name,
+ const std::string &local_image_id,
+ I *remote_image_ctx,
+ cls::rbd::MirrorImageMode mirror_image_mode,
+ Context *on_finish)
: m_threads(threads), m_local_io_ctx(local_io_ctx),
m_global_image_id(global_image_id),
m_remote_mirror_uuid(remote_mirror_uuid),
m_local_image_name(local_image_name), m_local_image_id(local_image_id),
- m_remote_image_ctx(remote_image_ctx), m_on_finish(on_finish) {
+ m_remote_image_ctx(remote_image_ctx),
+ m_mirror_image_mode(mirror_image_mode), m_on_finish(on_finish) {
}
template <typename I>
auto req = librbd::image::CreateRequest<I>::create(
config, m_local_io_ctx, m_local_image_name, m_local_image_id,
- m_remote_image_ctx->size, image_options, false,
- cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, m_global_image_id,
- m_remote_mirror_uuid, m_remote_image_ctx->op_work_queue, ctx);
+ m_remote_image_ctx->size, image_options, false, m_mirror_image_mode,
+ m_global_image_id, m_remote_mirror_uuid, m_remote_image_ctx->op_work_queue,
+ ctx);
req->send();
}
librbd::image::CloneRequest<I> *req = librbd::image::CloneRequest<I>::create(
config, m_local_parent_io_ctx, m_local_parent_spec.image_id, snap_name,
CEPH_NOSNAP, m_local_io_ctx, m_local_image_name, m_local_image_id, opts,
- cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, m_global_image_id,
- m_remote_mirror_uuid, m_remote_image_ctx->op_work_queue, ctx);
+ m_mirror_image_mode, m_global_image_id, m_remote_mirror_uuid,
+ m_remote_image_ctx->op_work_queue, ctx);
req->send();
}
#include "include/types.h"
#include "include/rados/librados.hpp"
#include "cls/journal/cls_journal_types.h"
+#include "cls/rbd/cls_rbd_types.h"
#include "librbd/Types.h"
#include "librbd/journal/TypeTraits.h"
#include <string>
const std::string &local_image_name,
const std::string &local_image_id,
ImageCtxT *remote_image_ctx,
+ cls::rbd::MirrorImageMode mirror_image_mode,
Context *on_finish) {
return new CreateImageRequest(threads, local_io_ctx, global_image_id,
remote_mirror_uuid, local_image_name,
- local_image_id, remote_image_ctx, on_finish);
+ local_image_id, remote_image_ctx,
+ mirror_image_mode, on_finish);
}
CreateImageRequest(Threads<ImageCtxT> *threads, librados::IoCtx &local_io_ctx,
const std::string &local_image_name,
const std::string &local_image_id,
ImageCtxT *remote_image_ctx,
+ cls::rbd::MirrorImageMode mirror_image_mode,
Context *on_finish);
void send();
std::string m_local_image_name;
std::string m_local_image_id;
ImageCtxT *m_remote_image_ctx;
+ cls::rbd::MirrorImageMode m_mirror_image_mode;
Context *m_on_finish;
librados::IoCtx m_remote_parent_io_ctx;