|
@@ -770,22 +770,16 @@ EXPORT_SYMBOL(blk_mq_tag_to_rq);
|
|
|
|
|
|
static void blk_mq_rq_timed_out(struct request *req, bool reserved)
|
|
|
{
|
|
|
- const struct blk_mq_ops *ops = req->q->mq_ops;
|
|
|
- enum blk_eh_timer_return ret = BLK_EH_RESET_TIMER;
|
|
|
+ if (req->q->mq_ops->timeout) {
|
|
|
+ enum blk_eh_timer_return ret;
|
|
|
|
|
|
- if (ops->timeout)
|
|
|
- ret = ops->timeout(req, reserved);
|
|
|
-
|
|
|
- switch (ret) {
|
|
|
- case BLK_EH_RESET_TIMER:
|
|
|
- blk_add_timer(req);
|
|
|
- break;
|
|
|
- case BLK_EH_DONE:
|
|
|
- break;
|
|
|
- default:
|
|
|
- printk(KERN_ERR "block: bad eh return: %d\n", ret);
|
|
|
- break;
|
|
|
+ ret = req->q->mq_ops->timeout(req, reserved);
|
|
|
+ if (ret == BLK_EH_DONE)
|
|
|
+ return;
|
|
|
+ WARN_ON_ONCE(ret != BLK_EH_RESET_TIMER);
|
|
|
}
|
|
|
+
|
|
|
+ blk_add_timer(req);
|
|
|
}
|
|
|
|
|
|
static bool blk_mq_req_expired(struct request *rq, unsigned long *next)
|