From 17d6a993fc17d533460c5f40f3908c708e057c18 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 23 May 2024 18:45:17 +0200 Subject: Merging upstream version 18.2.3. Signed-off-by: Daniel Baumann --- src/librbd/object_map/DiffRequest.h | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'src/librbd/object_map/DiffRequest.h') diff --git a/src/librbd/object_map/DiffRequest.h b/src/librbd/object_map/DiffRequest.h index e83a1629e..740f4e02a 100644 --- a/src/librbd/object_map/DiffRequest.h +++ b/src/librbd/object_map/DiffRequest.h @@ -21,21 +21,20 @@ namespace object_map { template class DiffRequest { public: - static DiffRequest* create(ImageCtxT* image_ctx, uint64_t snap_id_start, - uint64_t snap_id_end, + static DiffRequest* create(ImageCtxT* image_ctx, + uint64_t snap_id_start, uint64_t snap_id_end, + uint64_t start_object_no, uint64_t end_object_no, BitVector<2>* object_diff_state, Context* on_finish) { return new DiffRequest(image_ctx, snap_id_start, snap_id_end, - object_diff_state, on_finish); + start_object_no, end_object_no, object_diff_state, + on_finish); } - DiffRequest(ImageCtxT* image_ctx, uint64_t snap_id_start, - uint64_t snap_id_end, BitVector<2>* object_diff_state, - Context* on_finish) - : m_image_ctx(image_ctx), m_snap_id_start(snap_id_start), - m_snap_id_end(snap_id_end), m_object_diff_state(object_diff_state), - m_on_finish(on_finish) { - } + DiffRequest(ImageCtxT* image_ctx, + uint64_t snap_id_start, uint64_t snap_id_end, + uint64_t start_object_no, uint64_t end_object_no, + BitVector<2>* object_diff_state, Context* on_finish); void send(); @@ -58,6 +57,8 @@ private: ImageCtxT* m_image_ctx; uint64_t m_snap_id_start; uint64_t m_snap_id_end; + uint64_t m_start_object_no; + uint64_t m_end_object_no; BitVector<2>* m_object_diff_state; Context* m_on_finish; @@ -67,11 +68,13 @@ private: uint64_t m_current_size = 0; - BitVector<2> m_object_map; - bool m_object_diff_state_valid = false; - bufferlist m_out_bl; + bool is_diff_iterate() const; + + int prepare_for_object_map(); + int process_object_map(const BitVector<2>& object_map); + void load_object_map(std::shared_lock* image_locker); void handle_load_object_map(int r); -- cgit v1.2.3