]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd/api: assume user namespace for group snapshot
authorMykola Golub <mgolub@suse.com>
Fri, 23 Jul 2021 15:04:48 +0000 (16:04 +0100)
committerPrasanna Kumar Kalever <prasanna.kalever@redhat.com>
Thu, 24 Apr 2025 15:56:21 +0000 (21:26 +0530)
when the snapshot is specified by name only

Signed-off-by: Mykola Golub <mgolub@suse.com>
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
src/librbd/api/Group.cc

index b95173d2b07636a208f2ac6064a4d7351b21c4f3..f57528cf734c3d3df55046f89d877c2d3c249ce4 100644 (file)
@@ -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<cls::rbd::UserGroupSnapshotNamespace>(
+      &group_snap.snapshot_namespace);
+  return ns != nullptr;
+}
+
 } // anonymous namespace
 
 template <typename I>
@@ -1183,7 +1189,7 @@ int Group<I>::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<I>::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<I>::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;
     }