From: lixiaoy1 Date: Fri, 19 Feb 2021 05:04:57 +0000 (-0500) Subject: librbd/cache/pwl: wait for the completion of reads X-Git-Tag: v17.1.0~2907^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=54e8e4608708fc38e6d0de7e4bc352e9a442c02f;p=ceph-ci.git librbd/cache/pwl: wait for the completion of reads Shut down PWL after the read IOs are completed. Signed-off-by: Li, Xiaoyan --- diff --git a/src/librbd/cache/pwl/AbstractWriteLog.cc b/src/librbd/cache/pwl/AbstractWriteLog.cc index 228ea13ca42..0c3b7cb1891 100644 --- a/src/librbd/cache/pwl/AbstractWriteLog.cc +++ b/src/librbd/cache/pwl/AbstractWriteLog.cc @@ -671,6 +671,12 @@ void AbstractWriteLog::read(Extents&& image_extents, // TODO: handle writesame and discard case in later PRs CephContext *cct = m_image_ctx.cct; utime_t now = ceph_clock_now(); + + on_finish = new LambdaContext( + [this, on_finish](int r) { + m_async_op_tracker.finish_op(); + on_finish->complete(r); + }); C_ReadRequest *read_ctx = m_builder->create_read_request( cct, now, m_perfcounter, bl, on_finish); ldout(cct, 20) << "name: " << m_image_ctx.name << " id: " << m_image_ctx.id @@ -685,6 +691,7 @@ void AbstractWriteLog::read(Extents&& image_extents, std::vector log_entries_to_read; std::vector bls_to_read; + m_async_op_tracker.start_op(); Context *ctx = new LambdaContext( [this, read_ctx, fadvise_flags](int r) { if (read_ctx->miss_extents.empty()) {