]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cls/rbd: add mirror_image_status_remove on client
authorArthur Outhenin-Chalandre <arthur.outhenin-chalandre@cern.ch>
Mon, 7 Jun 2021 10:53:48 +0000 (12:53 +0200)
committerArthur Outhenin-Chalandre <arthur.outhenin-chalandre@cern.ch>
Tue, 26 Oct 2021 08:28:41 +0000 (10:28 +0200)
Signed-off-by: Arthur Outhenin-Chalandre <arthur.outhenin-chalandre@cern.ch>
(cherry picked from commit 0e147f779d73d0688c2b89428db6012ed1560f20)

src/cls/rbd/cls_rbd.cc
src/cls/rbd/cls_rbd_client.cc
src/cls/rbd/cls_rbd_client.h
src/test/cls_rbd/test_cls_rbd.cc

index 33910b7df518282f603cb1ad5ff7e65c90e0a3df..aab1a0e5847aa6991ecbc70594283dbbbad09093 100644 (file)
@@ -6366,7 +6366,6 @@ int mirror_image_status_set(cls_method_context_t hctx, bufferlist *in,
  * Output:
  * @returns 0 on success, negative error code on failure
  *
- * NOTE: deprecated - remove this method after Octopus is unsupported
  */
 int mirror_image_status_remove(cls_method_context_t hctx, bufferlist *in,
                               bufferlist *out) {
index cefa1fed79391c3fbbc0196a976ba8a6d04760e9..535de35ef7a246a5cbc4ba96ee5eb4acb4986234 100644 (file)
@@ -2310,6 +2310,20 @@ int mirror_image_status_get_summary_finish(
   return 0;
 }
 
+int mirror_image_status_remove(librados::IoCtx *ioctx,
+                               const std::string &global_image_id) {
+  librados::ObjectWriteOperation op;
+  mirror_image_status_remove(&op, global_image_id);
+  return ioctx->operate(RBD_MIRRORING, &op);
+}
+
+void mirror_image_status_remove(librados::ObjectWriteOperation *op,
+                                const std::string &global_image_id) {
+  bufferlist bl;
+  encode(global_image_id, bl);
+  op->exec("rbd", "mirror_image_status_remove", bl);
+}
+
 int mirror_image_status_remove_down(librados::IoCtx *ioctx) {
   librados::ObjectWriteOperation op;
   mirror_image_status_remove_down(&op);
index 12b34c48327087e9d2531d6c4227a349ad93c862..9bb5a41d82d5e0d12c081fb690117a6a5bc77ed2 100644 (file)
@@ -478,6 +478,10 @@ void mirror_image_status_get_summary_start(
 int mirror_image_status_get_summary_finish(
     ceph::buffer::list::const_iterator *iter,
     std::map<cls::rbd::MirrorImageStatusState, int32_t> *states);
+int mirror_image_status_remove(librados::IoCtx *ioctx,
+                               const std::string &global_image_id);
+void mirror_image_status_remove(librados::ObjectWriteOperation *op,
+                                const std::string &global_image_id);
 int mirror_image_status_remove_down(librados::IoCtx *ioctx);
 void mirror_image_status_remove_down(librados::ObjectWriteOperation *op);
 
index d01e04704ff6424f9229f37de5134fb013244dcf..5b33597455643ab0c9ddacc39c4a8f6d05f2e5a6 100644 (file)
@@ -1889,6 +1889,11 @@ TEST_F(TestClsRbd, mirror_image_status) {
   ASSERT_EQ(1U, states.size());
   ASSERT_EQ(3, states[cls::rbd::MIRROR_IMAGE_STATUS_STATE_UNKNOWN]);
 
+  // Test remove of status
+  ASSERT_EQ(0, mirror_image_status_set(&ioctx, "uuid1", status1));
+  ASSERT_EQ(0, mirror_image_status_remove(&ioctx, "uuid1"));
+  ASSERT_EQ(-ENOENT, mirror_image_instance_get(&ioctx, "uuid1", &read_instance));
+
   // Test statuses are not down after watcher is started
 
   ASSERT_EQ(0, mirror_image_status_set(&ioctx, "uuid1", status1));