|
|
@@ -186,6 +186,7 @@ unsigned long blk_rq_timeout(unsigned long timeout)
|
|
|
* Notes:
|
|
|
* Each request has its own timer, and as it is added to the queue, we
|
|
|
* set up the timer. When the request completes, we cancel the timer.
|
|
|
+ * Queue lock must be held for the non-mq case, mq case doesn't care.
|
|
|
*/
|
|
|
void blk_add_timer(struct request *req)
|
|
|
{
|
|
|
@@ -209,6 +210,11 @@ void blk_add_timer(struct request *req)
|
|
|
req->timeout = q->rq_timeout;
|
|
|
|
|
|
req->deadline = jiffies + req->timeout;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Only the non-mq case needs to add the request to a protected list.
|
|
|
+ * For the mq case we simply scan the tag map.
|
|
|
+ */
|
|
|
if (!q->mq_ops)
|
|
|
list_add_tail(&req->timeout_list, &req->q->timeout_list);
|
|
|
|