[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH-for-6.0 v2 25/25] block/nvme: Simplify Completion Queue Comma
From: |
Stefan Hajnoczi |
Subject: |
Re: [PATCH-for-6.0 v2 25/25] block/nvme: Simplify Completion Queue Command Identifier field use |
Date: |
Fri, 30 Oct 2020 14:00:02 +0000 |
On Thu, Oct 29, 2020 at 10:33:06AM +0100, Philippe Mathieu-Daudé wrote:
> The "Completion Queue Entry: DW 2" describes it as:
>
> This identifier is assigned by host software when
> the command is submitted to the Submission
>
> As the is just an opaque cookie, it is pointless to byte-swap it.
>
> Suggested-by: Keith Busch <kbusch@kernel.org>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> block/nvme.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/block/nvme.c b/block/nvme.c
> index a06a188d530..e7723c42a6d 100644
> --- a/block/nvme.c
> +++ b/block/nvme.c
> @@ -344,7 +344,7 @@ static inline int nvme_translate_error(const NvmeCqe *c)
> trace_nvme_error(le32_to_cpu(c->result),
> le16_to_cpu(c->sq_head),
> le16_to_cpu(c->sq_id),
> - le16_to_cpu(c->cid),
> + c->cid,
> le16_to_cpu(status));
> }
> switch (status) {
> @@ -401,7 +401,7 @@ static bool nvme_process_completion(NVMeQueuePair *q)
> if (!q->cq.head) {
> q->cq_phase = !q->cq_phase;
> }
> - cid = le16_to_cpu(c->cid);
> + cid = c->cid;
> if (cid == 0 || cid > NVME_QUEUE_SIZE) {
> warn_report("NVMe: Unexpected CID in completion queue:
> %"PRIu32", "
> "queue size: %u", cid, NVME_QUEUE_SIZE);
> @@ -469,7 +469,7 @@ static void nvme_submit_command(NVMeQueuePair *q,
> NVMeRequest *req,
> assert(!req->cb);
> req->cb = cb;
> req->opaque = opaque;
> - cmd->cid = cpu_to_le16(req->cid);
> + cmd->cid = req->cid;
>
> trace_nvme_submit_command(q->s, q->index, req->cid);
> nvme_trace_command(cmd);
Eliminating the byteswap is safe but this patch makes the code
confusing, as I mentioned previously.
Please use a comment or macro to mark this field native endian. It's not
obvious to the reader that we can skip the byteswap here.
Otherwise it will confuse readers into adding the byteswap back, not
using byteswapping in other places where it is needed, etc.
Thanks,
Stefan
signature.asc
Description: PGP signature
- Re: [PATCH-for-5.2 v2 16/25] block/nvme: Simplify nvme_cmd_sync(), (continued)
- [PATCH-for-5.2 v2 18/25] block/nvme: Correct minimum device page size, Philippe Mathieu-Daudé, 2020/10/29
- [PATCH-for-5.2 v2 19/25] block/nvme: Change size and alignment of IDENTIFY response buffer, Philippe Mathieu-Daudé, 2020/10/29
- [PATCH-for-5.2 v2 20/25] block/nvme: Change size and alignment of queue, Philippe Mathieu-Daudé, 2020/10/29
- [PATCH-for-5.2 v2 21/25] block/nvme: Change size and alignment of prp_list_pages, Philippe Mathieu-Daudé, 2020/10/29
- [PATCH-for-5.2 v2 22/25] block/nvme: Align iov's va and size on host page size, Philippe Mathieu-Daudé, 2020/10/29
- [PATCH-for-5.2 v2 23/25] block/nvme: Fix use of write-only doorbells page on Aarch64 arch, Philippe Mathieu-Daudé, 2020/10/29
- [PATCH-for-5.2 v2 24/25] block/nvme: Fix nvme_submit_command() on big-endian host, Philippe Mathieu-Daudé, 2020/10/29
- [PATCH-for-6.0 v2 25/25] block/nvme: Simplify Completion Queue Command Identifier field use, Philippe Mathieu-Daudé, 2020/10/29
- Re: [PATCH-for-6.0 v2 25/25] block/nvme: Simplify Completion Queue Command Identifier field use,
Stefan Hajnoczi <=