From: Jason Dillaman Date: Mon, 9 Apr 2018 15:01:23 +0000 (-0400) Subject: librbd: disable ENOENT tracking within the object cacher X-Git-Tag: v13.1.0~314^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=36d8b6438cb7ceaa4ce07b7a21da1b58c67dc232;p=ceph.git librbd: disable ENOENT tracking within the object cacher Now that the in-memory cache has been flattened, we don't want/need to track the existence of individual objects within an image and its parent hierarchy. Fixes: http://tracker.ceph.com/issues/23597 Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/LibrbdWriteback.cc b/src/librbd/LibrbdWriteback.cc index 41127c4808a6..082cc22c7d07 100644 --- a/src/librbd/LibrbdWriteback.cc +++ b/src/librbd/LibrbdWriteback.cc @@ -145,7 +145,7 @@ namespace librbd { aio_comp->set_request_count(1); auto req_comp = new io::ReadResult::C_ObjectReadRequest( - aio_comp, off, len, {{0, len}}, false); + aio_comp, off, len, {{0, len}}); auto req = io::ObjectDispatchSpec::create_read( m_ictx, io::OBJECT_DISPATCH_LAYER_CACHE, oid.name, object_no, off, len, diff --git a/src/librbd/cache/ObjectCacherObjectDispatch.cc b/src/librbd/cache/ObjectCacherObjectDispatch.cc index 3a5ac40e7528..504a181ef2f9 100644 --- a/src/librbd/cache/ObjectCacherObjectDispatch.cc +++ b/src/librbd/cache/ObjectCacherObjectDispatch.cc @@ -132,7 +132,6 @@ void ObjectCacherObjectDispatch::init() { m_object_set = new ObjectCacher::ObjectSet(nullptr, m_image_ctx->data_ctx.get_id(), 0); - m_object_set->return_enoent = true; m_object_cacher->start(); m_cache_lock.Unlock(); diff --git a/src/librbd/io/ImageRequest.cc b/src/librbd/io/ImageRequest.cc index 496b43dcec37..0b2aa121c8f9 100644 --- a/src/librbd/io/ImageRequest.cc +++ b/src/librbd/io/ImageRequest.cc @@ -208,7 +208,7 @@ void ImageReadRequest::send_request() { auto req_comp = new io::ReadResult::C_ObjectReadRequest( aio_comp, extent.offset, extent.length, - std::move(extent.buffer_extents), true); + std::move(extent.buffer_extents)); auto req = ObjectDispatchSpec::create_read( &image_ctx, OBJECT_DISPATCH_LAYER_NONE, extent.oid.name, extent.objectno, extent.offset, extent.length, snap_id, m_op_flags, diff --git a/src/librbd/io/ReadResult.cc b/src/librbd/io/ReadResult.cc index 5a4dc18e9b61..20ba6f045216 100644 --- a/src/librbd/io/ReadResult.cc +++ b/src/librbd/io/ReadResult.cc @@ -108,10 +108,9 @@ void ReadResult::C_ImageReadRequest::finish(int r) { ReadResult::C_ObjectReadRequest::C_ObjectReadRequest( AioCompletion *aio_completion, uint64_t object_off, uint64_t object_len, - Extents&& buffer_extents, bool ignore_enoent) + Extents&& buffer_extents) : aio_completion(aio_completion), object_off(object_off), - object_len(object_len), buffer_extents(std::move(buffer_extents)), - ignore_enoent(ignore_enoent) { + object_len(object_len), buffer_extents(std::move(buffer_extents)) { aio_completion->add_request(); } @@ -120,7 +119,7 @@ void ReadResult::C_ObjectReadRequest::finish(int r) { ldout(cct, 10) << "C_ObjectReadRequest: r=" << r << dendl; - if (ignore_enoent && r == -ENOENT) { + if (r == -ENOENT) { r = 0; } if (r >= 0) { diff --git a/src/librbd/io/ReadResult.h b/src/librbd/io/ReadResult.h index 5ae6e978aa59..6fb5e4a4c18f 100644 --- a/src/librbd/io/ReadResult.h +++ b/src/librbd/io/ReadResult.h @@ -41,14 +41,12 @@ public: uint64_t object_off; uint64_t object_len; Extents buffer_extents; - bool ignore_enoent; bufferlist bl; ExtentMap extent_map; C_ObjectReadRequest(AioCompletion *aio_completion, uint64_t object_off, - uint64_t object_len, Extents&& buffer_extents, - bool ignore_enoent); + uint64_t object_len, Extents&& buffer_extents); void finish(int r) override; };