]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: journal reset should re-register the local client
authorJason Dillaman <dillaman@redhat.com>
Thu, 24 Mar 2016 16:33:50 +0000 (12:33 -0400)
committerJason Dillaman <dillaman@redhat.com>
Tue, 29 Mar 2016 19:19:25 +0000 (15:19 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/librbd/Journal.cc

index 0e905776bce279e801a2199bf3cdfb281d04a250..1871774ffe058f76f540717e85b54ca36ff1332d 100644 (file)
@@ -429,21 +429,27 @@ int Journal<I>::reset(librados::IoCtx &io_ctx, const std::string &image_id) {
   int64_t pool_id;
   journaler.get_metadata(&order, &splay_width, &pool_id);
 
+  std::string pool_name;
+  if (pool_id != -1) {
+    librados::Rados rados(io_ctx);
+    r = rados.pool_reverse_lookup(pool_id, &pool_name);
+    if (r < 0) {
+      lderr(cct) << "failed to lookup data pool: " << cpp_strerror(r) << dendl;
+      return r;
+    }
+  }
+
   r = journaler.remove(true);
   if (r < 0) {
     lderr(cct) << "failed to reset journal: " << cpp_strerror(r) << dendl;
     return r;
   }
-  r = journaler.create(order, splay_width, pool_id);
+
+  r = create(io_ctx, image_id, order, splay_width, pool_name, false);
   if (r < 0) {
     lderr(cct) << "failed to create journal: " << cpp_strerror(r) << dendl;
     return r;
   }
-  r = journaler.register_client(bufferlist());
-  if (r < 0) {
-    lderr(cct) << "failed to register client: " << cpp_strerror(r) << dendl;
-    return r;
-  }
   return 0;
 }