]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: removed legacy state machine callbacks from CreateRequest
authorJason Dillaman <dillaman@redhat.com>
Wed, 15 Mar 2017 18:12:35 +0000 (14:12 -0400)
committerNathan Cutler <ncutler@suse.com>
Tue, 4 Jul 2017 08:48:30 +0000 (10:48 +0200)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 8d79bf2bcba1d09d8e5589c5a8ee6dca1d27f800)

Conflicts:
    src/librbd/image/CreateRequest.cc - kraken does not have 5f2689b62ae

src/librbd/image/CreateRequest.cc
src/librbd/image/CreateRequest.h

index cfb65461974fad95c49fe63245fffe4f36189b3c..85c944aad945ecda0ebd0a95dbbc603331155ecd 100644 (file)
@@ -113,10 +113,6 @@ int get_image_option(const ImageOptions &image_options, int option,
 
 } // anonymous namespace
 
-// TODO: do away with @m_op_work_queue
-// This is used as a temporary measure to execute synchronous calls in
-// worker thread (see callers of ->queue()). Once everything is made
-// fully asynchronous this can be done away with.
 template<typename I>
 CreateRequest<I>::CreateRequest(IoCtx &ioctx, const std::string &image_name,
                                 const std::string &image_id, uint64_t size,
@@ -286,16 +282,17 @@ void CreateRequest<I>::validate_pool() {
 }
 
 template<typename I>
-Context* CreateRequest<I>::handle_validate_pool(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_validate_pool(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result == 0) {
+  if (r == 0) {
     create_id_object();
-    return nullptr;
-  } else if ((*result < 0) && (*result != -ENOENT)) {
-    lderr(m_cct) << "failed to stat RBD directory: " << cpp_strerror(*result)
+    return;
+  } else if ((r < 0) && (r != -ENOENT)) {
+    lderr(m_cct) << "failed to stat RBD directory: " << cpp_strerror(r)
                  << dendl;
-    return m_on_finish;
+    complete(r);
+    return;
   }
 
   // allocate a self-managed snapshot id if this a new pool to force
@@ -305,17 +302,17 @@ Context* CreateRequest<I>::handle_validate_pool(int *result) {
   // deadlocks).
 
   uint64_t snap_id;
-  int r = m_ioctx.selfmanaged_snap_create(&snap_id);
+  r = m_ioctx.selfmanaged_snap_create(&snap_id);
   if (r == -EINVAL) {
     lderr(m_cct) << "pool not configured for self-managed RBD snapshot support"
                  << dendl;
-    *result = r;
-    return m_on_finish;
+    complete(r);
+    return;
   } else if (r < 0) {
     lderr(m_cct) << "failed to allocate self-managed snapshot: "
                  << cpp_strerror(r) << dendl;
-    *result = r;
-    return m_on_finish;
+    complete(r);
+    return;
   }
 
   r = m_ioctx.selfmanaged_snap_remove(snap_id);
@@ -327,7 +324,6 @@ Context* CreateRequest<I>::handle_validate_pool(int *result) {
   }
 
   create_id_object();
-  return nullptr;
 }
 
 template<typename I>
@@ -347,17 +343,17 @@ void CreateRequest<I>::create_id_object() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_create_id_object(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_create_id_object(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
-    lderr(m_cct) << "error creating RBD id object: " << cpp_strerror(*result)
+  if (r < 0) {
+    lderr(m_cct) << "error creating RBD id object: " << cpp_strerror(r)
                  << dendl;
-    return m_on_finish;
+    complete(r);
+    return;
   }
 
   add_image_to_directory();
-  return nullptr;
 }
 
 template<typename I>
@@ -376,20 +372,18 @@ void CreateRequest<I>::add_image_to_directory() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_add_image_to_directory(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_add_image_to_directory(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
-    lderr(m_cct) << "error adding image to directory: " << cpp_strerror(*result)
+  if (r < 0) {
+    lderr(m_cct) << "error adding image to directory: " << cpp_strerror(r)
                  << dendl;
 
-    m_r_saved = *result;
+    m_r_saved = r;
     remove_id_object();
-    return nullptr;
   }
 
   negotiate_features();
-  return nullptr;
 }
 
 template<typename I>
@@ -413,17 +407,17 @@ void CreateRequest<I>::negotiate_features() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_negotiate_features(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_negotiate_features(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
   uint64_t all_features;
-  if (*result == 0) {
+  if (r >= 0) {
     bufferlist::iterator it = m_outbl.begin();
-    *result = cls_client::get_all_features_finish(&it, &all_features);
+    r = cls_client::get_all_features_finish(&it, &all_features);
   }
-  if (*result < 0) {
+  if (r < 0) {
     ldout(m_cct, 10) << "error retrieving server supported features set: "
-                     << cpp_strerror(*result) << dendl;
+                     << cpp_strerror(r) << dendl;
   } else if ((m_features & all_features) != m_features) {
     m_features &= all_features;
     ldout(m_cct, 10) << "limiting default features set to server supported: "
@@ -431,7 +425,6 @@ Context *CreateRequest<I>::handle_negotiate_features(int *result) {
   }
 
   create_image();
-  return nullptr;
 }
 
 template<typename I>
@@ -460,18 +453,17 @@ void CreateRequest<I>::create_image() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_create_image(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_create_image(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
-    lderr(m_cct) << "error writing header: " << cpp_strerror(*result) << dendl;
-    m_r_saved = *result;
+  if (r < 0) {
+    lderr(m_cct) << "error writing header: " << cpp_strerror(r) << dendl;
+    m_r_saved = r;
     remove_from_dir();
-    return nullptr;
+    return;
   }
 
   set_stripe_unit_count();
-  return nullptr;
 }
 
 template<typename I>
@@ -496,19 +488,18 @@ void CreateRequest<I>::set_stripe_unit_count() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_set_stripe_unit_count(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_set_stripe_unit_count(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
+  if (r < 0) {
     lderr(m_cct) << "error setting stripe unit/count: "
-                 << cpp_strerror(*result) << dendl;
-    m_r_saved = *result;
+                 << cpp_strerror(r) << dendl;
+    m_r_saved = r;
     remove_header_object();
-    return nullptr;
+    return;
   }
 
   object_map_resize();
-  return nullptr;
 }
 
 template<typename I>
@@ -533,20 +524,19 @@ void CreateRequest<I>::object_map_resize() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_object_map_resize(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_object_map_resize(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
+  if (r < 0) {
     lderr(m_cct) << "error creating initial object map: "
-                 << cpp_strerror(*result) << dendl;
+                 << cpp_strerror(r) << dendl;
 
-    m_r_saved = *result;
+    m_r_saved = r;
     remove_header_object();
-    return nullptr;
+    return;
   }
 
   fetch_mirror_mode();
-  return nullptr;
 }
 
 template<typename I>
@@ -571,28 +561,28 @@ void CreateRequest<I>::fetch_mirror_mode() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_fetch_mirror_mode(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_fetch_mirror_mode(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if ((*result < 0) && (*result != -ENOENT)) {
-    lderr(m_cct) << "failed to retrieve mirror mode: " << cpp_strerror(*result)
+  if ((r < 0) && (r != -ENOENT)) {
+    lderr(m_cct) << "failed to retrieve mirror mode: " << cpp_strerror(r)
                  << dendl;
 
-    m_r_saved = *result;
+    m_r_saved = r;
     remove_object_map();
-    return nullptr;
+    return;
   }
 
   cls::rbd::MirrorMode mirror_mode_internal = cls::rbd::MIRROR_MODE_DISABLED;
-  if (*result == 0) {
+  if (r == 0) {
     bufferlist::iterator it = m_outbl.begin();
-    *result = cls_client::mirror_mode_get_finish(&it, &mirror_mode_internal);
-    if (*result < 0) {
+    r = cls_client::mirror_mode_get_finish(&it, &mirror_mode_internal);
+    if (r < 0) {
       lderr(m_cct) << "Failed to retrieve mirror mode" << dendl;
 
-      m_r_saved = *result;
+      m_r_saved = r;
       remove_object_map();
-      return nullptr;
+      return;
     }
   }
 
@@ -607,13 +597,12 @@ Context *CreateRequest<I>::handle_fetch_mirror_mode(int *result) {
     lderr(m_cct) << "Unknown mirror mode ("
                << static_cast<uint32_t>(mirror_mode_internal) << ")"
                << dendl;
-    *result = -EINVAL;
+    r = -EINVAL;
     remove_object_map();
-    return nullptr;
+    return;
   }
 
   journal_create();
-  return nullptr;
 }
 
 template<typename I>
@@ -637,20 +626,19 @@ void CreateRequest<I>::journal_create() {
 }
 
 template<typename I>
-Context* CreateRequest<I>::handle_journal_create(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_journal_create(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
-    lderr(m_cct) << "error creating journal: " << cpp_strerror(*result)
+  if (r < 0) {
+    lderr(m_cct) << "error creating journal: " << cpp_strerror(r)
                  << dendl;
 
-    m_r_saved = *result;
+    m_r_saved = r;
     remove_object_map();
-    return nullptr;
+    return;
   }
 
   mirror_image_enable();
-  return nullptr;
 }
 
 template<typename I>
@@ -671,18 +659,19 @@ void CreateRequest<I>::mirror_image_enable() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_mirror_image_enable(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_mirror_image_enable(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
-    lderr(m_cct) << "cannot enable mirroring: " << cpp_strerror(*result)
+  if (r < 0) {
+    lderr(m_cct) << "cannot enable mirroring: " << cpp_strerror(r)
                  << dendl;
 
-    m_r_saved = *result;
+    m_r_saved = r;
     journal_remove();
-    return nullptr;
+    return;
   }
-  return m_on_finish;
+
+  complete(0);
 }
 
 template<typename I>
@@ -719,16 +708,15 @@ void CreateRequest<I>::journal_remove() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_journal_remove(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_journal_remove(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
+  if (r < 0) {
     lderr(m_cct) << "error cleaning up journal after creation failed: "
-                 << cpp_strerror(*result) << dendl;
+                 << cpp_strerror(r) << dendl;
   }
 
   remove_object_map();
-  return nullptr;
 }
 
 template<typename I>
@@ -749,16 +737,15 @@ void CreateRequest<I>::remove_object_map() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_remove_object_map(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_remove_object_map(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
+  if (r < 0) {
     lderr(m_cct) << "error cleaning up object map after creation failed: "
-                 << cpp_strerror(*result) << dendl;
+                 << cpp_strerror(r) << dendl;
   }
 
   remove_header_object();
-  return nullptr;
 }
 
 template<typename I>
@@ -774,16 +761,15 @@ void CreateRequest<I>::remove_header_object() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_remove_header_object(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_remove_header_object(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
+  if (r < 0) {
     lderr(m_cct) << "error cleaning up image header after creation failed: "
-                 << cpp_strerror(*result) << dendl;
+                 << cpp_strerror(r) << dendl;
   }
 
   remove_from_dir();
-  return nullptr;
 }
 
 template<typename I>
@@ -802,16 +788,15 @@ void CreateRequest<I>::remove_from_dir() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_remove_from_dir(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_remove_from_dir(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
+  if (r < 0) {
     lderr(m_cct) << "error cleaning up image from rbd_directory object "
-                 << "after creation failed: " << cpp_strerror(*result) << dendl;
+                 << "after creation failed: " << cpp_strerror(r) << dendl;
   }
 
   remove_id_object();
-  return nullptr;
 }
 
 template<typename I>
@@ -827,16 +812,15 @@ void CreateRequest<I>::remove_id_object() {
 }
 
 template<typename I>
-Context *CreateRequest<I>::handle_remove_id_object(int *result) {
-  ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl;
+void CreateRequest<I>::handle_remove_id_object(int r) {
+  ldout(m_cct, 20) << __func__ << ": r=" << r << dendl;
 
-  if (*result < 0) {
+  if (r < 0) {
     lderr(m_cct) << "error cleaning up id object after creation failed: "
-                 << cpp_strerror(*result) << dendl;
+                 << cpp_strerror(r) << dendl;
   }
 
-  *result = m_r_saved;
-  return m_on_finish;
+  complete(m_r_saved);
 }
 
 } //namespace image
index b481d9ece1a256e2d8d1cc1444aa2dd9da86e5fc..8a3464b5f3a3d3c2c721bb0da36d7170d583f71a 100644 (file)
@@ -130,52 +130,52 @@ private:
   cls::rbd::MirrorImage m_mirror_image_internal;
 
   void validate_pool();
-  Context *handle_validate_pool(int *result);
+  void handle_validate_pool(int r);
 
   void create_id_object();
-  Context *handle_create_id_object(int *result);
+  void handle_create_id_object(int r);
 
   void add_image_to_directory();
-  Context *handle_add_image_to_directory(int *result);
+  void handle_add_image_to_directory(int r);
 
   void negotiate_features();
-  Context *handle_negotiate_features(int *result);
+  void handle_negotiate_features(int r);
 
   void create_image();
-  Context *handle_create_image(int *result);
+  void handle_create_image(int r);
 
   void set_stripe_unit_count();
-  Context *handle_set_stripe_unit_count(int *result);
+  void handle_set_stripe_unit_count(int r);
 
   void object_map_resize();
-  Context *handle_object_map_resize(int *result);
+  void handle_object_map_resize(int r);
 
   void fetch_mirror_mode();
-  Context *handle_fetch_mirror_mode(int *result);
+  void handle_fetch_mirror_mode(int r);
 
   void journal_create();
-  Context *handle_journal_create(int *result);
+  void handle_journal_create(int r);
 
   void mirror_image_enable();
-  Context *handle_mirror_image_enable(int *result);
+  void handle_mirror_image_enable(int r);
 
   void complete(int r);
 
   // cleanup
   void journal_remove();
-  Context *handle_journal_remove(int *result);
+  void handle_journal_remove(int r);
 
   void remove_object_map();
-  Context *handle_remove_object_map(int *result);
+  void handle_remove_object_map(int r);
 
   void remove_header_object();
-  Context *handle_remove_header_object(int *result);
+  void handle_remove_header_object(int r);
 
   void remove_from_dir();
-  Context *handle_remove_from_dir(int *result);
+  void handle_remove_from_dir(int r);
 
   void remove_id_object();
-  Context *handle_remove_id_object(int *result);
+  void handle_remove_id_object(int r);
 };
 
 } //namespace image