From: Ricardo Dias Date: Thu, 10 Mar 2016 13:43:18 +0000 (+0000) Subject: rbd: rbd-mirroring: Added mirroing info to image info command in RBD CLI X-Git-Tag: v10.1.0~94^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c048d2b896012e5fdcf947dab27c075e06c2f2c4;p=ceph.git rbd: rbd-mirroring: Added mirroing info to image info command in RBD CLI Signed-off-by: Ricardo Dias Fixes: #13296 --- diff --git a/src/tools/rbd/Utils.cc b/src/tools/rbd/Utils.cc index 49571f446e80..1b6df94315c9 100644 --- a/src/tools/rbd/Utils.cc +++ b/src/tools/rbd/Utils.cc @@ -619,5 +619,18 @@ std::string image_id(librbd::Image& image) { return string(prefix + strlen(RBD_DATA_PREFIX)); } +std::string mirror_image_state(rbd_mirror_image_state_t mirror_image_state) { + switch (mirror_image_state) { + case RBD_MIRROR_IMAGE_DISABLING: + return "disabling"; + case RBD_MIRROR_IMAGE_ENABLED: + return "enabled"; + case RBD_MIRROR_IMAGE_DISABLED: + return "disabled"; + default: + return "unknown"; + } +} + } // namespace utils } // namespace rbd diff --git a/src/tools/rbd/Utils.h b/src/tools/rbd/Utils.h index 7caf43d7f16f..0cd8a410b171 100644 --- a/src/tools/rbd/Utils.h +++ b/src/tools/rbd/Utils.h @@ -100,6 +100,8 @@ int snap_set(librbd::Image &image, const std::string &snap_name); std::string image_id(librbd::Image& image); +std::string mirror_image_state(rbd_mirror_image_state_t mirror_image_state); + } // namespace utils } // namespace rbd diff --git a/src/tools/rbd/action/Info.cc b/src/tools/rbd/action/Info.cc index f3d81ac0ad3e..3cb60604a911 100644 --- a/src/tools/rbd/action/Info.cc +++ b/src/tools/rbd/action/Info.cc @@ -71,6 +71,7 @@ static int do_show_info(const char *imgname, librbd::Image& image, uint8_t old_format; uint64_t overlap, features, flags; bool snap_protected = false; + librbd::mirror_image_t mirror_image; int r; r = image.stat(info, sizeof(info)); @@ -100,6 +101,13 @@ static int do_show_info(const char *imgname, librbd::Image& image, return r; } + if (features & RBD_FEATURE_JOURNALING) { + r = image.mirror_image_get(&mirror_image); + if (r < 0) { + return r; + } + } + char prefix[RBD_MAX_BLOCK_NAME_SIZE + 1]; strncpy(prefix, info.block_name_prefix, RBD_MAX_BLOCK_NAME_SIZE); prefix[RBD_MAX_BLOCK_NAME_SIZE] = '\0'; @@ -179,6 +187,23 @@ static int do_show_info(const char *imgname, librbd::Image& image, } } + if (features & RBD_FEATURE_JOURNALING) { + if (f) { + f->dump_string("mirroring_state", + utils::mirror_image_state(mirror_image.state)); + if (mirror_image.state != RBD_MIRROR_IMAGE_DISABLED) { + f->dump_string("mirroring_global_id", mirror_image.global_id); + } + } else { + std::cout << "\tmirroring state: " + << utils::mirror_image_state(mirror_image.state) << std::endl; + if (mirror_image.state != RBD_MIRROR_IMAGE_DISABLED) { + std::cout << "\tmirroring global id: " << mirror_image.global_id + << std::endl; + } + } + } + if (f) { f->close_section(); f->flush(std::cout);