| From 47b0613eb31a24b8974d0479fc6a2f77be872d69 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 8 Aug 2021 09:20:14 +0300 |
| Subject: nvmet: pass back cntlid on successful completion |
| |
| From: Amit Engel <amit.engel@dell.com> |
| |
| [ Upstream commit e804d5abe2d74cfe23f5f83be580d1cdc9307111 ] |
| |
| According to the NVMe specification, the response dword 0 value of the |
| Connect command is based on status code: return cntlid for successful |
| compeltion return IPO and IATTR for connect invalid parameters. Fix |
| a missing error information for a zero sized queue, and return the |
| cntlid also for I/O queue Connect commands. |
| |
| Signed-off-by: Amit Engel <amit.engel@dell.com> |
| Signed-off-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/nvme/target/fabrics-cmd.c | 9 +++++---- |
| 1 file changed, 5 insertions(+), 4 deletions(-) |
| |
| diff --git a/drivers/nvme/target/fabrics-cmd.c b/drivers/nvme/target/fabrics-cmd.c |
| index 7d0f3523fdab..8ef564c3b32c 100644 |
| --- a/drivers/nvme/target/fabrics-cmd.c |
| +++ b/drivers/nvme/target/fabrics-cmd.c |
| @@ -120,6 +120,7 @@ static u16 nvmet_install_queue(struct nvmet_ctrl *ctrl, struct nvmet_req *req) |
| if (!sqsize) { |
| pr_warn("queue size zero!\n"); |
| req->error_loc = offsetof(struct nvmf_connect_command, sqsize); |
| + req->cqe->result.u32 = IPO_IATTR_CONNECT_SQE(sqsize); |
| ret = NVME_SC_CONNECT_INVALID_PARAM | NVME_SC_DNR; |
| goto err; |
| } |
| @@ -260,11 +261,11 @@ static void nvmet_execute_io_connect(struct nvmet_req *req) |
| } |
| |
| status = nvmet_install_queue(ctrl, req); |
| - if (status) { |
| - /* pass back cntlid that had the issue of installing queue */ |
| - req->cqe->result.u16 = cpu_to_le16(ctrl->cntlid); |
| + if (status) |
| goto out_ctrl_put; |
| - } |
| + |
| + /* pass back cntlid for successful completion */ |
| + req->cqe->result.u16 = cpu_to_le16(ctrl->cntlid); |
| |
| pr_debug("adding queue %d to ctrl %d.\n", qid, ctrl->cntlid); |
| |
| -- |
| 2.30.2 |
| |