template <typename I>
DeepCopyRequest<I>::DeepCopyRequest(I *src_image_ctx, I *dst_image_ctx,
- librados::snap_t snap_id_start,
- librados::snap_t snap_id_end, bool flatten,
+ librados::snap_t src_snap_id_start,
+ librados::snap_t src_snap_id_end,
+ librados::snap_t dst_snap_id_start,
+ bool flatten,
const ObjectNumber &object_number,
ContextWQ *work_queue, SnapSeqs *snap_seqs,
ProgressContext *prog_ctx,
Context *on_finish)
: RefCountedObject(dst_image_ctx->cct), m_src_image_ctx(src_image_ctx),
- m_dst_image_ctx(dst_image_ctx), m_snap_id_start(snap_id_start),
- m_snap_id_end(snap_id_end), m_flatten(flatten),
- m_object_number(object_number), m_work_queue(work_queue),
- m_snap_seqs(snap_seqs), m_prog_ctx(prog_ctx), m_on_finish(on_finish),
- m_cct(dst_image_ctx->cct),
+ m_dst_image_ctx(dst_image_ctx), m_src_snap_id_start(src_snap_id_start),
+ m_src_snap_id_end(src_snap_id_end), m_dst_snap_id_start(dst_snap_id_start),
+ m_flatten(flatten), m_object_number(object_number),
+ m_work_queue(work_queue), m_snap_seqs(snap_seqs), m_prog_ctx(prog_ctx),
+ m_on_finish(on_finish), m_cct(dst_image_ctx->cct),
m_lock(ceph::make_mutex(unique_lock_name("DeepCopyRequest::m_lock", this))) {
}
Context *ctx = create_context_callback<
DeepCopyRequest<I>, &DeepCopyRequest<I>::handle_copy_snapshots>(this);
m_snapshot_copy_request = SnapshotCopyRequest<I>::create(
- m_src_image_ctx, m_dst_image_ctx, m_snap_id_end, m_flatten, m_work_queue,
- m_snap_seqs, ctx);
+ m_src_image_ctx, m_dst_image_ctx, m_src_snap_id_end, m_flatten,
+ m_work_queue, m_snap_seqs, ctx);
m_snapshot_copy_request->get();
m_lock.unlock();
return;
}
- if (m_snap_id_end == CEPH_NOSNAP) {
+ if (m_src_snap_id_end == CEPH_NOSNAP) {
(*m_snap_seqs)[CEPH_NOSNAP] = CEPH_NOSNAP;
}
Context *ctx = create_context_callback<
DeepCopyRequest<I>, &DeepCopyRequest<I>::handle_copy_image>(this);
m_image_copy_request = ImageCopyRequest<I>::create(
- m_src_image_ctx, m_dst_image_ctx, m_snap_id_start, m_snap_id_end,
- m_flatten, m_object_number, *m_snap_seqs, m_prog_ctx, ctx);
+ m_src_image_ctx, m_dst_image_ctx, m_src_snap_id_start, m_src_snap_id_end,
+ m_flatten, m_object_number, *m_snap_seqs, m_prog_ctx, ctx);
m_image_copy_request->get();
m_lock.unlock();
send_copy_metadata();
return;
}
- if (m_snap_id_end == CEPH_NOSNAP) {
+ if (m_src_snap_id_end == CEPH_NOSNAP) {
m_dst_image_ctx->image_lock.unlock_shared();
m_dst_image_ctx->owner_lock.unlock_shared();
send_refresh_object_map();
handle_copy_object_map(r);
finish_op_ctx->complete(0);
});
- ceph_assert(m_snap_seqs->count(m_snap_id_end) > 0);
- librados::snap_t copy_snap_id = (*m_snap_seqs)[m_snap_id_end];
+ ceph_assert(m_snap_seqs->count(m_src_snap_id_end) > 0);
+ librados::snap_t copy_snap_id = (*m_snap_seqs)[m_src_snap_id_end];
m_dst_image_ctx->object_map->rollback(copy_snap_id, ctx);
m_dst_image_ctx->image_lock.unlock_shared();
m_dst_image_ctx->owner_lock.unlock_shared();
int DeepCopyRequest<I>::validate_copy_points() {
std::shared_lock image_locker{m_src_image_ctx->image_lock};
- if (m_snap_id_start != 0 &&
- m_src_image_ctx->snap_info.find(m_snap_id_start) ==
+ if (m_src_snap_id_start != 0 &&
+ m_src_image_ctx->snap_info.find(m_src_snap_id_start) ==
m_src_image_ctx->snap_info.end()) {
- lderr(m_cct) << "invalid start snap_id " << m_snap_id_start << dendl;
+ lderr(m_cct) << "invalid start snap_id " << m_src_snap_id_start << dendl;
return -EINVAL;
}
- if (m_snap_id_end != CEPH_NOSNAP &&
- m_src_image_ctx->snap_info.find(m_snap_id_end) ==
+ if (m_src_snap_id_end != CEPH_NOSNAP &&
+ m_src_image_ctx->snap_info.find(m_src_snap_id_end) ==
m_src_image_ctx->snap_info.end()) {
- lderr(m_cct) << "invalid end snap_id " << m_snap_id_end << dendl;
+ lderr(m_cct) << "invalid end snap_id " << m_src_snap_id_end << dendl;
return -EINVAL;
}
public:
static DeepCopyRequest* create(ImageCtxT *src_image_ctx,
ImageCtxT *dst_image_ctx,
- librados::snap_t snap_id_start,
- librados::snap_t snap_id_end, bool flatten,
+ librados::snap_t src_snap_id_start,
+ librados::snap_t src_snap_id_end,
+ librados::snap_t dst_snap_id_start,
+ bool flatten,
const deep_copy::ObjectNumber &object_number,
ContextWQ *work_queue,
SnapSeqs *snap_seqs,
ProgressContext *prog_ctx,
Context *on_finish) {
- return new DeepCopyRequest(src_image_ctx, dst_image_ctx, snap_id_start,
- snap_id_end, flatten, object_number, work_queue,
- snap_seqs, prog_ctx, on_finish);
+ return new DeepCopyRequest(src_image_ctx, dst_image_ctx, src_snap_id_start,
+ src_snap_id_end, dst_snap_id_start, flatten,
+ object_number, work_queue, snap_seqs, prog_ctx,
+ on_finish);
}
DeepCopyRequest(ImageCtxT *src_image_ctx, ImageCtxT *dst_image_ctx,
- librados::snap_t snap_id_start, librados::snap_t snap_id_end,
+ librados::snap_t src_snap_id_start,
+ librados::snap_t src_snap_id_end,
+ librados::snap_t dst_snap_id_start,
bool flatten, const deep_copy::ObjectNumber &object_number,
ContextWQ *work_queue, SnapSeqs *snap_seqs,
ProgressContext *prog_ctx, Context *on_finish);
ImageCtxT *m_src_image_ctx;
ImageCtxT *m_dst_image_ctx;
- librados::snap_t m_snap_id_start;
- librados::snap_t m_snap_id_end;
+ librados::snap_t m_src_snap_id_start;
+ librados::snap_t m_src_snap_id_end;
+ librados::snap_t m_dst_snap_id_start;
bool m_flatten;
deep_copy::ObjectNumber m_object_number;
ContextWQ *m_work_queue;
C_SaferCond cond;
SnapSeqs snap_seqs;
auto req = DeepCopyRequest<I>::create(src, dest, snap_id_start, snap_id_end,
- flatten, boost::none, op_work_queue,
+ 0U, flatten, boost::none, op_work_queue,
&snap_seqs, &prog_ctx, &cond);
req->send();
int r = cond.wait();
librbd::SnapSeqs snap_seqs;
librbd::NoOpProgressContext no_op;
auto request = librbd::DeepCopyRequest<librbd::MockTestImageCtx>::create(
- &mock_src_image_ctx, &mock_dst_image_ctx, 0, CEPH_NOSNAP, false,
+ &mock_src_image_ctx, &mock_dst_image_ctx, 0, CEPH_NOSNAP, 0, false,
boost::none, m_work_queue, &snap_seqs, &no_op, &ctx);
request->send();
ASSERT_EQ(0, ctx.wait());
librbd::SnapSeqs snap_seqs;
librbd::NoOpProgressContext no_op;
auto request = librbd::DeepCopyRequest<librbd::MockTestImageCtx>::create(
- &mock_src_image_ctx, &mock_dst_image_ctx, 0, CEPH_NOSNAP, false,
+ &mock_src_image_ctx, &mock_dst_image_ctx, 0, CEPH_NOSNAP, 0, false,
boost::none, m_work_queue, &snap_seqs, &no_op, &ctx);
request->send();
ASSERT_EQ(-EINVAL, ctx.wait());
librbd::SnapSeqs snap_seqs;
librbd::NoOpProgressContext no_op;
auto request = librbd::DeepCopyRequest<librbd::MockTestImageCtx>::create(
- &mock_src_image_ctx, &mock_dst_image_ctx, 0, CEPH_NOSNAP, false,
+ &mock_src_image_ctx, &mock_dst_image_ctx, 0, CEPH_NOSNAP, 0, false,
boost::none, m_work_queue, &snap_seqs, &no_op, &ctx);
request->send();
ASSERT_EQ(-EINVAL, ctx.wait());
librbd::SnapSeqs snap_seqs;
librbd::NoOpProgressContext no_op;
auto request = librbd::DeepCopyRequest<librbd::MockTestImageCtx>::create(
- &mock_src_image_ctx, &mock_dst_image_ctx, 0, CEPH_NOSNAP, false,
+ &mock_src_image_ctx, &mock_dst_image_ctx, 0, CEPH_NOSNAP, 0, false,
boost::none, m_work_queue, &snap_seqs, &no_op, &ctx);
request->send();
ASSERT_EQ(-EINVAL, ctx.wait());
librbd::SnapSeqs snap_seqs;
librbd::NoOpProgressContext no_op;
auto request = librbd::DeepCopyRequest<librbd::MockTestImageCtx>::create(
- &mock_src_image_ctx, &mock_dst_image_ctx, 0, CEPH_NOSNAP, false,
+ &mock_src_image_ctx, &mock_dst_image_ctx, 0, CEPH_NOSNAP, 0, false,
boost::none, m_work_queue, &snap_seqs, &no_op, &ctx);
request->send();
ASSERT_EQ(-EINVAL, ctx.wait());
librbd::NoOpProgressContext no_op;
auto request = librbd::DeepCopyRequest<librbd::MockTestImageCtx>::create(
&mock_src_image_ctx, &mock_dst_image_ctx, 0, m_src_image_ctx->snap_id,
- false, boost::none, m_work_queue, &snap_seqs, &no_op, &ctx);
+ 0, false, boost::none, m_work_queue, &snap_seqs, &no_op, &ctx);
request->send();
ASSERT_EQ(0, ctx.wait());
}
librbd::NoOpProgressContext no_op;
auto request = librbd::DeepCopyRequest<librbd::MockTestImageCtx>::create(
&mock_src_image_ctx, &mock_dst_image_ctx, 0, m_src_image_ctx->snap_id,
- false, boost::none, m_work_queue, &snap_seqs, &no_op, &ctx);
+ 0, false, boost::none, m_work_queue, &snap_seqs, &no_op, &ctx);
request->send();
ASSERT_EQ(-EINVAL, ctx.wait());
}
static DeepCopyRequest* create(
librbd::MockTestImageCtx *src_image_ctx,
librbd::MockTestImageCtx *dst_image_ctx,
- librados::snap_t snap_id_start, librados::snap_t snap_id_end,
- bool flatten, const librbd::deep_copy::ObjectNumber &object_number,
+ librados::snap_t src_snap_id_start, librados::snap_t src_snap_id_end,
+ librados::snap_t dst_snap_id_start, bool flatten,
+ const librbd::deep_copy::ObjectNumber &object_number,
ContextWQ *work_queue, SnapSeqs *snap_seqs, ProgressContext *prog_ctx,
Context *on_finish) {
ceph_assert(s_instance != nullptr);
m_image_copy_prog_ctx = new ImageCopyProgressContext(this);
m_image_copy_request = librbd::DeepCopyRequest<I>::create(
m_remote_image_ctx, m_local_image_ctx, snap_id_start, snap_id_end,
- false, object_number, m_threads->work_queue, &m_snap_seqs_copy,
+ 0, false, object_number, m_threads->work_queue, &m_snap_seqs_copy,
m_image_copy_prog_ctx, ctx);
m_image_copy_request->get();
m_lock.unlock();