Spdk/lib
Jim Harris ba6f6c5eb0 nvmf: wait for qpair disconnect cbs when removing subsys
nvmf_poll_group_remove_subsystem_msg() disconnects all
qpairs associated with controllers in the specified
subsystem.  If it finds any controllers that need to
be disconnected, it sends a message to the running
thread to execute the same function again later.

But when it runs again later, the qpair may no longer
be in the poll group, but there could still be
outstanding messages being sent between threads.  For
example, _nvmf_qpair_destroy() needs to send a message
to the ctrlr->thread to clear the qpair mask bit.

All of this could result in the nvmf target starting
to destroy poll groups prematurely.  Destroy poll
groups results in the nvmf spdk_threads exiting. If
there are still messages being processed from
the STOP_SUBSYSTEMS target state, we can get
use-after-free errors since processing of those
messages could access freed memory associated with
the exited thread.

Fixes issue #1850.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I1e63b9addb2956495a69b5108a41e029f6f9a85d
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7275
Community-CI: Broadcom CI
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: <dongx.yi@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2021-04-14 15:35:08 +00:00
..
accel lib/accel: Add the real chained crc32 support with the example. 2021-02-25 10:25:49 +00:00
bdev bdev/zone: add support for max zone append size 2021-03-29 10:17:45 +00:00
blob so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
blobfs so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
conf so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
env_dpdk lib: add a hotplug lib for device 2021-04-12 09:48:21 +00:00
env_ocf lib/thead: print error log when create mempool or ring failed 2020-11-05 09:41:06 +00:00
event reactor: get_rusage directly in reactor_run 2021-03-22 09:50:27 +00:00
ftl so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
idxd lib/idxd: remove unsed config elements and add a config print 2021-03-26 08:22:33 +00:00
ioat so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
iscsi lib/iscsi: Factor out submitting write subtask for Data-OUT PDU 2021-04-13 08:38:51 +00:00
json so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
jsonrpc so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
log so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
lvol so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
nbd lib/nbd: fix deadStore issue in nbd_cleanup_io() 2021-03-29 07:29:57 +00:00
net so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
notify so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
nvme nvme/pcie: Add statistics per poll group 2021-04-13 21:30:52 +00:00
nvmf nvmf: wait for qpair disconnect cbs when removing subsys 2021-04-14 15:35:08 +00:00
rdma include: remove util.h include from queue_extras.h 2021-04-14 07:25:21 +00:00
reduce so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
rocksdb build: use DEPDIRS variables to build SPDK_LIB_LIST 2020-12-18 09:40:01 +00:00
rpc so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
scsi scsi: relax spdk_scsi_task_gather_data assert 2021-03-09 08:53:21 +00:00
sock sock: Eliminate init parameter of sock_map_insert 2021-04-09 17:15:57 +00:00
thread thread: ack msg_fd directly in intr_msg_proc 2021-04-13 08:41:08 +00:00
trace so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
ut_mock so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
util lib/util/math.c: improve portability 2021-02-10 08:44:01 +00:00
vfio_user include: remove util.h include from queue_extras.h 2021-04-14 07:25:21 +00:00
vhost lib:vhost Add version check when use RTE_VHOST_USER_ASYNC_COPY in 21.01 2021-02-11 08:40:31 +00:00
virtio include: remove util.h include from queue_extras.h 2021-04-14 07:25:21 +00:00
vmd so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
Makefile NVMe/vfio-user: add initial version vfio-user transport to NVMe driver 2021-01-21 05:00:18 +00:00