#include "librbd/ImageState.h"
#include "librbd/internal.h"
#include "librbd/Operations.h"
+#include "librbd/deep_copy/Handler.h"
#include "librbd/deep_copy/ImageCopyRequest.h"
#include "librbd/deep_copy/ObjectCopyRequest.h"
#include "librbd/image/CloseRequest.h"
librados::snap_t src_snap_id_start,
librados::snap_t dst_snap_id_start,
const SnapMap &snap_map,
- uint64_t object_number, bool flatten, Context *on_finish) {
+ uint64_t object_number, bool flatten, Handler* handler,
+ Context *on_finish) {
ceph_assert(s_instance != nullptr);
std::lock_guard locker{s_instance->lock};
s_instance->snap_map = &snap_map;
expect_get_image_size(mock_src_image_ctx, 0);
expect_object_copy_send(mock_object_copy_request);
- librbd::NoOpProgressContext no_op;
+ librbd::deep_copy::NoOpHandler no_op;
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,
expect_get_image_size(mock_src_image_ctx, 1 << m_src_image_ctx->order);
expect_get_image_size(mock_src_image_ctx, 0);
- librbd::NoOpProgressContext no_op;
+ librbd::deep_copy::NoOpHandler no_op;
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,
EXPECT_CALL(mock_object_copy_request, send()).Times(object_count);
- class ProgressContext : public librbd::ProgressContext {
+ class Handler : public librbd::deep_copy::NoOpHandler {
public:
uint64_t object_count;
librbd::deep_copy::ObjectNumber expected_object_number;
- ProgressContext(uint64_t object_count)
+ Handler(uint64_t object_count)
: object_count(object_count) {
}
return 0;
}
- } prog_ctx(object_count);
+ } handler(object_count);
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,
0, snap_id_end, 0, false, boost::none,
- m_snap_seqs, &prog_ctx, &ctx);
+ m_snap_seqs, &handler, &ctx);
request->send();
std::map<uint64_t, Context*> copy_contexts;
expect_get_image_size(mock_src_image_ctx, 0);
expect_object_copy_send(mock_object_copy_request);
- librbd::NoOpProgressContext no_op;
+ librbd::deep_copy::NoOpHandler no_op;
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,
expect_get_image_size(mock_src_image_ctx, 0);
expect_object_copy_send(mock_object_copy_request);
- librbd::NoOpProgressContext no_op;
+ librbd::deep_copy::NoOpHandler no_op;
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,
expect_get_image_size(mock_src_image_ctx, 0);
expect_object_copy_send(mock_object_copy_request);
- librbd::NoOpProgressContext no_op;
+ librbd::deep_copy::NoOpHandler no_op;
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,
EXPECT_CALL(mock_object_copy_request, send()).Times(6);
- struct ProgressContext : public librbd::ProgressContext {
+ struct Handler : public librbd::deep_copy::NoOpHandler {
librbd::deep_copy::ObjectNumber object_number;
int update_progress(uint64_t object_no, uint64_t end_object_no) override {
object_number = object_number ? *object_number + 1 : 0;
return 0;
}
- } prog_ctx;
+ } handler;
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,
0, snap_id_end, 0, false, boost::none,
- m_snap_seqs, &prog_ctx, &ctx);
+ m_snap_seqs, &handler, &ctx);
request->send();
ASSERT_EQ(m_snap_map, wait_for_snap_map(mock_object_copy_request));
cancel_ctx->complete(0);
ASSERT_EQ(-ECANCELED, ctx.wait());
- ASSERT_EQ(5u, prog_ctx.object_number.get());
+ ASSERT_EQ(5u, handler.object_number.get());
}
TEST_F(TestMockDeepCopyImageCopyRequest, MissingSnap) {
librbd::MockTestImageCtx mock_src_image_ctx(*m_src_image_ctx);
librbd::MockTestImageCtx mock_dst_image_ctx(*m_dst_image_ctx);
- librbd::NoOpProgressContext no_op;
+ librbd::deep_copy::NoOpHandler no_op;
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,
librbd::MockTestImageCtx mock_src_image_ctx(*m_src_image_ctx);
librbd::MockTestImageCtx mock_dst_image_ctx(*m_dst_image_ctx);
- librbd::NoOpProgressContext no_op;
+ librbd::deep_copy::NoOpHandler no_op;
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,
librbd::MockTestImageCtx mock_src_image_ctx(*m_src_image_ctx);
librbd::MockTestImageCtx mock_dst_image_ctx(*m_dst_image_ctx);
- librbd::NoOpProgressContext no_op;
+ librbd::deep_copy::NoOpHandler no_op;
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,
librbd::MockTestImageCtx mock_src_image_ctx(*m_src_image_ctx);
librbd::MockTestImageCtx mock_dst_image_ctx(*m_dst_image_ctx);
- librbd::NoOpProgressContext no_op;
+ librbd::deep_copy::NoOpHandler no_op;
C_SaferCond ctx;
auto request = new MockImageCopyRequest(&mock_src_image_ctx,
&mock_dst_image_ctx,