From: Yuan Lu Date: Fri, 28 Aug 2020 18:27:50 +0000 (+0000) Subject: blk/spdk/NVMEDevice.cc: fix a core dump issue of sync read X-Git-Tag: v16.1.0~1295^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F36866%2Fhead;p=ceph.git blk/spdk/NVMEDevice.cc: fix a core dump issue of sync read Signed-off-by: Yuan Lu --- diff --git a/src/blk/spdk/NVMEDevice.cc b/src/blk/spdk/NVMEDevice.cc index be417bbdc353..d95214e540d6 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;