]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rbd: don't fail "rbd group info" if group mirroring isn't supported
authorIlya Dryomov <idryomov@gmail.com>
Mon, 16 Jun 2025 20:46:27 +0000 (22:46 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Sun, 28 Sep 2025 18:25:05 +0000 (20:25 +0200)
Make it behave as if mirroring was disabled on the group.  This comes
up if the client side (including rbd CLI) is upgraded before the OSDs.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
src/librbd/mirror/GroupGetInfoRequest.cc
src/tools/rbd/action/Group.cc

index f895691816e4beaf4d5fb0e735c15eecff871592..25997d2987f397aa204b40ac536e691e69000cc1 100644 (file)
@@ -116,8 +116,12 @@ void GroupGetInfoRequest<I>::handle_get_info(int r) {
     return;
   }
   if (r < 0) {
-    lderr(cct) << "failed to get mirror info of group '" << m_group_id
-               << "': " << cpp_strerror(r) << dendl;
+    if (r == -EOPNOTSUPP) {
+      ldout(cct, 5) << "group mirroring not supported by OSD" << dendl;
+    } else {
+      lderr(cct) << "failed to get mirror info of group '" << m_group_id
+                 << "': " << cpp_strerror(r) << dendl;
+    }
     finish(r);
     return;
   }
index 933f808738dd589c4ce67b4bf36d58732080e07f..99fb24a6487076a6471c6ec669d291d4d8a0e2ae 100644 (file)
@@ -306,7 +306,7 @@ int execute_info(const po::variables_map &vm,
   std::string group_id;
   r = rbd.group_get_id(io_ctx, group_name.c_str(), &group_id);
   if (r < 0) {
-    std::cout << "rbd: failed to get info for group " << group_name << " : "
+    std::cout << "rbd: failed to get ID of group " << group_name << ": "
               << cpp_strerror(r) << std::endl;
     return r;
   }
@@ -315,7 +315,9 @@ int execute_info(const po::variables_map &vm,
   mirror_group_info.state = RBD_MIRROR_GROUP_DISABLED;
   r = rbd.mirror_group_get_info(io_ctx, group_name.c_str(), &mirror_group_info,
                                 sizeof(mirror_group_info));
-  if (r < 0) {
+  if (r < 0 && r != -EOPNOTSUPP) {
+    std::cout << "rbd: failed to get mirror info for group " << group_name
+              << ": " << cpp_strerror(r) << std::endl;
     return r;
   }
 
@@ -343,15 +345,13 @@ int execute_info(const po::variables_map &vm,
       std::cout << "\tmirroring state: "
                 << utils::mirror_group_state(mirror_group_info.state)
                 << std::endl;
-      if (mirror_group_info.state != RBD_MIRROR_GROUP_DISABLED) {
-       std::cout << "\tmirroring mode: "
-                  << utils::mirror_image_mode(mirror_group_info.mirror_image_mode)
-                  << std::endl
-                  << "\tmirroring global id: " << mirror_group_info.global_id
-                  << std::endl
-                  << "\tmirroring primary: "
-                  << (mirror_group_info.primary ? "true" : "false") <<std::endl;
-      }
+      std::cout << "\tmirroring mode: "
+                << utils::mirror_image_mode(mirror_group_info.mirror_image_mode)
+                << std::endl
+                << "\tmirroring global id: " << mirror_group_info.global_id
+                << std::endl
+                << "\tmirroring primary: "
+                << (mirror_group_info.primary ? "true" : "false") <<std::endl;
     }
   }