From 54e8e4608708fc38e6d0de7e4bc352e9a442c02f Mon Sep 17 00:00:00 2001 From: lixiaoy1 Date: Fri, 19 Feb 2021 00:04:57 -0500 Subject: [PATCH] librbd/cache/pwl: wait for the completion of reads Shut down PWL after the read IOs are completed. Signed-off-by: Li, Xiaoyan --- src/librbd/cache/pwl/AbstractWriteLog.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/librbd/cache/pwl/AbstractWriteLog.cc b/src/librbd/cache/pwl/AbstractWriteLog.cc index 228ea13ca4218..0c3b7cb1891cd 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()) { -- 2.39.5