]> git.apps.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>
Wed, 12 Jan 2022 09:03:31 +0000 (10:03 +0100)
Signed-off-by: Arthur Outhenin-Chalandre <arthur.outhenin-chalandre@cern.ch>
(cherry picked from commit 0e147f779d73d0688c2b89428db6012ed1560f20)

 Conflicts:
src/cls/rbd/cls_rbd_client.h
- Trivial conflict resolution

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 b6ae25d7c91b0313214d211bfe16ac1d242b5185..15a13a1b1b4234a2921c4e1804be8499e063babf 100644 (file)
@@ -6356,7 +6356,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 4ec2d6672424420e9115478480d2a6961d9f48a8..16bd0fe07d16fb9bda3c39ade36a433be3ee0455 100644 (file)
@@ -2269,6 +2269,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 55353e0746f9ec60d873980f8cfd1b4f9260a110..f86d5302b09ae8447e068c17bb63698d905c9315 100644 (file)
@@ -477,6 +477,10 @@ void mirror_image_status_get_summary_start(
 int mirror_image_status_get_summary_finish(
     bufferlist::const_iterator *iter,
     std::map<cls::rbd::MirrorImageStatusState, int> *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 ef753b749809be5587d14f4ca5c15ce7a97877db..cc8e0964f9de35ad3af136dd8e78cac54ba0015d 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));