* 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) {
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);
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);
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));