summaryrefslogtreecommitdiffstats
path: root/include/uapi
diff options
context:
space:
mode:
authorKeith Busch <keith.busch@intel.com>2014-04-03 16:45:23 -0600
committerMatthew Wilcox <matthew.r.wilcox@intel.com>2014-04-10 17:11:59 -0400
commitedd10d33283899fb15d99a290dcc9ceb3604ca78 (patch)
tree870dc908379694e20ea319ba11c81bec5864cef7 /include/uapi
parent4cc09e2dc4cbe6009c935b6f12a8376f09124bc5 (diff)
downloadblackbird-obmc-linux-edd10d33283899fb15d99a290dcc9ceb3604ca78.tar.gz
blackbird-obmc-linux-edd10d33283899fb15d99a290dcc9ceb3604ca78.zip
NVMe: Retry failed commands with non-fatal errors
For commands returned with failed status, queue these for resubmission and continue retrying them until success or for a limited amount of time. The final timeout was arbitrarily chosen so requests can't be retried indefinitely. Since these are requeued on the nvmeq that submitted the command, the callbacks have to take an nvmeq instead of an nvme_dev as a parameter so that we can use the locked queue to append the iod to retry later. The nvme_iod conviently can be used to track how long we've been trying to successfully complete an iod request. The nvme_iod also provides the nvme prp dma mappings, so I had to move a few things around so we can keep those mappings. Signed-off-by: Keith Busch <keith.busch@intel.com> [fixed checkpatch issue with long line] Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/linux/nvme.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/uapi/linux/nvme.h b/include/uapi/linux/nvme.h
index e5ab62201119..096fe1c6f83d 100644
--- a/include/uapi/linux/nvme.h
+++ b/include/uapi/linux/nvme.h
@@ -434,6 +434,7 @@ enum {
NVME_SC_REFTAG_CHECK = 0x284,
NVME_SC_COMPARE_FAILED = 0x285,
NVME_SC_ACCESS_DENIED = 0x286,
+ NVME_SC_DNR = 0x4000,
};
struct nvme_completion {
OpenPOWER on IntegriCloud