Spdk/module
Shuhei Matsumoto 4e23653592 nvmf_tgt: Detect completion of poll group destroy at shutdown
Previously NVMe-oF target had requested each thread to destroy
its poll group, but had moved to the next state without waiting
for completion.

To create and destroy poll group threads dynamically, NVMe-oF
target have to know the completion of poll group destroy.

The reason is as follows.

spdk_thread_exit() requires that each poll group thread to unregister
its pollers, but poller unregistration is done asynchronously, and
releaes its I/O channels, but I/O channel release is done
asynchronously.

This patch does the following.

To avoid using mutex, add the init thread.

spdk_for_each_thread() requires completion callback but the
completion callback is usable only if each message handler is
synchronous. spdk_nvmf_poll_group_destroy() is asynchronous now.
So replace spdk_for_each_thread() by parsing g_poll_groups and
sending message to each corresonding thread.

Then add comletion callback nvmf_tgt_destroy_poll_group_done() to
spdk_nvmf_poll_group_destroy().

nvmf_tgt_destroy_poll_group_done() sends message to the init
thread.

The init thread executes _nvmf_tgt_destroy_poll_group_done().
_nvmf_tgt_destroy_poll_group_done() decrements g_num_poll_groups
and move to the next state if it becomes zero.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I97eb90b9dbff29d7702b20cf7ac233d39d7216b6
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/496
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2020-03-17 08:49:00 +00:00
..
accel module/ioat: fix pci device cleanup on exit 2020-02-21 09:38:09 +00:00
bdev module/crypto: increase the number of queue pairs for AESNI_MB 2020-03-16 08:45:58 +00:00
blob blob_bdev: add spdk_bdev_create_bs_dev_from_desc 2019-09-18 02:59:59 +00:00
blobfs rpc/blobfs: add cache size setting rpc 2019-11-07 00:33:25 +00:00
env_dpdk env_dpdk/rpc: add rpc to get memory stats. 2019-12-13 11:05:57 +00:00
event nvmf_tgt: Detect completion of poll group destroy at shutdown 2020-03-17 08:49:00 +00:00
sock sock/posix: Internally buffer reads. 2020-03-17 08:23:07 +00:00
Makefile global: rename copy to accel 2020-02-18 08:05:34 +00:00