From 4d70ff4621137ae97bc88105b9a212190022515e Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Tue, 15 Mar 2016 13:55:07 -0400 Subject: [PATCH] librbd: stub API methods for mirror image promotion/demotion/resync Signed-off-by: Jason Dillaman --- src/include/rbd/librbd.h | 5 ++++- src/include/rbd/librbd.hpp | 4 ++++ src/librbd/internal.cc | 19 +++++++++++++++++++ src/librbd/internal.h | 3 +++ src/librbd/librbd.cc | 35 ++++++++++++++++++++++++++++++++++- 5 files changed, 64 insertions(+), 2 deletions(-) diff --git a/src/include/rbd/librbd.h b/src/include/rbd/librbd.h index 961d303c3db3d..72cf78cbe6088 100644 --- a/src/include/rbd/librbd.h +++ b/src/include/rbd/librbd.h @@ -597,9 +597,12 @@ CEPH_RBD_API int rbd_metadata_remove(rbd_image_t image, const char *key); CEPH_RBD_API int rbd_metadata_list(rbd_image_t image, const char *start, uint64_t max, char *keys, size_t *key_len, char *values, size_t *vals_len); - +// RBD image mirroring support functions CEPH_RBD_API int rbd_mirror_image_enable(rbd_image_t image); CEPH_RBD_API int rbd_mirror_image_disable(rbd_image_t image, bool force); +CEPH_RBD_API int rbd_mirror_image_promote(rbd_image_t image, bool force); +CEPH_RBD_API int rbd_mirror_image_demote(rbd_image_t image); +CEPH_RBD_API int rbd_mirror_image_resync(rbd_image_t image); CEPH_RBD_API int rbd_mirror_image_get(rbd_image_t image, rbd_mirror_image_t *mirror_image); diff --git a/src/include/rbd/librbd.hpp b/src/include/rbd/librbd.hpp index b54ff5a0d0fa5..86c3e95b2ea11 100644 --- a/src/include/rbd/librbd.hpp +++ b/src/include/rbd/librbd.hpp @@ -328,8 +328,12 @@ public: */ int metadata_list(const std::string &start, uint64_t max, std::map *pairs); + // RBD image mirroring support functions int mirror_image_enable(); int mirror_image_disable(bool force); + int mirror_image_promote(bool force); + int mirror_image_demote(); + int mirror_image_resync(); int mirror_image_get(mirror_image_t *mirror_image); private: diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index 14027a8d83a6b..3f92cb10066d6 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -2483,6 +2483,25 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) { return 0; } + int mirror_image_promote(ImageCtx *ictx, bool force) { + CephContext *cct = ictx->cct; + ldout(cct, 20) << __func__ << ": ictx=" << ictx << ", " + << "force=" << force << dendl; + return -EOPNOTSUPP; + } + + int mirror_image_demote(ImageCtx *ictx) { + CephContext *cct = ictx->cct; + ldout(cct, 20) << __func__ << ": ictx=" << ictx << dendl; + return -EOPNOTSUPP; + } + + int mirror_image_resync(ImageCtx *ictx) { + CephContext *cct = ictx->cct; + ldout(cct, 20) << __func__ << ": ictx=" << ictx << dendl; + return -EOPNOTSUPP; + } + int mirror_image_get(ImageCtx *ictx, mirror_image_t *mirror_image) { CephContext *cct = ictx->cct; ldout(cct, 20) << "mirror_image_get " << ictx << dendl; diff --git a/src/librbd/internal.h b/src/librbd/internal.h index d5e74dfe77b71..de7ab9a96370f 100644 --- a/src/librbd/internal.h +++ b/src/librbd/internal.h @@ -185,6 +185,9 @@ namespace librbd { int mirror_image_enable(ImageCtx *ictx); int mirror_image_disable(ImageCtx *ictx, bool force); + int mirror_image_promote(ImageCtx *ictx, bool force); + int mirror_image_demote(ImageCtx *ictx); + int mirror_image_resync(ImageCtx *ictx); int mirror_image_get(ImageCtx *ictx, mirror_image_t *mirror_image); } diff --git a/src/librbd/librbd.cc b/src/librbd/librbd.cc index e21aff302250d..88a3f172a59ca 100644 --- a/src/librbd/librbd.cc +++ b/src/librbd/librbd.cc @@ -1236,6 +1236,22 @@ namespace librbd { return librbd::mirror_image_disable(ictx, force); } + int Image::mirror_image_promote(bool force) { + ImageCtx *ictx = (ImageCtx *)ctx; + return librbd::mirror_image_promote(ictx, force); + } + + int Image::mirror_image_demote() { + ImageCtx *ictx = (ImageCtx *)ctx; + return librbd::mirror_image_demote(ictx); + } + + int Image::mirror_image_resync() + { + ImageCtx *ictx = (ImageCtx *)ctx; + return librbd::mirror_image_resync(ictx); + } + int Image::mirror_image_get(mirror_image_t *mirror_image) { ImageCtx *ictx = (ImageCtx *)ctx; return librbd::mirror_image_get(ictx, mirror_image); @@ -2580,6 +2596,24 @@ extern "C" int rbd_mirror_image_disable(rbd_image_t image, bool force) return librbd::mirror_image_disable(ictx, force); } +extern "C" int rbd_mirror_image_promote(rbd_image_t image, bool force) +{ + librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; + return librbd::mirror_image_promote(ictx, force); +} + +extern "C" int rbd_mirror_image_demote(rbd_image_t image) +{ + librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; + return librbd::mirror_image_demote(ictx); +} + +extern "C" int rbd_mirror_image_resync(rbd_image_t image) +{ + librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; + return librbd::mirror_image_resync(ictx); +} + extern "C" int rbd_mirror_image_get(rbd_image_t image, rbd_mirror_image_t *mirror_image) { @@ -2593,7 +2627,6 @@ extern "C" int rbd_mirror_image_get(rbd_image_t image, mirror_image->global_id = strdup(cpp_mirror_image.global_id.c_str()); mirror_image->state = cpp_mirror_image.state; - return 0; } -- 2.39.5