From 80ae1162e37779edc0f11ce89b33725b77bf81ee Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Thu, 20 Feb 2020 20:43:46 -0500 Subject: [PATCH] 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 --- src/librbd/api/Group.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/librbd/api/Group.cc b/src/librbd/api/Group.cc index aa341bc25328a..48a49cf74024e 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; } -- 2.47.3