Commit b5bd8c9d authored by Pawel Baldysiak's avatar Pawel Baldysiak Committed by Jim Harris
Browse files

nvmf_tgt: Extract generic admin cmd handler for passthru



Identify ctrlr cmd handling for passthru is already implemented.
Rearange this function to get generic handler for passthru admin cmds.
It will be used for other custom handlers in the further patches.
Rephrase the comments when returning -1 to better indicate what is happening.

"Continue" refers to SPDK fallback to default handlers - it might be
confusing.

Change-Id: I19addae7969746d5849774615c27e2ca1b33951a
Signed-off-by: default avatarPawel Baldysiak <pawel.baldysiak@dell.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26130


Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
parent 2bd876f8
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -400,19 +400,15 @@ fixup_identify_ctrlr(struct spdk_nvmf_request *req)
}

static int
nvmf_custom_identify_hdlr(struct spdk_nvmf_request *req)
nvmf_admin_passthru_generic_hdlr(struct spdk_nvmf_request *req,
				 spdk_nvmf_nvme_passthru_cmd_cb cb_fn)
{
	struct spdk_nvme_cmd *cmd = spdk_nvmf_request_get_cmd(req);
	struct spdk_bdev *bdev;
	struct spdk_bdev_desc *desc;
	struct spdk_io_channel *ch;
	struct spdk_nvmf_subsystem *subsys;
	int rc;

	if (cmd->cdw10_bits.identify.cns != SPDK_NVME_IDENTIFY_CTRLR) {
		return -1; /* continue */
	}

	subsys = spdk_nvmf_request_get_subsystem(req);
	if (subsys == NULL) {
		return -1;
@@ -426,7 +422,7 @@ nvmf_custom_identify_hdlr(struct spdk_nvmf_request *req)
	/* Forward to first namespace if it supports NVME admin commands */
	rc = spdk_nvmf_request_get_bdev(1, req, &bdev, &desc, &ch);
	if (rc) {
		/* No bdev found for this namespace. Continue. */
		/* No bdev found for this namespace */
		return -1;
	}

@@ -434,7 +430,19 @@ nvmf_custom_identify_hdlr(struct spdk_nvmf_request *req)
		return -1;
	}

	return spdk_nvmf_bdev_ctrlr_nvme_passthru_admin(bdev, desc, ch, req, fixup_identify_ctrlr);
	return spdk_nvmf_bdev_ctrlr_nvme_passthru_admin(bdev, desc, ch, req, cb_fn);
}

static int
nvmf_custom_identify_hdlr(struct spdk_nvmf_request *req)
{
	struct spdk_nvme_cmd *cmd = spdk_nvmf_request_get_cmd(req);

	if (cmd->cdw10_bits.identify.cns != SPDK_NVME_IDENTIFY_CTRLR) {
		return -1; /* Only support Identify Controller */
	}

	return nvmf_admin_passthru_generic_hdlr(req, fixup_identify_ctrlr);
}

static void