]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
journaler: implement asynchronous exists()
authorVenky Shankar <vshankar@redhat.com>
Tue, 5 Jul 2016 09:33:14 +0000 (15:03 +0530)
committerVenky Shankar <vshankar@redhat.com>
Sun, 7 Aug 2016 11:01:36 +0000 (16:31 +0530)
Signed-off-by: Venky Shankar <vshankar@redhat.com>
src/journal/Journaler.cc
src/journal/Journaler.h

index c08a11b71de490a7357aa726dd96e7b39ba04203..ef92b70f827034a6bf21b258e9f3d315630b78b9 100644 (file)
@@ -123,6 +123,17 @@ int Journaler::exists(bool *header_exists) const {
   return 0;
 }
 
+void Journaler::exists(Context *on_finish) const {
+  librados::ObjectReadOperation op;
+  op.stat(NULL, NULL, NULL);
+
+  librados::AioCompletion *comp =
+    librados::Rados::aio_create_completion(on_finish, nullptr, rados_ctx_callback);
+  int r = m_header_ioctx.aio_operate(m_header_oid, comp, &op, NULL);
+  assert(r == 0);
+  comp->release();
+}
+
 void Journaler::init(Context *on_init) {
   m_metadata->init(new C_InitJournaler(this, on_init));
 }
index 93a89bb1ff175192c8a4d7cc6aca5ada13fba1f1..134c1de425d44510ca018537d6b3657eae7e9b02 100644 (file)
@@ -59,6 +59,7 @@ public:
   ~Journaler();
 
   int exists(bool *header_exists) const;
+  void exists(Context *on_finish) const;
   int create(uint8_t order, uint8_t splay_width, int64_t pool_id);
   int remove(bool force);