diff options
| -rw-r--r-- | block/blk-timeout.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/block/blk-timeout.c b/block/blk-timeout.c index 1ec0d503cacd..1ba7e0aca878 100644 --- a/block/blk-timeout.c +++ b/block/blk-timeout.c | |||
| @@ -122,10 +122,8 @@ void blk_rq_timed_out_timer(unsigned long data) | |||
| 122 | if (blk_mark_rq_complete(rq)) | 122 | if (blk_mark_rq_complete(rq)) |
| 123 | continue; | 123 | continue; |
| 124 | blk_rq_timed_out(rq); | 124 | blk_rq_timed_out(rq); |
| 125 | } else { | 125 | } else if (!next || time_after(next, rq->deadline)) |
| 126 | if (!next || time_after(next, rq->deadline)) | 126 | next = rq->deadline; |
| 127 | next = rq->deadline; | ||
| 128 | } | ||
| 129 | } | 127 | } |
| 130 | 128 | ||
| 131 | /* | 129 | /* |
| @@ -176,16 +174,14 @@ void blk_add_timer(struct request *req) | |||
| 176 | BUG_ON(!list_empty(&req->timeout_list)); | 174 | BUG_ON(!list_empty(&req->timeout_list)); |
| 177 | BUG_ON(test_bit(REQ_ATOM_COMPLETE, &req->atomic_flags)); | 175 | BUG_ON(test_bit(REQ_ATOM_COMPLETE, &req->atomic_flags)); |
| 178 | 176 | ||
| 179 | if (req->timeout) | 177 | /* |
| 180 | req->deadline = jiffies + req->timeout; | 178 | * Some LLDs, like scsi, peek at the timeout to prevent a |
| 181 | else { | 179 | * command from being retried forever. |
| 182 | req->deadline = jiffies + q->rq_timeout; | 180 | */ |
| 183 | /* | 181 | if (!req->timeout) |
| 184 | * Some LLDs, like scsi, peek at the timeout to prevent | ||
| 185 | * a command from being retried forever. | ||
| 186 | */ | ||
| 187 | req->timeout = q->rq_timeout; | 182 | req->timeout = q->rq_timeout; |
| 188 | } | 183 | |
| 184 | req->deadline = jiffies + req->timeout; | ||
| 189 | list_add_tail(&req->timeout_list, &q->timeout_list); | 185 | list_add_tail(&req->timeout_list, &q->timeout_list); |
| 190 | 186 | ||
| 191 | /* | 187 | /* |
