Spdk/test
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
..
accel_engine test/accel_engine: add more test cases 2021-09-01 07:34:02 +00:00
app markdownlint: enable rule MD032 2021-08-26 19:27:22 +00:00
bdev bdevperf: use uint64_t to save per-job length 2021-08-20 07:27:09 +00:00
blobfs event: Shift subsystem initialization code to a separate library 2021-05-24 10:12:50 +00:00
blobstore scheduler: Change main core frequency dynamically 2021-01-22 18:31:25 +00:00
common test/nvme: Add test application to verify Boot Partition Read / Write support 2021-09-07 07:34:09 +00:00
compress test/nvmf: use recommended nvmf_create_subsystem rpc 2021-05-20 15:00:22 +00:00
config_converter scripts/config_converter: skip sections not present in legacy config 2021-01-15 08:32:10 +00:00
cpp_headers queue_extras: use SPDK_CONTAINEROF 2019-10-07 15:06:01 +00:00
dd autotest: Run dd tests under SPDK_TEST_URING 2021-05-20 15:15:33 +00:00
dpdk_memory_utility check_format: Ignore shellcheck's SC2128 and SC2178 directives 2021-06-30 22:43:05 +00:00
env test/env_dpdk_post_init: Use spdk_nvme_detach_async() 2021-06-30 22:54:19 +00:00
event scheduler: create public API and subsystem for scheduler/governor 2021-09-07 07:33:03 +00:00
external_code test_make.sh: make configure respect SPDK_RUN_EXTERNAL_DPDK 2021-08-23 08:50:18 +00:00
ftl bdev/nvme: Remove OCSSD support 2021-09-03 08:07:25 +00:00
fuzz test/iscsi: remove VPP tests 2020-08-17 08:19:46 +00:00
interrupt test/intr: correct without-thread situation 2021-07-30 08:21:43 +00:00
ioat build: Example applications build to build/example 2020-06-15 15:27:16 +00:00
iscsi_tgt iscsi_tgt/rpc_config: Give some extra time for the process to die 2021-07-29 07:03:01 +00:00
json_config scheduler: add scheduler subsystem JSON configuration 2021-09-07 07:33:03 +00:00
lvol test/lvol: rename lvol test script 2020-10-20 08:54:53 +00:00
make build: don't put out-of-tree ocf build in build/ dir 2021-08-17 08:54:30 +00:00
nvme test/nvme: Add test application to verify Boot Partition Read / Write support 2021-09-07 07:34:09 +00:00
nvmf test/nvmf: reduce number of loops in rpc.sh test 2021-08-20 07:29:25 +00:00
ocf check_format: Fixes for shellcheck's SC2251 directive 2021-06-30 22:43:05 +00:00
openstack test/openstack: Enable securitygroup driver in neutron 2021-07-09 19:19:48 +00:00
pmem build: Output executables from the app directory to build/bin 2020-06-15 15:27:16 +00:00
rpc autotest: Use rpc_cmd() for rpc plugin-based tests 2021-04-02 08:22:42 +00:00
rpc_client build: use DEPDIRS variables to build SPDK_LIB_LIST 2020-12-18 09:40:01 +00:00
rpc_plugins autotest: Use rpc_cmd() for rpc plugin-based tests 2021-04-02 08:22:42 +00:00
scheduler test/scheduler: Check if load on all working CPUs is under 80% 2021-07-19 08:05:19 +00:00
setup bdev/nvme: Remove OCSSD support 2021-09-03 08:07:25 +00:00
spdkcli autotest: Don't override default amount of hugepages on Linux to 8GB 2021-06-24 17:33:10 +00:00
thread test/thread: Add poller_perf to evaluate cost to run poller 2021-08-20 07:29:42 +00:00
unit nvmf: Fix double controller destruction when subsys is deleted 2021-09-08 08:04:04 +00:00
vhost test/vhost: enable BPF traces in performance tests 2021-08-23 08:48:05 +00:00
vmd test: replace VMD_WHITELIST with VMD_ALLOWED 2020-12-03 09:41:07 +00:00
Makefile test/thread: Add poller_perf to evaluate cost to run poller 2021-08-20 07:29:42 +00:00
spdk_cunit.h test: remove leftover spdk_cunit declaration 2018-07-06 22:47:56 +00:00