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

bdev/nvme: always log traddr, restrict subnqn to fabrics



traddr and trsvcid are printed regardless of the transport type, as
seeing the address and port for fabrics is also beneficial.

subnqn is relevant only for fabrics, hence it is suppressed for other
types.

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


Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
parent ae0fb904
Loading
Loading
Loading
Loading
+13 −33
Original line number Diff line number Diff line
@@ -38,9 +38,12 @@

#define CTRLR_ID(nvme_ctrlr)   (spdk_nvme_ctrlr_get_id(nvme_ctrlr->ctrlr))

#define NVME_CTRLR_LOG_FMT "%s,%u"
#define NVME_CTRLR_LOG_FMT "%s%s%s:%s,%u"
#define NVME_CTRLR_LOG_ARGS(ctrlr) \
  CTRLR_STRING(ctrlr), \
  spdk_nvme_trtype_is_fabrics((ctrlr)->active_path_id->trid.trtype) ? (ctrlr)->active_path_id->trid.subnqn : "", \
  spdk_nvme_trtype_is_fabrics((ctrlr)->active_path_id->trid.trtype) ? "," : "", \
  (ctrlr)->active_path_id->trid.traddr, \
  (ctrlr)->active_path_id->trid.trsvcid, \
  CTRLR_ID(ctrlr)

#define NVME_BDEV_LOG_FMT "%s"
@@ -2085,10 +2088,8 @@ bdev_nvme_failover_trid(struct nvme_ctrlr *nvme_ctrlr, bool remove, bool start)

	assert(path_id->trid.trtype != SPDK_NVME_TRANSPORT_PCIE);

	NVME_CTRLR_NOTICELOG(nvme_ctrlr, "Start failover from %s:%s to %s:%s\n",
			     path_id->trid.traddr, path_id->trid.trsvcid,
			     next_path->trid.traddr, next_path->trid.trsvcid);

	NVME_CTRLR_NOTICELOG(nvme_ctrlr, "Start failover to %s:%s\n", next_path->trid.traddr,
			     next_path->trid.trsvcid);
	spdk_nvme_ctrlr_fail(nvme_ctrlr->ctrlr);
	nvme_ctrlr->active_path_id = next_path;
	rc = spdk_nvme_ctrlr_set_trid(nvme_ctrlr->ctrlr, &next_path->trid);
@@ -2300,10 +2301,7 @@ bdev_nvme_reset_ctrlr_complete(struct nvme_ctrlr *nvme_ctrlr, bool success)
			/* The next alternate trid exists and is ready to try. Try it now. */
			pthread_mutex_unlock(&nvme_ctrlr->mutex);

			NVME_CTRLR_INFOLOG(nvme_ctrlr, "Try the next alternate trid %s:%s now.\n",
					   nvme_ctrlr->active_path_id->trid.traddr,
					   nvme_ctrlr->active_path_id->trid.trsvcid);

			NVME_CTRLR_INFOLOG(nvme_ctrlr, "Try the next alternate trid now.\n");
			nvme_ctrlr_disconnect(nvme_ctrlr, bdev_nvme_reconnect_ctrlr);
			return;
		}
@@ -2521,7 +2519,6 @@ static int
bdev_nvme_reconnect_ctrlr_poll(void *arg)
{
	struct nvme_ctrlr *nvme_ctrlr = arg;
	struct spdk_nvme_transport_id *trid;
	int rc = -ETIMEDOUT;

	if (bdev_nvme_check_ctrlr_loss_timeout(nvme_ctrlr)) {
@@ -2539,15 +2536,7 @@ bdev_nvme_reconnect_ctrlr_poll(void *arg)

	spdk_poller_unregister(&nvme_ctrlr->reset_detach_poller);
	if (rc == 0) {
		trid = &nvme_ctrlr->active_path_id->trid;

		if (spdk_nvme_trtype_is_fabrics(trid->trtype)) {
			NVME_CTRLR_INFOLOG(nvme_ctrlr, "ctrlr was connected to %s:%s. Create qpairs.\n",
					   trid->traddr, trid->trsvcid);
		} else {
		NVME_CTRLR_INFOLOG(nvme_ctrlr, "ctrlr was connected. Create qpairs.\n");
		}

		nvme_ctrlr_check_namespaces(nvme_ctrlr);

		/* Recreate all of the I/O queue pairs */
@@ -5751,14 +5740,7 @@ static void
nvme_ctrlr_create_done(struct nvme_ctrlr *nvme_ctrlr,
		       struct nvme_async_probe_ctx *ctx)
{
	struct spdk_nvme_transport_id *trid = &nvme_ctrlr->active_path_id->trid;

	if (spdk_nvme_trtype_is_fabrics(trid->trtype)) {
		NVME_CTRLR_INFOLOG(nvme_ctrlr, "ctrlr was created to %s:%s\n",
				   trid->traddr, trid->trsvcid);
	} else {
	NVME_CTRLR_INFOLOG(nvme_ctrlr, "ctrlr was created\n");
	}

	spdk_io_device_register(nvme_ctrlr,
				bdev_nvme_create_ctrlr_channel_cb,
@@ -6536,17 +6518,15 @@ bdev_nvme_check_secondary_trid(struct nvme_ctrlr *nvme_ctrlr,

	/* Currently we only support failover to the same NQN. */
	if (strncmp(trid->subnqn, nvme_ctrlr->active_path_id->trid.subnqn, SPDK_NVMF_NQN_MAX_LEN)) {
		NVME_CTRLR_WARNLOG(nvme_ctrlr,
				   "Failover from subnqn: %s to a different subnqn: %s is not supported currently\n",
				   nvme_ctrlr->active_path_id->trid.subnqn, trid->subnqn);
		NVME_CTRLR_WARNLOG(nvme_ctrlr, "Failover to a different subnqn: %s is not supported currently\n",
				   trid->subnqn);
		return -EINVAL;
	}

	/* Skip all the other checks if we've already registered this path. */
	TAILQ_FOREACH(tmp_trid, &nvme_ctrlr->trids, link) {
		if (!spdk_nvme_transport_id_compare(&tmp_trid->trid, trid)) {
			NVME_CTRLR_WARNLOG(nvme_ctrlr, "This path (traddr: %s subnqn: %s) is already registered\n",
					   trid->traddr, trid->subnqn);
			NVME_CTRLR_WARNLOG(nvme_ctrlr, "This path is already registered\n");
			return -EALREADY;
		}
	}