From 3b4714bc964a399aeba7b773dd6e2c5bff20de92 Mon Sep 17 00:00:00 2001 From: Yuan Lu Date: Fri, 28 Aug 2020 18:27:50 +0000 Subject: [PATCH] blk/spdk/NVMEDevice.cc: fix a core dump issue of sync read Signed-off-by: Yuan Lu --- src/blk/spdk/NVMEDevice.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/blk/spdk/NVMEDevice.cc b/src/blk/spdk/NVMEDevice.cc index be417bbdc353b..d95214e540d63 100644 --- a/src/blk/spdk/NVMEDevice.cc +++ b/src/blk/spdk/NVMEDevice.cc @@ -922,11 +922,11 @@ int NVMEDevice::read(uint64_t off, uint64_t len, bufferlist *pbl, bufferptr p = buffer::create_small_page_aligned(len); char *buf = p.c_str(); - ceph_assert(ioc->nvme_task_first == nullptr); - ceph_assert(ioc->nvme_task_last == nullptr); - make_read_tasks(this, off, ioc, buf, len, &t, off, len); + // for sync read, need to control IOContext in itself + IOContext read_ioc(cct, nullptr); + make_read_tasks(this, off, &read_ioc, buf, len, &t, off, len); dout(5) << __func__ << " " << off << "~" << len << dendl; - aio_submit(ioc); + aio_submit(&read_ioc); pbl->push_back(std::move(p)); return t.return_code; -- 2.39.5