Test Unit Ready translation seems wrong in latest driver

Sathya Prakash Veerichetty sathya.prakash at broadcom.com
Mon Jul 24 14:52:16 PDT 2017


The TUR translation returns LUN not ready when the controller is ready in
the latest code whereas in the old code it returns LUN not ready only when
the controller is not ready (proper behavior).

The patch  [PATCH 11/47] nvme: split a new struct nvme_ctrl out of struct
nvme_dev seeded the issue by missing the !.

@@ -2295,9 +2288,7 @@ static int nvme_trans_test_unit_ready(struct nvme_ns
*ns,
 					struct sg_io_hdr *hdr,
 					u8 *cmd)
 {
-	struct nvme_dev *dev = ns->dev;
-
-	if (!(readl(dev->bar + NVME_REG_CSTS) & NVME_CSTS_RDY))
+	if (nvme_ctrl_ready(ns->ctrl))
 		return nvme_trans_completion(hdr,
SAM_STAT_CHECK_CONDITION,
 					    NOT_READY,
SCSI_ASC_LUN_NOT_READY,

SCSI_ASCQ_CAUSE_NOT_REPORTABLE);

Thanks
Sathya



More information about the Linux-nvme mailing list