Rados support for blkin (LTTng + Zipkin) tracing
PATCH 4/6 Rados support for blkin (LTTng + Zipkin) tracing
Added traced versions of Rados aio_read/write
These changes are Marios', with the following exceptions:
- split out Rados support from other tracing changes
- only Message.h includes blkin, as others include Message.h
- whitespace issues have been fixed
Signed-off-by Andrew Shewmaker <[email protected]>
--- src/include/rados/librados.h | 8 +++++ src/librados/IoCtxImpl.cc | 70 ++++++++++++++++++++++++++++++++++++++++++++ src/librados/IoCtxImpl.h | 7 +++++ src/librados/RadosClient.cc | 1 + src/librados/librados.cc | 26 ++++++++++++++++ 5 files changed, 112 insertions(+)
src/include/rados/librados.h +8 -0
@@ -1591,6 +1591,10 @@ int rados_aio_write(rados_ioctx_t io, const char *oid,rados_completion_t completion, const char *buf, size_t len, uint64_t off); +int rados_aio_write_traced (rados_ioctx_t io,const char *o, +rados_completion_t completion, +const char *buf,size_t len,uint64_t off, +struct blkin_trace_info *info);/** * Asychronously append data to an object *
@@ -1673,6 +1677,10 @@ int rados_aio_read(rados_ioctx_t io, const char *oid,rados_completion_t completion, char *buf, size_t len, uint64_t off); +int rados_aio_read_traced (rados_ioctx_t io,const char *o, +rados_completion_t completion, +char *buf,size_t len,uint64_t off, +struct blkin_trace_info *info);/** * Block until all pending writes in an io context are safe *
src/librados/IoCtxImpl.cc +70 -0
100 lines not on this page · raw message
src/librados/IoCtxImpl.h +7 -0
@@ -49,6 +49,7 @@ struct librados::IoCtxImpl {Mutex *lock;Objecter *objecter; + ZTracer::ZTraceEndpointRef ioctx_endp;IoCtxImpl (); IoCtxImpl(RadosClient *c, Objecter *objecter, Mutex *client_lock,
@@ -172,11 +173,17 @@ struct librados::IoCtxImpl { bufferlist *pbl, size_t len, uint64_t off, uint64_t snapid);int aio_read (object_t oid,AioCompletionImpl *c,char *buf,size_t len,uint64_t off,uint64_t snapid); +int aio_read_traced (object_t oid,AioCompletionImpl *c, +char *buf,size_t len,uint64_t off,uint64_t snapid, +struct blkin_trace_info *info);int aio_sparse_read (const object_t oid,AioCompletionImpl *c, std::map<uint64_t,uint64_t> *m, bufferlist *data_bl,size_t len,uint64_t off,uint64_t snapid); int aio_write(const object_t &oid, AioCompletionImpl *c, const bufferlist& bl, size_t len, uint64_t off); + int aio_write_traced(const object_t &oid, AioCompletionImpl *c, + const bufferlist& bl, size_t len, uint64_t off, +struct blkin_trace_info *info); int aio_append(const object_t &oid, AioCompletionImpl *c, const bufferlist& bl, size_t len); int aio_write_full(const object_t &oid, AioCompletionImpl *c,
src/librados/RadosClient.cc +1 -0
@@ -84,6 +84,7 @@ librados::RadosClient::RadosClient(CephContext *cct_) finisher(cct), max_watch_cookie(0) { + ZTracer::ztrace_init(); } int64_t librados::RadosClient::lookup_pool(const char *name)
src/librados/librados.cc +26 -0
@@ -2900,6 +2900,18 @@ extern "C" int rados_aio_read(rados_ioctx_t io, const char *o, buf, len, off, ctx->snap_seq); } +extern "C" int rados_aio_read_traced(rados_ioctx_t io, const char *o, + rados_completion_t completion, + char *buf, size_t len, uint64_t off, + struct blkin_trace_info *info) +{ + librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; + object_t oid(o); + return ctx->aio_read_traced(oid, + (librados::AioCompletionImpl*)completion, buf, len, + off, ctx->snap_seq, info); +} + extern "C" int rados_aio_write(rados_ioctx_t io, const char *o, rados_completion_t completion, const char *buf, size_t len, uint64_t off)
@@ -2912,6 +2924,20 @@ extern "C" int rados_aio_write(rados_ioctx_t io, const char *o, bl, len, off); } +extern "C" int rados_aio_write_traced(rados_ioctx_t io, const char *o, + rados_completion_t completion, + const char *buf, size_t len, uint64_t off, + struct blkin_trace_info *info) +{ + librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; + object_t oid(o); + bufferlist bl; + bl.append(buf, len); + return ctx->aio_write_traced(oid, + (librados::AioCompletionImpl*)completion,bl, len, off, + info); +} + extern "C" int rados_aio_append(rados_ioctx_t io, const char *o, rados_completion_t completion, const char *buf, size_t len)
Signature · 1 line
2.1.0