summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--block/blk-timeout.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/block/blk-timeout.c b/block/blk-timeout.c
index aa40aa93381b..3610af561748 100644
--- a/block/blk-timeout.c
+++ b/block/blk-timeout.c
@@ -186,6 +186,7 @@ unsigned long blk_rq_timeout(unsigned long timeout)
186 * Notes: 186 * Notes:
187 * Each request has its own timer, and as it is added to the queue, we 187 * Each request has its own timer, and as it is added to the queue, we
188 * set up the timer. When the request completes, we cancel the timer. 188 * set up the timer. When the request completes, we cancel the timer.
189 * Queue lock must be held for the non-mq case, mq case doesn't care.
189 */ 190 */
190void blk_add_timer(struct request *req) 191void blk_add_timer(struct request *req)
191{ 192{
@@ -209,6 +210,11 @@ void blk_add_timer(struct request *req)
209 req->timeout = q->rq_timeout; 210 req->timeout = q->rq_timeout;
210 211
211 req->deadline = jiffies + req->timeout; 212 req->deadline = jiffies + req->timeout;
213
214 /*
215 * Only the non-mq case needs to add the request to a protected list.
216 * For the mq case we simply scan the tag map.
217 */
212 if (!q->mq_ops) 218 if (!q->mq_ops)
213 list_add_tail(&req->timeout_list, &req->q->timeout_list); 219 list_add_tail(&req->timeout_list, &req->q->timeout_list);
214 220