Commit 1cb7726b authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

bdev/nvme: Fix failback failure when connected while being reset

A commit a half year ago
https://github.com/spdk/spdk/commit/bb4be4dc57b2c2a90297dde74bddf0ceb5bf3886


caused this degradation.

ctrlr_ch->reset_iter was used to establish connections for qpairs
sequentially for controller reset. In a controller reset sequence,
ctrlr_ch->reset_iter is set until connection is actually established.

To failback correctly, clear current active path cache again to choose
the preferred path again.

Signed-off-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I78fc0b099d7836008718f08678b4a819a25703ed
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/20703


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
parent 58898ea3
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2168,6 +2168,10 @@ bdev_nvme_reset_check_qpair_connected(void *ctx)
	spdk_for_each_channel_continue(ctrlr_ch->reset_iter, 0);
	ctrlr_ch->reset_iter = NULL;

	if (!g_opts.disable_auto_failback) {
		_bdev_nvme_clear_io_path_cache(ctrlr_ch->qpair);
	}

	return SPDK_POLLER_BUSY;
}