nvme: cleanup nvme_req_needs_retry
authorChristoph Hellwig <hch@lst.de>
Wed, 5 Apr 2017 17:18:09 +0000 (19:18 +0200)
committerJens Axboe <axboe@fb.com>
Wed, 5 Apr 2017 18:05:08 +0000 (12:05 -0600)
Don't pass the status explicitly but derive it from the requeust,
and unwind the complex condition to be more readable.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/nvme/host/core.c

index 0437f44..b225aac 100644 (file)
@@ -67,11 +67,17 @@ static DEFINE_SPINLOCK(dev_list_lock);
 
 static struct class *nvme_class;
 
-static inline bool nvme_req_needs_retry(struct request *req, u16 status)
+static inline bool nvme_req_needs_retry(struct request *req)
 {
-       return !(status & NVME_SC_DNR || blk_noretry_request(req)) &&
-               (jiffies - req->start_time) < req->timeout &&
-               req->retries < nvme_max_retries;
+       if (blk_noretry_request(req))
+               return false;
+       if (req->errors & NVME_SC_DNR)
+               return false;
+       if (jiffies - req->start_time >= req->timeout)
+               return false;
+       if (req->retries >= nvme_max_retries)
+               return false;
+       return true;
 }
 
 void nvme_complete_rq(struct request *req)
@@ -79,7 +85,7 @@ void nvme_complete_rq(struct request *req)
        int error = 0;
 
        if (unlikely(req->errors)) {
-               if (nvme_req_needs_retry(req, req->errors)) {
+               if (nvme_req_needs_retry(req)) {
                        req->retries++;
                        blk_mq_requeue_request(req,
                                        !blk_mq_queue_stopped(req->q));