From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49175) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZzZSD-0000I0-To for qemu-devel@nongnu.org; Thu, 19 Nov 2015 19:21:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZzZSD-0003IP-3J for qemu-devel@nongnu.org; Thu, 19 Nov 2015 19:21:29 -0500 Received: from mail.kernel.org ([198.145.29.136]:44538) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZzZSC-0003IC-UP for qemu-devel@nongnu.org; Thu, 19 Nov 2015 19:21:29 -0500 From: Ming Lin Date: Thu, 19 Nov 2015 16:21:05 -0800 Message-Id: <1447978868-17138-7-git-send-email-mlin@kernel.org> In-Reply-To: <1447978868-17138-1-git-send-email-mlin@kernel.org> References: <1447978868-17138-1-git-send-email-mlin@kernel.org> Subject: [Qemu-devel] [RFC PATCH 6/9] nvmet: add a "parse_extra_admin_cmd" hook List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: linux-nvme@lists.infradead.org Cc: Ming Lin , Christoph Hellwig , qemu-devel@nongnu.org, "Nicholas A. Bellinger" , virtualization@lists.linux-foundation.org From: Ming Lin This is used to execute controller specific cmd parse code Signed-off-by: Ming Lin --- drivers/nvme/target/admin-cmd.c | 7 +++++++ drivers/nvme/target/nvmet.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/drivers/nvme/target/admin-cmd.c b/drivers/nvme/target/admin-cmd.c index d9db0d4..f009c77 100644 --- a/drivers/nvme/target/admin-cmd.c +++ b/drivers/nvme/target/admin-cmd.c @@ -346,6 +346,13 @@ int nvmet_parse_admin_cmd(struct nvmet_req *req) req->data = 0; return 0; #endif + default: + if (req->sq->ctrl->parse_extra_admin_cmd) { + int ret = req->sq->ctrl->parse_extra_admin_cmd(req); + + if (!ret) + return 0; + } } pr_err("nvmet: unhandled cmd %d\n", cmd->common.opcode); diff --git a/drivers/nvme/target/nvmet.h b/drivers/nvme/target/nvmet.h index eac008b..ef79813 100644 --- a/drivers/nvme/target/nvmet.h +++ b/drivers/nvme/target/nvmet.h @@ -44,6 +44,8 @@ struct nvmet_sq { u16 size; }; +struct nvmet_req; + struct nvmet_ctrl { struct nvmet_subsys *subsys; struct nvmet_cq **cqs; @@ -62,6 +64,7 @@ struct nvmet_ctrl { void *opaque; void (*start)(void *); + int (*parse_extra_admin_cmd)(struct nvmet_req *); }; struct nvmet_subsys { -- 1.9.1