#include "librbd/io/Types.h"
#include <list>
#include <map>
+#include <optional>
#include <string>
class Context;
librados::snap_t src_snap_id_start,
librados::snap_t dst_snap_id_start,
const SnapMap &snap_map,
- uint64_t object_number, bool flatten,
+ uint64_t object_number, uint32_t flags,
Handler* handler, Context *on_finish) {
return new ObjectCopyRequest(src_image_ctx, dst_image_ctx,
src_snap_id_start, dst_snap_id_start, snap_map,
- object_number, flatten, handler, on_finish);
+ object_number, flags, handler, on_finish);
}
ObjectCopyRequest(ImageCtxT *src_image_ctx, ImageCtxT *dst_image_ctx,
librados::snap_t src_snap_id_start,
librados::snap_t dst_snap_id_start, const SnapMap &snap_map,
- uint64_t object_number, bool flatten, Handler* handler,
+ uint64_t object_number, uint32_t flags, Handler* handler,
Context *on_finish);
void send();
* | /-----------\
* | | | (repeat for each snapshot)
* v v |
- * WRITE_OBJECT --------/
- * |
+ * UPDATE_OBJECT_MAP ---/ (skip if object
+ * | map disabled)
* | /-----------\
* | | | (repeat for each snapshot)
* v v |
- * UPDATE_OBJECT_MAP ---/ (skip if object
- * | map disabled)
+ * WRITE_OBJECT --------/
+ * |
* v
* <finish>
*
librados::snap_t m_dst_snap_id_start;
SnapMap m_snap_map;
uint64_t m_dst_object_number;
- bool m_flatten;
+ uint32_t m_flags;
Handler* m_handler;
Context *m_on_finish;
std::map<librados::snap_t, interval_set<uint64_t>> m_dst_zero_interval;
std::map<librados::snap_t, uint8_t> m_dst_object_state;
std::map<librados::snap_t, bool> m_dst_object_may_exist;
+ std::optional<uint64_t> m_dst_object_size = std::nullopt;
bufferlist m_read_from_parent_data;
io::AsyncOperation* m_src_async_op = nullptr;
void send_read_from_parent();
void handle_read_from_parent(int r);
- void send_write_object();
- void handle_write_object(int r);
-
void send_update_object_map();
void handle_update_object_map(int r);
+ void send_write_object();
+ void handle_write_object(int r);
+
Context *start_lock_op(ceph::shared_mutex &owner_lock, int* r);
uint64_t src_to_dst_object_offset(uint64_t objectno, uint64_t offset);