Commit 9d890d3f authored by Jacek Kalwas's avatar Jacek Kalwas Committed by Tomasz Zawadzki
Browse files

nvme: add nvme_fabric_qpair_auth_cleanup util



Callback is invoked and cleared within one function now.

Change-Id: I36e5c2edb981f6511bc819aa8c16ba15c127f07f
Signed-off-by: default avatarJacek Kalwas <jacek.kalwas@nutanix.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26805


Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Community-CI: Mellanox Build Bot
parent 9611dc39
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -1206,10 +1206,7 @@ nvme_fabric_qpair_authenticate_poll(struct spdk_nvme_qpair *qpair)
			break;
		case NVME_QPAIR_AUTH_STATE_DONE:
			nvme_fabric_qpair_poll_cleanup(qpair);
			if (auth->cb_fn != NULL) {
				auth->cb_fn(auth->cb_ctx, auth->status);
				auth->cb_fn = NULL;
			}
			nvme_fabric_qpair_auth_cleanup(qpair, auth->status);
			auth->flags.in_auth_poll = false;
			return auth->status;
		default:
+1 −4
Original line number Diff line number Diff line
@@ -608,10 +608,7 @@ spdk_nvme_ctrlr_free_io_qpair(struct spdk_nvme_qpair *qpair)
		return 0;
	}

	if (qpair->auth.cb_fn != NULL) {
		qpair->auth.cb_fn(qpair->auth.cb_ctx, -ECANCELED);
		qpair->auth.cb_fn = NULL;
	}
	nvme_fabric_qpair_auth_cleanup(qpair, -ECANCELED);

	qpair->destroy_in_progress = 1;

+9 −0
Original line number Diff line number Diff line
@@ -585,6 +585,15 @@ nvme_fabric_qpair_poll_cleanup(struct spdk_nvme_qpair *qpair)
	}
}

void
nvme_fabric_qpair_auth_cleanup(struct spdk_nvme_qpair *qpair, int status)
{
	if (qpair->auth.cb_fn != NULL) {
		qpair->auth.cb_fn(qpair->auth.cb_ctx, status);
		qpair->auth.cb_fn = NULL;
	}
}

int
nvme_fabric_qpair_connect_poll(struct spdk_nvme_qpair *qpair)
{
+1 −0
Original line number Diff line number Diff line
@@ -1461,6 +1461,7 @@ bool nvme_fabric_qpair_auth_required(struct spdk_nvme_qpair *qpair);
int	nvme_fabric_qpair_authenticate_async(struct spdk_nvme_qpair *qpair);
int	nvme_fabric_qpair_authenticate_poll(struct spdk_nvme_qpair *qpair);
void	nvme_fabric_qpair_poll_cleanup(struct spdk_nvme_qpair *qpair);
void	nvme_fabric_qpair_auth_cleanup(struct spdk_nvme_qpair *qpair, int status);

typedef int (*spdk_nvme_parse_ana_log_page_cb)(
	const struct spdk_nvme_ana_group_descriptor *desc, void *cb_arg);
+1 −4
Original line number Diff line number Diff line
@@ -448,10 +448,7 @@ nvme_tcp_ctrlr_disconnect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_
	/* A Fabric command may be outstanding before a disconnect is invoked. */
	if (qpair->fabric_poll_status && !(qpair->auth.flags.in_auth_poll || qpair->in_connect_poll)) {
		nvme_fabric_qpair_poll_cleanup(qpair);
		if (qpair->auth.cb_fn != NULL) {
			qpair->auth.cb_fn(qpair->auth.cb_ctx, -ECANCELED);
			qpair->auth.cb_fn = NULL;
		}
		nvme_fabric_qpair_auth_cleanup(qpair, -ECANCELED);
	}
}

Loading