From: Jason Dillaman Date: Fri, 21 Feb 2020 01:43:46 +0000 (-0500) Subject: librbd: fix broken group snapshot handling X-Git-Tag: v15.1.1~297^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=80ae1162e37779edc0f11ce89b33725b77bf81ee;p=ceph.git librbd: fix broken group snapshot handling After commit ecf71d301f, only the snapshot namespace type and snapshot name are considered for snapshot ordering. This breaks the expectations in the group API when searching for a newly created snapshot. Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/api/Group.cc b/src/librbd/api/Group.cc index aa341bc2532..48a49cf7402 100644 --- a/src/librbd/api/Group.cc +++ b/src/librbd/api/Group.cc @@ -39,9 +39,15 @@ template snap_t get_group_snap_id(I* ictx, const cls::rbd::SnapshotNamespace& in_snap_namespace) { ceph_assert(ceph_mutex_is_locked(ictx->image_lock)); - auto it = ictx->snap_ids.lower_bound({in_snap_namespace, ""}); - if (it != ictx->snap_ids.end() && it->first.first == in_snap_namespace) { - return it->second; + auto it = ictx->snap_ids.lower_bound({cls::rbd::GroupSnapshotNamespace{}, + ""}); + for (; it != ictx->snap_ids.end(); ++it) { + if (it->first.first == in_snap_namespace) { + return it->second; + } else if (boost::get(&it->first.first) == + nullptr) { + break; + } } return CEPH_NOSNAP; }