Spdk/test/unit/lib
Shuhei Matsumoto 2826ef13ce bdev/nvme: Fail reset sequence immediately if ctrlr is already removed.
After a controller was hot-removed, if a reset sequence started to
the controller, spdk_nvme_ctrlr_disconnect() failed and caused core
dump in debug mode.

When implemented, how to cause the failure and how to process the
failure were not clear. Hence assert was added to detect the
failure.

We know how we cause the failure now. Let's handle the failure
appropriately.

If spdk_nvme_ctrlr_disconnect() fails, we are on the nvme_ctrlr->thread.
Hence call bdev_nvme_reset_complete() with failure immediately.

Even if spdk_nvme_ctrlr_disconnect() completes synchronously, the
completion callback is executed asynchronously when polling an adminq.

Hence set the completion callback only if spdk_nvme_ctrlr_disconnect()
succeeds.

Fixes issue #2632

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I11f61853aba9eca2515592f964a291e59def7247
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13892
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2022-09-21 07:52:44 +00:00
..
accel accel: Do not refer to the "framework" as "engine" 2022-09-06 07:16:17 +00:00
bdev bdev/nvme: Fail reset sequence immediately if ctrlr is already removed. 2022-09-21 07:52:44 +00:00
blob blob: Add functions to find [un]allocated io_unit 2022-09-15 08:23:56 +00:00
blobfs print better errors when creating mempools from secondary process 2022-08-29 11:41:32 +00:00
dma Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
env_dpdk check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
event event: make opts structures packed 2022-08-18 10:08:40 +00:00
ftl ftl: nv cache write throttling 2022-09-20 19:24:26 +00:00
idxd idxd: rename internal header file to idxd_internal.h 2022-07-21 07:03:26 +00:00
init Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
ioat check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
iscsi check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
json test/unit: add spdk_json_find test for an array 2022-09-07 14:37:04 +00:00
jsonrpc check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
log check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
lvol blobstore: implement spdk_bs_grow and bdev_lvol_grow_lvstore RPC 2022-06-28 17:55:43 +00:00
notify Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
nvme test/nvme_tcp: Correct the psh_len in nvme_tcp unittest 2022-09-20 20:29:40 +00:00
nvmf nvmf: add spdk_nvmf_ctrlr_[save|restore]_migr_data() APIs 2022-09-20 10:17:24 +00:00
rdma rdma: Maintain per device PD which is persistent across reconnect 2022-08-12 08:59:43 +00:00
reduce check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
rpc rpc: Add API to get method state mask 2022-09-15 08:25:18 +00:00
scsi check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
sock sock: add assertions checking sock_impl_opts size 2022-07-29 16:49:54 +00:00
thread thread: defer unregistration when for_each ops exist 2022-08-09 08:27:15 +00:00
util util: Extract a common lib between iovs and buf. 2022-06-20 10:01:15 +00:00
vhost check_format: For C files only, fix return type breaks 2022-06-27 09:33:48 +00:00
json_mock.c Replace most BSD 3-clause license text with SPDX identifier. 2022-06-09 07:35:12 +00:00
Makefile rdma: Maintain per device PD which is persistent across reconnect 2022-08-12 08:59:43 +00:00