Commit 5309873d authored by Jim Harris's avatar Jim Harris Committed by Changpeng Liu
Browse files

nvme: add qpair is_connecting flag



This will be used on the adminq, and set while the
qpair is connecting.  It allows the qpair_process_completions
routine to know that it should still try to process completions,
even if the controller is resetting.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: I377b9c934295eb5f45f03efd90c2a268defb4bd4

Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/453938


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent 36d2149a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -331,6 +331,7 @@ struct spdk_nvme_qpair {
	uint8_t				qprio;

	uint8_t				is_enabled : 1;
	uint8_t				is_connecting: 1;

	/*
	 * Members for handling IO qpair deletion inside of a completion context.
+1 −1
Original line number Diff line number Diff line
@@ -425,7 +425,7 @@ spdk_nvme_qpair_process_completions(struct spdk_nvme_qpair *qpair, uint32_t max_
		return 0;
	}

	if (spdk_unlikely(!nvme_qpair_check_enabled(qpair))) {
	if (spdk_unlikely(!nvme_qpair_check_enabled(qpair) && !qpair->is_connecting)) {
		/*
		 * qpair is not enabled, likely because a controller reset is
		 *  in progress.
+6 −0
Original line number Diff line number Diff line
@@ -182,7 +182,13 @@ nvme_transport_ctrlr_delete_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_
int
nvme_transport_ctrlr_connect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair)
{
	if (nvme_qpair_is_admin_queue(qpair)) {
		qpair->is_connecting = 1;
	}
	NVME_TRANSPORT_CALL(ctrlr->trid.trtype, ctrlr_connect_qpair, (ctrlr, qpair));
	if (nvme_qpair_is_admin_queue(qpair)) {
		qpair->is_connecting = 0;
	}
}

volatile struct spdk_nvme_registers *