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> |
||
---|---|---|
.. | ||
accel | ||
bdev | ||
blob | ||
blobfs | ||
env_dpdk | ||
event | ||
scheduler | ||
sock | ||
Makefile |