From: tone-zhang Date: Fri, 1 Jun 2018 04:41:33 +0000 (+0000) Subject: spdk: fix ceph-osd crash when activate SPDK X-Git-Tag: v14.0.1~1179^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=e1bd985b341553876888339620b7b9e76f078e7a;p=ceph.git spdk: fix ceph-osd crash when activate SPDK When activate SPDK in Ceph, observe a Ceph crash. It happened in the case 1) there is a pending IOContext in NVMEDevice and 2) the lower block device has been recreated and queue_t then points to an NVMEDevice that no longer exists. This patch addresses the problem by deleting and zeroing queue_t when NVMEDevice is closed. Fixes: http://tracker.ceph.com/issues/24371 Signed-off-by: tone-zhang --- diff --git a/src/os/bluestore/NVMEDevice.cc b/src/os/bluestore/NVMEDevice.cc index 8738e211a71a1..0fcfafd71aa4a 100644 --- a/src/os/bluestore/NVMEDevice.cc +++ b/src/os/bluestore/NVMEDevice.cc @@ -795,6 +795,8 @@ void NVMEDevice::close() { dout(1) << __func__ << dendl; + delete queue_t; + queue_t = nullptr; name.clear(); driver->remove_device(this);