[PATCH] nvme: add crd value to output error log
Sagi Grimberg
sagi at grimberg.me
Sun Aug 23 02:32:43 PDT 2026
This makes sense to me.
On 09/08/2026 20:34, Tokunori Ikegami wrote:
> Also add NVME_CRD to get the status CRD value.
>
> Signed-off-by: Tokunori Ikegami <ikegami.t at gmail.com>
> ---
> drivers/nvme/host/core.c | 15 +++++++++------
> include/linux/nvme.h | 1 +
> 2 files changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 453c1f0b2dd0..0178de333ceb 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -326,7 +326,7 @@ static void nvme_retry_req(struct request *req)
> struct nvme_ns *ns = req->q->queuedata;
>
> /* The mask and shift result must be <= 3 */
> - crd = (nvme_req(req)->status & NVME_STATUS_CRD) >> 11;
> + crd = NVME_CRD(nvme_req(req)->status);
> if (crd)
> delay = nvme_req(req)->ctrl->crdt[crd - 1] * 100;
>
> @@ -344,7 +344,7 @@ static void nvme_log_error(struct request *req)
> struct nvme_request *nr = nvme_req(req);
>
> if (ns) {
> - pr_err_ratelimited("%s: %s(0x%x) @ LBA %llu, %u blocks, %s (sct 0x%x / sc 0x%x) %s%s\n",
> + pr_err_ratelimited("%s: %s(0x%x) @ LBA %llu, %u blocks, %s (sct 0x%x / sc 0x%x) %s%scrd=%u\n",
> ns->disk ? ns->disk->disk_name : "?",
> nvme_get_opcode_str(nr->cmd->common.opcode),
> nr->cmd->common.opcode,
> @@ -354,11 +354,12 @@ static void nvme_log_error(struct request *req)
> NVME_SCT(nr->status), /* Status Code Type */
> nr->status & NVME_SC_MASK, /* Status Code */
> nr->status & NVME_STATUS_MORE ? "MORE " : "",
> - nr->status & NVME_STATUS_DNR ? "DNR " : "");
> + nr->status & NVME_STATUS_DNR ? "DNR " : "",
> + NVME_CRD(nr->status));
> return;
> }
>
> - pr_err_ratelimited("%s: %s(0x%x), %s (sct 0x%x / sc 0x%x) %s%s\n",
> + pr_err_ratelimited("%s: %s(0x%x), %s (sct 0x%x / sc 0x%x) %s%scrd=%u\n",
no space? also perhaps "crd 0x%x" ?
More information about the Linux-nvme
mailing list