]> 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>
Mon, 28 Jul 2025 08:55:39 +0000 (14:25 +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 bc0fbaa4dac83b147d62a07cb2930a782adadfc2..c63377e5a2586c8f9f0a056fee6a690cdff2f7aa 100644 (file)
@@ -501,6 +501,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>
@@ -1189,7 +1195,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;
     }
@@ -1230,7 +1236,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;
     }
@@ -1353,7 +1359,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;
     }