From: Prasanna Kumar Kalever Date: Fri, 21 Mar 2025 08:45:05 +0000 (+0530) Subject: cleanup: avoid passing last_local_snap_id to unlink_group_snapshots X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=69b8fce7d6cede3d96af0e3f0903358c15abb763;p=ceph-ci.git 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 --- diff --git a/src/tools/rbd_mirror/group_replayer/Replayer.cc b/src/tools/rbd_mirror/group_replayer/Replayer.cc index 86bacbcf5be..57ab0d8b902 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 6ba91b84ed2..3e4f2f2e9e8 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,