From: VinayBhaskar-V Date: Fri, 11 Apr 2025 08:46:44 +0000 (+0200) Subject: librbd: don't list snapshots in Group::snap_get_mirror_namespace() X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=73beb6a4f3b5ea921d80bce74d5c3d4f32f2790e;p=ceph.git librbd: don't list snapshots in Group::snap_get_mirror_namespace() It's redundant -- GroupSnapshot struct can be fetched based on the passed group snap ID directly. Signed-off-by: VinayBhaskar-V --- diff --git a/src/librbd/api/Group.cc b/src/librbd/api/Group.cc index 42187a8f9c263..cf2b5363fc627 100644 --- a/src/librbd/api/Group.cc +++ b/src/librbd/api/Group.cc @@ -1304,25 +1304,19 @@ int Group::snap_get_mirror_namespace( return r; } - std::vector cls_group_snaps; - r = group_snap_list(group_ioctx, group_id, false, false, &cls_group_snaps); + auto group_header_oid = librbd::util::group_header_name(group_id); + + cls::rbd::GroupSnapshot group_snap; + r = cls_client::group_snap_get_by_id(&group_ioctx, group_header_oid, snap_id, + &group_snap); if (r < 0) { + lderr(cct) << "failed to retrieve group snapshot: " << cpp_strerror(r) + << dendl; return r; } - const cls::rbd::GroupSnapshot *cls_group_snap_ptr = nullptr; - for (const auto& cls_group_snap : cls_group_snaps) { - if (cls_group_snap.id == snap_id) { - cls_group_snap_ptr = &cls_group_snap; - break; - } - } - if (cls_group_snap_ptr == nullptr) { - return -ENOENT; - } - GetGroupMirrorVisitor visitor(mirror_namespace); - r = cls_group_snap_ptr->snapshot_namespace.visit(visitor); + r = group_snap.snapshot_namespace.visit(visitor); if (r < 0) { return r; }