From: Yuan Lu Date: Fri, 14 Aug 2020 19:11:30 +0000 (+0000) Subject: blk/spdk/NVMEDevice.cc: fix a memory leak issue X-Git-Tag: v16.1.0~1408^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6b98f37fef9e35af032e26464ef83a723ffcbbbc;p=ceph.git blk/spdk/NVMEDevice.cc: fix a memory leak issue Signed-off-by: Yuan Lu --- diff --git a/src/blk/spdk/NVMEDevice.cc b/src/blk/spdk/NVMEDevice.cc index 7f3cde079945..be417bbdc353 100644 --- a/src/blk/spdk/NVMEDevice.cc +++ b/src/blk/spdk/NVMEDevice.cc @@ -47,8 +47,6 @@ #undef dout_prefix #define dout_prefix *_dout << "bdev(" << sn << ") " -thread_local SharedDriverQueueData *queue_t; - static constexpr uint16_t data_buffer_default_num = 1024; static constexpr uint32_t data_buffer_size = 8192; @@ -757,8 +755,6 @@ void NVMEDevice::close() { dout(1) << __func__ << dendl; - delete queue_t; - queue_t = nullptr; name.clear(); driver->remove_device(this); @@ -796,9 +792,9 @@ void NVMEDevice::aio_submit(IOContext *ioc) ceph_assert(ioc->num_pending.load() == 0); // we should be only thread doing this // Only need to push the first entry ioc->nvme_task_first = ioc->nvme_task_last = nullptr; - if (!queue_t) - queue_t = new SharedDriverQueueData(this, driver); - queue_t->_aio_handle(t, ioc); + + thread_local SharedDriverQueueData queue_t = SharedDriverQueueData(this, driver); + queue_t._aio_handle(t, ioc); } }