Spdk/lib/nvme
Shuhei Matsumoto 974c70e63f lib/nvme: nvme_ctrlr_fail() return immediately if ctrlr is already failed
As log shows

00:06:32.300  [2020-12-18 21:13:35.511014] nvme_ctrlr.c:1414:spdk_nvme_ctrlr_reset: *ERROR*: Controller reinitialization failed.
00:06:32.300  [2020-12-18 21:13:35.511104] nvme_ctrlr.c: 925:nvme_ctrlr_fail: *ERROR*: ctrlr 192.168.100.8 in failed state.
00:06:32.300  [2020-12-18 21:13:35.511132] bdev_nvme.c: 392:_bdev_nvme_reset_complete: *ERROR*: Resetting controller failed.
00:06:32.300  [2020-12-18 21:13:35.511240] nvme_ctrlr.c: 925:nvme_ctrlr_fail: *ERROR*: ctrlr 192.168.100.8 in failed state.
00:06:32.300  [2020-12-18 21:13:35.511511] bdev_nvme.c: 556:bdev_nvme_failover: *NOTICE*: Unable to perform reset, already in progress.

if spdk_nvme_ctrlr_reset() failed, nvme_ctrlr_fail() is called, and
then if spdk_nvme_ctrlr_process_admin_completions() failed,
nvme_ctrlr_fail() is called.

We don't know which one comes first but nvme_ctrlr_fail() should do
nothing if the ctrlr is already failed.

Hence we should avoid setting ctrlr->is_failed and calling
nvme_transport_ctrlr_disconnect_qpair() twice.

However we should set ctrlr->is_removed if the parameter hot_remove is true.

We do these changes in this patch.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Iac37c892e054fb59d78e69346ca7f0575d596235
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5694
Community-CI: Broadcom CI
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2020-12-28 13:28:11 +00:00
..
Makefile nvme: add function to get the max zone append data transfer size 2020-11-20 11:00:18 +00:00
nvme_ctrlr_cmd.c nvme: add a csi parameter to nvme_ctrlr_cmd_identify() 2020-09-22 11:39:53 +00:00
nvme_ctrlr_ocssd_cmd.c ocssd: hold lock when calling nvme_ctrlr_submit_admin_request 2019-02-15 21:27:58 +00:00
nvme_ctrlr.c lib/nvme: nvme_ctrlr_fail() return immediately if ctrlr is already failed 2020-12-28 13:28:11 +00:00
nvme_cuse.c lib/env_dpdk: Change the location of lock files from /tmp to /var/tmp 2020-11-17 08:25:31 +00:00
nvme_cuse.h lib/nvme: add RPC for interacting with CUSE devices 2019-10-24 23:43:59 +00:00
nvme_fabric.c log: simplify SPDK_LOG_REGISTER_COMPONENT 2020-10-14 08:00:35 +00:00
nvme_internal.h nvme: add function to get the max zone append data transfer size 2020-11-20 11:00:18 +00:00
nvme_io_msg.c lib/nvme: update io msg producers on ns manage 2020-06-05 09:01:44 +00:00
nvme_io_msg.h lib/nvme: update io msg producers on ns manage 2020-06-05 09:01:44 +00:00
nvme_ns_cmd.c log: simplify SPDK_LOG_REGISTER_COMPONENT 2020-10-14 08:00:35 +00:00
nvme_ns_ocssd_cmd.c nvme: save separate metadata size to nvme request 2020-04-02 07:02:38 +00:00
nvme_ns.c log: simplify SPDK_LOG_REGISTER_COMPONENT 2020-10-14 08:00:35 +00:00
nvme_opal_internal.h nvme/opal: deprecate spdk_opal_supported() 2020-05-20 14:16:44 +00:00
nvme_opal.c log: remove internal log.h header 2020-10-15 08:23:39 +00:00
nvme_pcie.c nvme: call correct remove_cb when device is removed 2020-12-14 14:34:42 +00:00
nvme_poll_group.c lib/nvme: switch poll group to use connect/disconnect semantics. 2020-04-22 19:06:26 +00:00
nvme_qpair.c nvme: Don't log an error when we can't resubmit all requests 2020-10-26 11:48:46 +00:00
nvme_quirks.c log: simplify SPDK_LOG_REGISTER_COMPONENT 2020-10-14 08:00:35 +00:00
nvme_rdma.c nvme/nvme_rdma: Fix possible used uninitialized value. 2020-10-16 08:15:57 +00:00
nvme_tcp.c nvme_tcp: Fix icreq/icresp handing with zcopy enabled. 2020-10-30 09:05:35 +00:00
nvme_transport.c log: simplify SPDK_LOG_REGISTER_COMPONENT 2020-10-14 08:00:35 +00:00
nvme_uevent.c lib/nvme: Add error handler for parse_event 2020-11-17 08:25:31 +00:00
nvme_uevent.h nvme: read all uevents 2020-08-24 07:38:33 +00:00
nvme_zns.c nvme: add function to get the max zone append data transfer size 2020-11-20 11:00:18 +00:00
nvme.c lib/nvme: Simplify the code related with nvme_ctrlr_opts init 2020-12-14 14:30:18 +00:00
spdk_nvme.map nvme: call correct remove_cb when device is removed 2020-12-14 14:34:42 +00:00