|
@@ -41,6 +41,8 @@ extern unsigned char shutdown_timeout;
|
|
|
#define NVME_DEFAULT_KATO 5
|
|
|
#define NVME_KATO_GRACE 10
|
|
|
|
|
|
+extern unsigned int nvme_max_retries;
|
|
|
+
|
|
|
enum {
|
|
|
NVME_NS_LBA = 0,
|
|
|
NVME_NS_LIGHTNVM = 1,
|
|
@@ -239,7 +241,8 @@ static inline int nvme_error_status(u16 status)
|
|
|
static inline bool nvme_req_needs_retry(struct request *req, u16 status)
|
|
|
{
|
|
|
return !(status & NVME_SC_DNR || blk_noretry_request(req)) &&
|
|
|
- (jiffies - req->start_time) < req->timeout;
|
|
|
+ (jiffies - req->start_time) < req->timeout &&
|
|
|
+ req->retries < nvme_max_retries;
|
|
|
}
|
|
|
|
|
|
void nvme_cancel_request(struct request *req, void *data, bool reserved);
|