From: Ramana Raja Date: Thu, 20 Feb 2025 22:21:34 +0000 (-0500) Subject: librbd/api: disallow adding mirror enabled image to group X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=60598b576369b1d9cccda7fbad96fbd2f08698b8;p=ceph.git librbd/api: disallow adding mirror enabled image to group Signed-off-by: Ramana Raja --- diff --git a/src/librbd/api/Group.cc b/src/librbd/api/Group.cc index 9e6ca5d370050..94b63d98f11c1 100644 --- a/src/librbd/api/Group.cc +++ b/src/librbd/api/Group.cc @@ -545,6 +545,18 @@ int Group::image_add(librados::IoCtx& group_ioctx, const char *group_name, return r; } + cls::rbd::MirrorImage mirror_image; + r = cls_client::mirror_image_get(&image_ioctx, image_id, &mirror_image); + if (r < 0 && r != -ENOENT && r != -ENOTSUP) { + lderr(cct) << "failed to retrieve mirroring state of image: " << cpp_strerror(r) + << dendl; + return r; + } else if (r == 0 && + mirror_image.state != cls::rbd::MIRROR_IMAGE_STATE_DISABLED) { + lderr(cct) << "cannot add mirror enabled image to group" << dendl; + return -EINVAL; + } + string image_header_oid = librbd::util::header_name(image_id); ldout(cct, 20) << "adding image " << image_name