From: Ilya Dryomov Date: Mon, 16 Jun 2025 20:46:27 +0000 (+0200) Subject: rbd: don't fail "rbd group info" if group mirroring isn't supported X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=08d24ad78da14ad29261d5f8e373db828eeb1b45;p=ceph-ci.git rbd: don't fail "rbd group info" if group mirroring isn't supported 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 --- diff --git a/src/librbd/mirror/GroupGetInfoRequest.cc b/src/librbd/mirror/GroupGetInfoRequest.cc index f895691816e..25997d2987f 100644 --- a/src/librbd/mirror/GroupGetInfoRequest.cc +++ b/src/librbd/mirror/GroupGetInfoRequest.cc @@ -116,8 +116,12 @@ void GroupGetInfoRequest::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; } diff --git a/src/tools/rbd/action/Group.cc b/src/tools/rbd/action/Group.cc index 933f808738d..99fb24a6487 100644 --- a/src/tools/rbd/action/Group.cc +++ b/src/tools/rbd/action/Group.cc @@ -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") <