From 034016fbbcbab92f76bc0fb2a53f483d0773ab4e Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Fri, 23 Jul 2021 16:04:48 +0100 Subject: [PATCH] librbd/api: assume user namespace for group snapshot when the snapshot is specified by name only Signed-off-by: Mykola Golub Signed-off-by: Prasanna Kumar Kalever --- 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 b95173d2b0763..f57528cf734c3 100644 --- a/src/librbd/api/Group.cc +++ b/src/librbd/api/Group.cc @@ -495,6 +495,12 @@ int GroupSnapshot_to_group_snap_info2( return 0; } +bool is_user_snapshot(const cls::rbd::GroupSnapshot &group_snap) { + auto ns = std::get_if( + &group_snap.snapshot_namespace); + return ns != nullptr; +} + } // anonymous namespace template @@ -1183,7 +1189,7 @@ int Group::snap_remove(librados::IoCtx& group_ioctx, const char *group_name, cls::rbd::GroupSnapshot *group_snap = nullptr; for (auto &snap : snaps) { - if (snap.name == string(snap_name)) { + if (is_user_snapshot(snap) && snap.name == string(snap_name)) { group_snap = &snap; break; } @@ -1224,7 +1230,7 @@ int Group::snap_rename(librados::IoCtx& group_ioctx, const char *group_name, cls::rbd::GroupSnapshot group_snap; for (auto &snap : group_snaps) { - if (snap.name == old_snap_name) { + if (is_user_snapshot(snap) && snap.name == old_snap_name) { group_snap = snap; break; } @@ -1347,7 +1353,7 @@ int Group::snap_rollback(librados::IoCtx& group_ioctx, cls::rbd::GroupSnapshot *group_snap = nullptr; for (auto &snap : snaps) { - if (snap.name == string(snap_name)) { + if (is_user_snapshot(snap) && snap.name == string(snap_name)) { group_snap = &snap; break; } -- 2.39.5