From: Venky Shankar Date: Tue, 5 Jul 2016 09:33:14 +0000 (+0530) Subject: journaler: implement asynchronous exists() X-Git-Tag: ses5-milestone5~161^2~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0dfbadda4543b47b6e024216b93cfb8b190ac38a;p=ceph.git journaler: implement asynchronous exists() Signed-off-by: Venky Shankar --- diff --git a/src/journal/Journaler.cc b/src/journal/Journaler.cc index c08a11b71de..ef92b70f827 100644 --- a/src/journal/Journaler.cc +++ b/src/journal/Journaler.cc @@ -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)); } diff --git a/src/journal/Journaler.h b/src/journal/Journaler.h index 93a89bb1ff1..134c1de425d 100644 --- a/src/journal/Journaler.h +++ b/src/journal/Journaler.h @@ -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);