Spdk/lib/nvmf
Alexey Marchuk 97385af196 nvmf: Fix double controller destruction when subsys is deleted
When a subsystem is being deleted, we disconnect all qpairs
and when the last qpair for some controller is disconnected,
we start controller desctruction process. This process requires
to send a message to subsystem's thread to remove the controller
from the list in the subsystem and after that send a message to
controller's thread to release resources.
The problem is that the subsystem also destroys all attached
controllers. This order is unpredictable and we may get
heap-use-after-free or double free.

To fix this problem we can rely on the fact that the subsystem
can only be destroyed in incative state, that means that all
qpairs linked to the subsystem are already disconnected and
all controllers are already destroyed or in the process of
destruction.

spdk_nvmf_subsystem_destroy API is now can be asyncrhonous,
it accepts a callback with cb argument.

Change-Id: Ic72d69200bc8302dae2f8cd8ca44bc640c6a8116
Signed-off-by: Alexey Marchuk <alexeymar@mellanox.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6660
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2021-09-08 08:04:04 +00:00
..
ctrlr_bdev.c nvmf: In zcopy, delay setting req->data until end of start operation 2021-07-27 14:53:39 +00:00
ctrlr_discovery.c nvmf: remove a bdev_module.h #include 2021-05-11 11:57:01 +00:00
ctrlr.c nvmf: Fix double controller destruction when subsys is deleted 2021-09-08 08:04:04 +00:00
fc_ls.c nvmf/fc: Handle out of order fused commands. 2021-01-14 16:18:25 +00:00
fc.c lib/trace: don't pass zero as a non-argument 2021-06-28 16:17:35 +00:00
Makefile nvmf/vfio-user: don't set RESERVATION support for vfio-user transport 2021-08-25 07:27:10 +00:00
nvmf_fc.h nvmf/fc: Add flag to differentiate LS queue and non LS queue. 2021-01-14 16:18:25 +00:00
nvmf_internal.h nvmf: Fix double controller destruction when subsys is deleted 2021-09-08 08:04:04 +00:00
nvmf_rpc.c nvmf: Fix double controller destruction when subsys is deleted 2021-09-08 08:04:04 +00:00
nvmf.c nvmf: Fix double controller destruction when subsys is deleted 2021-09-08 08:04:04 +00:00
rdma.c lib/nvmf: removed deprecated stats API 2021-07-23 07:10:03 +00:00
spdk_nvmf.map lib/nvmf : Added support for ZCOPY 2021-07-23 08:34:43 +00:00
subsystem.c nvmf: Fix double controller destruction when subsys is deleted 2021-09-08 08:04:04 +00:00
tcp.c lib/nvmf : Fixed bad response if response is sent prior to _nvmf_request_complete being called 2021-09-03 08:07:55 +00:00
transport.c nvmf: add interface to dump transport specific listen opts 2021-09-06 09:53:57 +00:00
transport.h nvmf: Allow nvmf_transport_qpair_fini to complete asynchronously. 2020-11-18 11:28:02 +00:00
vfio_user.c nvmf/vfio-user: clarify endpoint fd meaning 2021-09-07 07:33:29 +00:00