| 35 | |
| 36 | template <typename I> |
| 37 | ObjectCopyRequest<I>::ObjectCopyRequest(I *src_image_ctx, |
| 38 | I *dst_image_ctx, |
| 39 | librados::snap_t src_snap_id_start, |
| 40 | librados::snap_t dst_snap_id_start, |
| 41 | const SnapMap &snap_map, |
| 42 | uint64_t dst_object_number, |
| 43 | uint32_t flags, Handler* handler, |
| 44 | Context *on_finish) |
| 45 | : m_src_image_ctx(src_image_ctx), |
| 46 | m_dst_image_ctx(dst_image_ctx), m_cct(dst_image_ctx->cct), |
| 47 | m_src_snap_id_start(src_snap_id_start), |
| 48 | m_dst_snap_id_start(dst_snap_id_start), m_snap_map(snap_map), |
| 49 | m_dst_object_number(dst_object_number), m_flags(flags), |
| 50 | m_handler(handler), m_on_finish(on_finish) { |
| 51 | ceph_assert(src_image_ctx->data_ctx.is_valid()); |
| 52 | ceph_assert(dst_image_ctx->data_ctx.is_valid()); |
| 53 | ceph_assert(!m_snap_map.empty()); |
| 54 | |
| 55 | m_src_async_op = new io::AsyncOperation(); |
| 56 | m_src_async_op->start_op(*get_image_ctx(m_src_image_ctx)); |
| 57 | |
| 58 | m_src_io_ctx.dup(m_src_image_ctx->data_ctx); |
| 59 | m_dst_io_ctx.dup(m_dst_image_ctx->data_ctx); |
| 60 | |
| 61 | m_dst_oid = m_dst_image_ctx->get_object_name(dst_object_number); |
| 62 | |
| 63 | ldout(m_cct, 20) << "src_image_id=" << m_src_image_ctx->id |
| 64 | << ", dst_image_id=" << m_dst_image_ctx->id |
| 65 | << ", dst_oid=" << m_dst_oid |
| 66 | << ", src_snap_id_start=" << m_src_snap_id_start |
| 67 | << ", dst_snap_id_start=" << m_dst_snap_id_start |
| 68 | << ", snap_map=" << m_snap_map << dendl; |
| 69 | } |
| 70 | |
| 71 | template <typename I> |
| 72 | void ObjectCopyRequest<I>::send() { |
nothing calls this directly
no test coverage detected