From 9440e5a1daa912d961710e63cdd22166468a2f8f Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Tue, 27 Feb 2018 18:29:19 -0500 Subject: [PATCH] librbd: removed object cacher hooks from IO object request Signed-off-by: Jason Dillaman --- src/librbd/io/ObjectDispatch.cc | 4 +- src/librbd/io/ObjectRequest.cc | 44 ++----------------- src/librbd/io/ObjectRequest.h | 28 ++++-------- src/test/librbd/io/test_mock_ObjectRequest.cc | 24 +++++----- 4 files changed, 26 insertions(+), 74 deletions(-) diff --git a/src/librbd/io/ObjectDispatch.cc b/src/librbd/io/ObjectDispatch.cc index a1055fce55b71..31090238ed8a1 100644 --- a/src/librbd/io/ObjectDispatch.cc +++ b/src/librbd/io/ObjectDispatch.cc @@ -42,8 +42,8 @@ bool ObjectDispatch::read( *dispatch_result = DISPATCH_RESULT_COMPLETE; auto req = new ObjectReadRequest(m_image_ctx, oid, object_no, object_off, object_len, snap_id, op_flags, - false, parent_trace, read_data, - extent_map, on_dispatched); + parent_trace, read_data, extent_map, + on_dispatched); req->send(); return true; } diff --git a/src/librbd/io/ObjectRequest.cc b/src/librbd/io/ObjectRequest.cc index b5537d75af737..bc1d9e93fc3a7 100644 --- a/src/librbd/io/ObjectRequest.cc +++ b/src/librbd/io/ObjectRequest.cc @@ -185,15 +185,14 @@ template ObjectReadRequest::ObjectReadRequest(I *ictx, const std::string &oid, uint64_t objectno, uint64_t offset, uint64_t len, librados::snap_t snap_id, - int op_flags, bool cache_initiated, + int op_flags, const ZTracer::Trace &parent_trace, bufferlist* read_data, ExtentMap* extent_map, Context *completion) : ObjectRequest(ictx, oid, objectno, offset, len, snap_id, "read", parent_trace, completion), - m_op_flags(op_flags), m_cache_initiated(cache_initiated), - m_read_data(read_data), m_extent_map(extent_map) { + m_op_flags(op_flags), m_read_data(read_data), m_extent_map(extent_map) { } template @@ -201,44 +200,7 @@ void ObjectReadRequest::send() { I *image_ctx = this->m_ictx; ldout(image_ctx->cct, 20) << dendl; - if (!m_cache_initiated && image_ctx->object_cacher != nullptr) { - read_cache(); - } else { - read_object(); - } -} - -template -void ObjectReadRequest::read_cache() { - I *image_ctx = this->m_ictx; - ldout(image_ctx->cct, 20) << dendl; - - // must use async callback to avoid cache_lock cycle - auto cache_ctx = util::create_async_context_callback( - *image_ctx, util::create_context_callback< - ObjectReadRequest, &ObjectReadRequest::handle_read_cache>(this)); - image_ctx->aio_read_from_cache( - this->m_oid, this->m_object_no, m_read_data, this->m_object_len, - this->m_object_off, cache_ctx, m_op_flags, - (this->m_trace.valid() ? &this->m_trace : nullptr)); -} - -template -void ObjectReadRequest::handle_read_cache(int r) { - I *image_ctx = this->m_ictx; - ldout(image_ctx->cct, 20) << "r=" << r << dendl; - - if (r == -ENOENT) { - read_parent(); - return; - } else if (r < 0) { - lderr(image_ctx->cct) << "failed to read from cache: " - << cpp_strerror(r) << dendl; - this->finish(r); - return; - } - - this->finish(0); + read_object(); } template diff --git a/src/librbd/io/ObjectRequest.h b/src/librbd/io/ObjectRequest.h index ebb10f590a8b6..9e8f3996c5e3c 100644 --- a/src/librbd/io/ObjectRequest.h +++ b/src/librbd/io/ObjectRequest.h @@ -98,20 +98,19 @@ public: static ObjectReadRequest* create(ImageCtxT *ictx, const std::string &oid, uint64_t objectno, uint64_t offset, uint64_t len, librados::snap_t snap_id, - int op_flags, bool cache_initiated, + int op_flags, const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, ExtentMap* extent_map, Context *completion) { return new ObjectReadRequest(ictx, oid, objectno, offset, len, - snap_id, op_flags, cache_initiated, - parent_trace, read_data, extent_map, - completion); + snap_id, op_flags, parent_trace, read_data, + extent_map, completion); } ObjectReadRequest(ImageCtxT *ictx, const std::string &oid, uint64_t objectno, uint64_t offset, uint64_t len, librados::snap_t snap_id, int op_flags, - bool cache_initiated, const ZTracer::Trace &parent_trace, + const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, ExtentMap* extent_map, Context *completion); @@ -125,16 +124,11 @@ private: /** * @verbatim * - * - * | - * | - * /--------/ \--------\ - * | | - * | (cache | (cache - * v disabled) v enabled) - * READ_OBJECT READ_CACHE - * | | - * |/------------------/ + * + * | + * | + * v + * READ_OBJECT * | * v (skip if not needed) * READ_PARENT @@ -149,14 +143,10 @@ private: */ int m_op_flags; - bool m_cache_initiated; ceph::bufferlist* m_read_data; ExtentMap* m_extent_map; - void read_cache(); - void handle_read_cache(int r); - void read_object(); void handle_read_object(int r); diff --git a/src/test/librbd/io/test_mock_ObjectRequest.cc b/src/test/librbd/io/test_mock_ObjectRequest.cc index 00d0e42e56ec5..b97afeff99d2f 100644 --- a/src/test/librbd/io/test_mock_ObjectRequest.cc +++ b/src/test/librbd/io/test_mock_ObjectRequest.cc @@ -327,8 +327,8 @@ TEST_F(TestMockIoObjectRequest, Read) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, - false, {}, &bl, &extent_map, &ctx); + &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, + &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -358,8 +358,8 @@ TEST_F(TestMockIoObjectRequest, SparseReadThreshold) { C_SaferCond ctx; auto req = MockObjectReadRequest::create( &mock_image_ctx, ictx->get_object_name(0), 0, 0, - ictx->sparse_read_threshold_bytes, CEPH_NOSNAP, 0, false, {}, - &bl, &extent_map, &ctx); + ictx->sparse_read_threshold_bytes, CEPH_NOSNAP, 0, {}, &bl, &extent_map, + &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -386,8 +386,8 @@ TEST_F(TestMockIoObjectRequest, ReadError) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, - false, {}, &bl, &extent_map, &ctx); + &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, + &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(-EPERM, ctx.wait()); } @@ -435,8 +435,8 @@ TEST_F(TestMockIoObjectRequest, ParentRead) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, - false, {}, &bl, &extent_map, &ctx); + &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, + &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -484,8 +484,8 @@ TEST_F(TestMockIoObjectRequest, ParentReadError) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, - false, {}, &bl, &extent_map, &ctx); + &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, + &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(-EPERM, ctx.wait()); } @@ -538,8 +538,8 @@ TEST_F(TestMockIoObjectRequest, CopyOnRead) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, - false, {}, &bl, &extent_map, &ctx); + &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, + &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } -- 2.39.5