Commit d89a5c67 authored by Weiwen Hu's avatar Weiwen Hu Committed by Keith Busch
Browse files

nvme: fix status magic numbers



Replaced some magic numbers about SC and SCT with enum and macro.

Signed-off-by: default avatarWeiwen Hu <huweiwen@linux.alibaba.com>
Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
Reviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
parent 22f19a58
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -173,7 +173,7 @@ static const char * const nvme_statuses[] = {

const char *nvme_get_error_status_str(u16 status)
{
	status &= 0x7ff;
	status &= NVME_SCT_SC_MASK;
	if (status < ARRAY_SIZE(nvme_statuses) && nvme_statuses[status])
		return nvme_statuses[status];
	return "Unknown";
+9 −9
Original line number Diff line number Diff line
@@ -261,7 +261,7 @@ void nvme_delete_ctrl_sync(struct nvme_ctrl *ctrl)

static blk_status_t nvme_error_status(u16 status)
{
	switch (status & 0x7ff) {
	switch (status & NVME_SCT_SC_MASK) {
	case NVME_SC_SUCCESS:
		return BLK_STS_OK;
	case NVME_SC_CAP_EXCEEDED:
@@ -329,8 +329,8 @@ static void nvme_log_error(struct request *req)
		       nvme_sect_to_lba(ns->head, blk_rq_pos(req)),
		       blk_rq_bytes(req) >> ns->head->lba_shift,
		       nvme_get_error_status_str(nr->status),
		       nr->status >> 8 & 7,	/* Status Code Type */
		       nr->status & 0xff,	/* Status Code */
		       NVME_SCT(nr->status),		/* Status Code Type */
		       nr->status & NVME_SC_MASK,	/* Status Code */
		       nr->status & NVME_SC_MORE ? "MORE " : "",
		       nr->status & NVME_SC_DNR  ? "DNR "  : "");
		return;
@@ -341,8 +341,8 @@ static void nvme_log_error(struct request *req)
			   nvme_get_admin_opcode_str(nr->cmd->common.opcode),
			   nr->cmd->common.opcode,
			   nvme_get_error_status_str(nr->status),
			   nr->status >> 8 & 7,	/* Status Code Type */
			   nr->status & 0xff,	/* Status Code */
			   NVME_SCT(nr->status),	/* Status Code Type */
			   nr->status & NVME_SC_MASK,	/* Status Code */
			   nr->status & NVME_SC_MORE ? "MORE " : "",
			   nr->status & NVME_SC_DNR  ? "DNR "  : "");
}
@@ -359,8 +359,8 @@ static void nvme_log_err_passthru(struct request *req)
		     nvme_get_admin_opcode_str(nr->cmd->common.opcode),
		nr->cmd->common.opcode,
		nvme_get_error_status_str(nr->status),
		nr->status >> 8 & 7,	/* Status Code Type */
		nr->status & 0xff,	/* Status Code */
		NVME_SCT(nr->status),		/* Status Code Type */
		nr->status & NVME_SC_MASK,	/* Status Code */
		nr->status & NVME_SC_MORE ? "MORE " : "",
		nr->status & NVME_SC_DNR  ? "DNR "  : "",
		nr->cmd->common.cdw10,
@@ -388,7 +388,7 @@ static inline enum nvme_disposition nvme_decide_disposition(struct request *req)
	    nvme_req(req)->retries >= nvme_max_retries)
		return COMPLETE;

	if ((nvme_req(req)->status & 0x7ff) == NVME_SC_AUTH_REQUIRED)
	if ((nvme_req(req)->status & NVME_SCT_SC_MASK) == NVME_SC_AUTH_REQUIRED)
		return AUTHENTICATE;

	if (req->cmd_flags & REQ_NVME_MPATH) {
+1 −1
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ void nvme_mpath_start_freeze(struct nvme_subsystem *subsys)
void nvme_failover_req(struct request *req)
{
	struct nvme_ns *ns = req->q->queuedata;
	u16 status = nvme_req(req)->status & 0x7ff;
	u16 status = nvme_req(req)->status & NVME_SCT_SC_MASK;
	unsigned long flags;
	struct bio *bio;

+2 −2
Original line number Diff line number Diff line
@@ -689,7 +689,7 @@ static inline u32 nvme_bytes_to_numd(size_t len)

static inline bool nvme_is_ana_error(u16 status)
{
	switch (status & 0x7ff) {
	switch (status & NVME_SCT_SC_MASK) {
	case NVME_SC_ANA_TRANSITION:
	case NVME_SC_ANA_INACCESSIBLE:
	case NVME_SC_ANA_PERSISTENT_LOSS:
@@ -702,7 +702,7 @@ static inline bool nvme_is_ana_error(u16 status)
static inline bool nvme_is_path_error(u16 status)
{
	/* check for a status code type of 'path related status' */
	return (status & 0x700) == 0x300;
	return (status & NVME_SCT_MASK) == NVME_SCT_PATH;
}

/*
+1 −1
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ static int nvme_status_to_pr_err(int status)
	if (nvme_is_path_error(status))
		return PR_STS_PATH_FAILED;

	switch (status & 0x7ff) {
	switch (status & NVME_SCT_SC_MASK) {
	case NVME_SC_SUCCESS:
		return PR_STS_SUCCESS;
	case NVME_SC_RESERVATION_CONFLICT:
Loading