From: Christoph Hellwig <hch@bombadil.infradead.org> To: Jens Axboe <axboe@kernel.dk> Cc: "Josef Bacik" <jbacik@fb.com>, "James Smart" <james.smart@broadcom.com>, "Konrad Rzeszutek Wilk" <konrad.wilk@oracle.com>, "Roger Pau Monné" <roger.pau@citrix.com>, linux-scsi@vger.kernel.org, linux-nvme@lists.infradead.org, linux-block@vger.kernel.org, dm-devel@redhat.com, "Christoph Hellwig" <hch@lst.de> Subject: nvme-fc: fix status code handling in nvme_fc_fcpio_done Date: Tue, 18 Apr 2017 08:52:08 -0700 [thread overview] Message-ID: <20170418155229.5977-3-hch@bombadil.infradead.org> (raw) In-Reply-To: <20170418155229.5977-1-hch@bombadil.infradead.org> From: Christoph Hellwig <hch@lst.de> nvme_complete_async_event expects the little endian status code including the phase bit, and a new completion handler I plan to introduce will do so as well. Change the status variable into the little endian format with the phase bit used in the NVMe CQE to fix / enable this. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> --- drivers/nvme/host/fc.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index fc42172c796a..aad7f9c0be32 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -1147,7 +1147,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) struct nvme_fc_ctrl *ctrl = op->ctrl; struct nvme_fc_queue *queue = op->queue; struct nvme_completion *cqe = &op->rsp_iu.cqe; - u16 status = NVME_SC_SUCCESS; + __le16 status = cpu_to_le16(NVME_SC_SUCCESS << 1); /* * WARNING: @@ -1182,9 +1182,9 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) sizeof(op->rsp_iu), DMA_FROM_DEVICE); if (atomic_read(&op->state) == FCPOP_STATE_ABORTED) - status = NVME_SC_ABORT_REQ | NVME_SC_DNR; + status = cpu_to_le16((NVME_SC_ABORT_REQ | NVME_SC_DNR) << 1); else if (freq->status) - status = NVME_SC_FC_TRANSPORT_ERROR; + status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1); /* * For the linux implementation, if we have an unsuccesful @@ -1212,7 +1212,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) */ if (freq->transferred_length != be32_to_cpu(op->cmd_iu.data_len)) { - status = NVME_SC_FC_TRANSPORT_ERROR; + status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1); goto done; } op->nreq.result.u64 = 0; @@ -1229,15 +1229,15 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) freq->transferred_length || op->rsp_iu.status_code || op->rqno != le16_to_cpu(cqe->command_id))) { - status = NVME_SC_FC_TRANSPORT_ERROR; + status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1); goto done; } op->nreq.result = cqe->result; - status = le16_to_cpu(cqe->status) >> 1; + status = cqe->status; break; default: - status = NVME_SC_FC_TRANSPORT_ERROR; + status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1); goto done; } @@ -1249,7 +1249,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) return; } - blk_mq_complete_request(rq, status); + blk_mq_complete_request(rq, le16_to_cpu(status) >> 1); } static int -- 2.11.0
WARNING: multiple messages have this Message-ID (diff)
From: hch@bombadil.infradead.org (Christoph Hellwig) Subject: nvme-fc: fix status code handling in nvme_fc_fcpio_done Date: Tue, 18 Apr 2017 08:52:08 -0700 [thread overview] Message-ID: <20170418155229.5977-3-hch@bombadil.infradead.org> (raw) In-Reply-To: <20170418155229.5977-1-hch@bombadil.infradead.org> From: Christoph Hellwig <hch@lst.de> nvme_complete_async_event expects the little endian status code including the phase bit, and a new completion handler I plan to introduce will do so as well. Change the status variable into the little endian format with the phase bit used in the NVMe CQE to fix / enable this. Signed-off-by: Christoph Hellwig <hch at lst.de> Reviewed-by: Johannes Thumshirn <jthumshirn at suse.de> --- drivers/nvme/host/fc.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index fc42172c796a..aad7f9c0be32 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -1147,7 +1147,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) struct nvme_fc_ctrl *ctrl = op->ctrl; struct nvme_fc_queue *queue = op->queue; struct nvme_completion *cqe = &op->rsp_iu.cqe; - u16 status = NVME_SC_SUCCESS; + __le16 status = cpu_to_le16(NVME_SC_SUCCESS << 1); /* * WARNING: @@ -1182,9 +1182,9 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) sizeof(op->rsp_iu), DMA_FROM_DEVICE); if (atomic_read(&op->state) == FCPOP_STATE_ABORTED) - status = NVME_SC_ABORT_REQ | NVME_SC_DNR; + status = cpu_to_le16((NVME_SC_ABORT_REQ | NVME_SC_DNR) << 1); else if (freq->status) - status = NVME_SC_FC_TRANSPORT_ERROR; + status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1); /* * For the linux implementation, if we have an unsuccesful @@ -1212,7 +1212,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) */ if (freq->transferred_length != be32_to_cpu(op->cmd_iu.data_len)) { - status = NVME_SC_FC_TRANSPORT_ERROR; + status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1); goto done; } op->nreq.result.u64 = 0; @@ -1229,15 +1229,15 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) freq->transferred_length || op->rsp_iu.status_code || op->rqno != le16_to_cpu(cqe->command_id))) { - status = NVME_SC_FC_TRANSPORT_ERROR; + status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1); goto done; } op->nreq.result = cqe->result; - status = le16_to_cpu(cqe->status) >> 1; + status = cqe->status; break; default: - status = NVME_SC_FC_TRANSPORT_ERROR; + status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1); goto done; } @@ -1249,7 +1249,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) return; } - blk_mq_complete_request(rq, status); + blk_mq_complete_request(rq, le16_to_cpu(status) >> 1); } static int -- 2.11.0
next prev parent reply other threads:[~2017-04-18 15:52 UTC|newest] Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-04-18 15:52 kill req->errors V2 Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` block: remove the blk_execute_rq return value Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 22:24 ` Bart Van Assche 2017-04-18 22:24 ` Bart Van Assche 2017-04-18 22:24 ` Bart Van Assche 2017-04-19 6:13 ` hch 2017-04-19 6:13 ` hch 2017-04-18 15:52 ` Christoph Hellwig [this message] 2017-04-18 15:52 ` nvme-fc: fix status code handling in nvme_fc_fcpio_done Christoph Hellwig 2017-04-18 21:08 ` James Smart 2017-04-18 21:08 ` James Smart 2017-04-18 15:52 ` nvme: split nvme status from block req->errors Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` nvme: make nvme_error_status private Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` virtio: fix spelling of virtblk_scsi_request_done Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` virtio_blk: don't use req->errors Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` scsi: introduce a new result field in struct scsi_request Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 22:34 ` Bart Van Assche 2017-04-18 22:34 ` Bart Van Assche 2017-04-18 22:34 ` Bart Van Assche 2017-04-19 6:14 ` hch 2017-04-19 6:14 ` hch 2017-04-18 15:52 ` loop: zero-fill bio on the submitting cpu Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` null_blk: don't pass always-0 req->errors to blk_mq_complete_request Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` dm rq: don't pass irrelevant error code " Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` dm mpath: don't check for req->errors Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` nbd: don't use req->errors Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` mtip32xx: add a status field to struct mtip_cmd Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` xen-blkfront: don't use req->errors Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` blk-mq: remove the error argument to blk_mq_complete_request Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 22:50 ` Bart Van Assche 2017-04-18 22:50 ` Bart Van Assche 2017-04-18 22:50 ` Bart Van Assche 2017-04-19 17:54 ` hch 2017-04-19 17:54 ` hch 2017-04-18 15:52 ` blk-mq: simplify __blk_mq_complete_request Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` block: add a error_count field to struct request Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 22:57 ` Bart Van Assche 2017-04-18 22:57 ` Bart Van Assche 2017-04-18 22:57 ` Bart Van Assche 2017-04-19 6:15 ` hch 2017-04-19 6:15 ` hch 2017-04-18 15:52 ` floppy: switch from req->errors to req->error_count Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` ataflop: " Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` swim3: remove (commented out) printing of req->errors Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` pd: remove bogus check for req->errors Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 22:59 ` Bart Van Assche 2017-04-18 22:59 ` Bart Van Assche 2017-04-18 22:59 ` Bart Van Assche 2017-04-18 15:52 ` blktrace: remove the unused block_rq_abort tracepoint Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig 2017-04-18 15:52 ` block: remove the errors field from struct request Christoph Hellwig 2017-04-18 15:52 ` Christoph Hellwig
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170418155229.5977-3-hch@bombadil.infradead.org \ --to=hch@bombadil.infradead.org \ --cc=axboe@kernel.dk \ --cc=dm-devel@redhat.com \ --cc=hch@lst.de \ --cc=james.smart@broadcom.com \ --cc=jbacik@fb.com \ --cc=konrad.wilk@oracle.com \ --cc=linux-block@vger.kernel.org \ --cc=linux-nvme@lists.infradead.org \ --cc=linux-scsi@vger.kernel.org \ --cc=roger.pau@citrix.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.