From 14213e37140bce47acd35fae10fdf8c8e7a78ad7 Mon Sep 17 00:00:00 2001 From: N Balachandran Date: Mon, 21 Apr 2025 17:04:08 +0530 Subject: [PATCH] rbd: display correct mirror state when creating The mirror image state is set to MIRROR_IMAGE_STATE_CREATING when the image is first created on the secondary, but was displayed as "unknown" by the rbd info command. This has been fixed. Fixes: https://tracker.ceph.com/issues/70963 Signed-off-by: N Balachandran (cherry picked from commit f2e35646721ed3076e3da54124f8d783c456b2dc) --- src/include/rbd/librbd.h | 3 ++- src/pybind/rbd/c_rbd.pxd | 1 + src/pybind/rbd/mock_rbd.pxi | 1 + src/pybind/rbd/rbd.pyx | 1 + src/tools/rbd/Utils.cc | 2 ++ 5 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/include/rbd/librbd.h b/src/include/rbd/librbd.h index 946acfb2ae41b..779f85c5c61f2 100644 --- a/src/include/rbd/librbd.h +++ b/src/include/rbd/librbd.h @@ -186,7 +186,8 @@ typedef enum { typedef enum { RBD_MIRROR_IMAGE_DISABLING = 0, RBD_MIRROR_IMAGE_ENABLED = 1, - RBD_MIRROR_IMAGE_DISABLED = 2 + RBD_MIRROR_IMAGE_DISABLED = 2, + RBD_MIRROR_IMAGE_CREATING = 3 } rbd_mirror_image_state_t; typedef struct { diff --git a/src/pybind/rbd/c_rbd.pxd b/src/pybind/rbd/c_rbd.pxd index c5b8921b85fd1..f5d9096789a19 100644 --- a/src/pybind/rbd/c_rbd.pxd +++ b/src/pybind/rbd/c_rbd.pxd @@ -164,6 +164,7 @@ cdef extern from "rbd/librbd.h" nogil: _RBD_MIRROR_IMAGE_DISABLING "RBD_MIRROR_IMAGE_DISABLING" _RBD_MIRROR_IMAGE_ENABLED "RBD_MIRROR_IMAGE_ENABLED" _RBD_MIRROR_IMAGE_DISABLED "RBD_MIRROR_IMAGE_DISABLED" + _RBD_MIRROR_IMAGE_CREATING "RBD_MIRROR_IMAGE_CREATING" ctypedef struct rbd_mirror_image_info_t: char *global_id diff --git a/src/pybind/rbd/mock_rbd.pxi b/src/pybind/rbd/mock_rbd.pxi index adb7957e532af..7a8faf750bd8e 100644 --- a/src/pybind/rbd/mock_rbd.pxi +++ b/src/pybind/rbd/mock_rbd.pxi @@ -168,6 +168,7 @@ cdef nogil: _RBD_MIRROR_IMAGE_DISABLING "RBD_MIRROR_IMAGE_DISABLING" _RBD_MIRROR_IMAGE_ENABLED "RBD_MIRROR_IMAGE_ENABLED" _RBD_MIRROR_IMAGE_DISABLED "RBD_MIRROR_IMAGE_DISABLED" + _RBD_MIRROR_IMAGE_CREATING "RBD_MIRROR_IMAGE_CREATING" ctypedef struct rbd_mirror_image_info_t: char *global_id diff --git a/src/pybind/rbd/rbd.pyx b/src/pybind/rbd/rbd.pyx index d7c05ac58b49b..488382cdfa888 100644 --- a/src/pybind/rbd/rbd.pyx +++ b/src/pybind/rbd/rbd.pyx @@ -97,6 +97,7 @@ RBD_MIRROR_IMAGE_MODE_SNAPSHOT = _RBD_MIRROR_IMAGE_MODE_SNAPSHOT RBD_MIRROR_IMAGE_DISABLING = _RBD_MIRROR_IMAGE_DISABLING RBD_MIRROR_IMAGE_ENABLED = _RBD_MIRROR_IMAGE_ENABLED RBD_MIRROR_IMAGE_DISABLED = _RBD_MIRROR_IMAGE_DISABLED +RBD_MIRROR_IMAGE_CREATING = _RBD_MIRROR_IMAGE_CREATING MIRROR_IMAGE_STATUS_STATE_UNKNOWN = _MIRROR_IMAGE_STATUS_STATE_UNKNOWN MIRROR_IMAGE_STATUS_STATE_ERROR = _MIRROR_IMAGE_STATUS_STATE_ERROR diff --git a/src/tools/rbd/Utils.cc b/src/tools/rbd/Utils.cc index fcafd63a4eb86..60672447a4174 100644 --- a/src/tools/rbd/Utils.cc +++ b/src/tools/rbd/Utils.cc @@ -1012,6 +1012,8 @@ std::string mirror_image_state(librbd::mirror_image_state_t state) { return "enabled"; case RBD_MIRROR_IMAGE_DISABLED: return "disabled"; + case RBD_MIRROR_IMAGE_CREATING: + return "creating"; default: return "unknown"; } -- 2.39.5