]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: stub API methods for mirror image promotion/demotion/resync
authorJason Dillaman <dillaman@redhat.com>
Tue, 15 Mar 2016 17:55:07 +0000 (13:55 -0400)
committerJason Dillaman <dillaman@redhat.com>
Wed, 16 Mar 2016 00:14:45 +0000 (20:14 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/include/rbd/librbd.h
src/include/rbd/librbd.hpp
src/librbd/internal.cc
src/librbd/internal.h
src/librbd/librbd.cc

index 961d303c3db3d113611d2f0ee68979e43df95253..72cf78cbe6088ba1ea322fcd4bc6be0900c88bc5 100644 (file)
@@ -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);
 
index b54ff5a0d0fa5522de8f9577aa3dd95a953ffca2..86c3e95b2ea11c6f19d9557e72106c3c050e6f68 100644 (file)
@@ -328,8 +328,12 @@ public:
    */
   int metadata_list(const std::string &start, uint64_t max, std::map<std::string, ceph::bufferlist> *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:
index 14027a8d83a6be15e25d2b647a30fc76611d5a94..3f92cb10066d672d19110875dc1807c489e3767c 100644 (file)
@@ -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;
index d5e74dfe77b710557cbd862bb5d3103eb56d9d50..de7ab9a96370fbcff5885840c7fe6aa2927f56b3 100644 (file)
@@ -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);
 }
 
index e21aff302250dcb5b6ab8eddd05b84186fdb941d..88a3f172a59cad1e3af2f376c276900b6040ce65 100644 (file)
@@ -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;
 }