]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd/cache/pwl: wait for the completion of reads 39567/head
authorlixiaoy1 <xiaoyan.li@intel.com>
Fri, 19 Feb 2021 05:04:57 +0000 (00:04 -0500)
committerlixiaoy1 <xiaoyan.li@intel.com>
Fri, 19 Feb 2021 05:04:57 +0000 (00:04 -0500)
Shut down PWL after the read IOs are completed.

Signed-off-by: Li, Xiaoyan <xiaoyan.li@intel.com>
src/librbd/cache/pwl/AbstractWriteLog.cc

index 228ea13ca421839704abc4b842079cae0c63683a..0c3b7cb1891cd4abfffa791bbe9c7c9b466b26c4 100644 (file)
@@ -671,6 +671,12 @@ void AbstractWriteLog<I>::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<I>::read(Extents&& image_extents,
   std::vector<WriteLogCacheEntry*> log_entries_to_read;
   std::vector<bufferlist*> 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()) {