From: Haomai Wang Date: Tue, 4 Aug 2015 09:31:43 +0000 (+0800) Subject: librbd: Add interface to let user can get private data from comp X-Git-Tag: v10.0.2~142^2~14 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1ab727d194f63fdc14b1598e14932f9558997e1d;p=ceph.git librbd: Add interface to let user can get private data from comp Signed-off-by: Haomai Wang --- diff --git a/src/include/rbd/librbd.h b/src/include/rbd/librbd.h index 2f665916566..41d671e4bca 100644 --- a/src/include/rbd/librbd.h +++ b/src/include/rbd/librbd.h @@ -479,6 +479,7 @@ CEPH_RBD_API int rbd_aio_create_completion(void *cb_arg, CEPH_RBD_API int rbd_aio_is_complete(rbd_completion_t c); CEPH_RBD_API int rbd_aio_wait_for_complete(rbd_completion_t c); CEPH_RBD_API ssize_t rbd_aio_get_return_value(rbd_completion_t c); +CEPH_RBD_API void *rbd_aio_get_arg(rbd_completion_t c); CEPH_RBD_API void rbd_aio_release(rbd_completion_t c); CEPH_RBD_API int rbd_flush(rbd_image_t image); /** diff --git a/src/include/rbd/librbd.hpp b/src/include/rbd/librbd.hpp index 49a6f783bf0..70fcf13e076 100644 --- a/src/include/rbd/librbd.hpp +++ b/src/include/rbd/librbd.hpp @@ -70,6 +70,7 @@ public: bool is_complete(); int wait_for_complete(); ssize_t get_return_value(); + void *get_arg(); void release(); }; diff --git a/src/librbd/AioCompletion.h b/src/librbd/AioCompletion.h index 1ef37a13098..44c93b284c5 100644 --- a/src/librbd/AioCompletion.h +++ b/src/librbd/AioCompletion.h @@ -157,6 +157,10 @@ namespace librbd { Mutex::Locker l(lock); event_notify = true; } + + void *get_arg() { + return complete_arg; + } }; class C_AioRequest : public Context { diff --git a/src/librbd/librbd.cc b/src/librbd/librbd.cc index 20209ede5a3..88380960f4e 100644 --- a/src/librbd/librbd.cc +++ b/src/librbd/librbd.cc @@ -304,6 +304,12 @@ namespace librbd { return c->get_return_value(); } + void *RBD::AioCompletion::get_arg() + { + librbd::AioCompletion *c = (librbd::AioCompletion *)pc; + return c->get_arg(); + } + void RBD::AioCompletion::release() { librbd::AioCompletion *c = (librbd::AioCompletion *)pc; @@ -2252,6 +2258,12 @@ extern "C" ssize_t rbd_aio_get_return_value(rbd_completion_t c) return comp->get_return_value(); } +extern "C" void *rbd_aio_get_arg(rbd_completion_t c) +{ + librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c; + return comp->get_arg(); +} + extern "C" void rbd_aio_release(rbd_completion_t c) { librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c;