]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
librbd/deep_copy: rename .group snapshot according with local information
authorPrasanna Kumar Kalever <prasanna.kalever@redhat.com>
Wed, 12 Feb 2025 06:18:08 +0000 (11:48 +0530)
committerIlya Dryomov <idryomov@gmail.com>
Sun, 28 Sep 2025 18:25:01 +0000 (20:25 +0200)
.group snapshots are image snapshots part of user group snapshots

Today these snapshots follow naming:
".group." + primary_pool_id + "_" + primary_group_id + "_" + group_snap_id

[Note: group_snap_id is same on primary on secondary]

With this change the above naming will change as:
".group." + local_pool_id + "_" + local_group_id + "_" + group_snap_id

i.e pool_id and group_id differ on primary and seondary and hence names differ.

Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
src/librbd/deep_copy/SnapshotCopyRequest.cc

index c815d153e37c01b976529d589b820deb11853c78..ace496cca41cd7c54b38552675660f48fc5543df 100644 (file)
@@ -39,6 +39,16 @@ const std::string &get_snapshot_name(I *image_ctx, librados::snap_t snap_id) {
   return snap_it->first.second;
 }
 
+const std::string calc_ind_image_snap_name(uint64_t pool_id,
+                                           const std::string group_id,
+                                           const std::string snap_id)
+{
+  std::stringstream ind_snap_name_stream;
+  ind_snap_name_stream << ".group." << std::hex << pool_id << "_"
+                       << group_id << "_" << snap_id;
+  return ind_snap_name_stream.str();
+}
+
 } // anonymous namespace
 
 using librbd::util::create_context_callback;
@@ -396,6 +406,9 @@ void SnapshotCopyRequest<I>::send_snap_create() {
   if (ns != nullptr) {
     ns->group_pool = m_dst_image_ctx->group_spec.pool_id;
     ns->group_id = m_dst_image_ctx->group_spec.group_id;
+    m_snap_name = calc_ind_image_snap_name(ns->group_pool,
+                                           ns->group_id,
+                                           ns->group_snapshot_id);
   }
   cls::rbd::ParentImageSpec parent_spec;
   uint64_t parent_overlap = 0;