From 9ff61f36509056140527a671de7b657a4f22d21f Mon Sep 17 00:00:00 2001 From: Prasanna Kumar Kalever Date: Fri, 21 Mar 2025 14:15:05 +0530 Subject: [PATCH] cleanup: avoid passing last_local_snap_id to unlink_group_snapshots last_local_snap_id can be fetched from m_local_group_snaps.rbegin() Signed-off-by: Prasanna Kumar Kalever --- src/tools/rbd_mirror/group_replayer/Replayer.cc | 15 +++++++++------ src/tools/rbd_mirror/group_replayer/Replayer.h | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/tools/rbd_mirror/group_replayer/Replayer.cc b/src/tools/rbd_mirror/group_replayer/Replayer.cc index 86bacbcf5be04..57ab0d8b90259 100644 --- a/src/tools/rbd_mirror/group_replayer/Replayer.cc +++ b/src/tools/rbd_mirror/group_replayer/Replayer.cc @@ -372,7 +372,6 @@ void Replayer::handle_load_remote_group_snapshots(int r) { } m_in_flight_op_tracker.finish_op(); - auto last_local_snap = m_local_group_snaps.rbegin(); auto last_remote_snap = m_remote_group_snaps.rbegin(); if (r < 0) { // may be remote group is deleted? derr << "error listing remote mirror group snapshots: " << cpp_strerror(r) @@ -395,7 +394,8 @@ void Replayer::handle_load_remote_group_snapshots(int r) { } if (!m_local_group_snaps.empty()) { - unlink_group_snapshots(last_local_snap->id); + unlink_group_snapshots(); + auto last_local_snap = m_local_group_snaps.rbegin(); auto last_local_snap_ns = std::get_if( &last_local_snap->snapshot_namespace); if (last_local_snap_ns && @@ -945,12 +945,15 @@ bool Replayer::prune_all_image_snapshots(cls::rbd::GroupSnapshot *local_snap) } template -void Replayer::unlink_group_snapshots( - const std::string &group_snap_id) { +void Replayer::unlink_group_snapshots() { + if (m_local_group_snaps.empty()) { + return; + } int r; + auto last_local_snap_id = m_local_group_snaps.rbegin()->id; for (auto local_snap = m_local_group_snaps.begin(); local_snap != m_local_group_snaps.end(); ++local_snap) { - if (local_snap->id == group_snap_id) { + if (local_snap->id == last_local_snap_id) { break; } std::unique_lock locker{m_lock}; @@ -977,7 +980,7 @@ void Replayer::unlink_group_snapshots( // If next local snap is end, or if it is the syncing in-progress snap, // then we still need this group snapshot. if (next_local_snap == m_local_group_snaps.end() || - (next_local_snap->id == group_snap_id && + (next_local_snap->id == last_local_snap_id && next_local_snap->state != cls::rbd::GROUP_SNAPSHOT_STATE_COMPLETE)) { break; } diff --git a/src/tools/rbd_mirror/group_replayer/Replayer.h b/src/tools/rbd_mirror/group_replayer/Replayer.h index 6ba91b84ed285..3e4f2f2e9e8bc 100644 --- a/src/tools/rbd_mirror/group_replayer/Replayer.h +++ b/src/tools/rbd_mirror/group_replayer/Replayer.h @@ -152,7 +152,7 @@ private: void remove_mirror_peer_uuid(const std::string &snap_id); bool prune_all_image_snapshots(cls::rbd::GroupSnapshot *local_snap); - void unlink_group_snapshots(const std::string &group_snap_id); + void unlink_group_snapshots(); void create_regular_snapshot( const std::string &group_snap_name, -- 2.39.5