On Mon, 2018-01-08 at 11:15 -0800, Tejun Heo wrote: > @@ -156,12 +156,12 @@ void blk_timeout_work(struct work_struct *work) > */ > void blk_abort_request(struct request *req) > { > - if (blk_mark_rq_complete(req)) > - return; > - > if (req->q->mq_ops) { > - blk_mq_rq_timed_out(req, false); > + req->deadline = jiffies; > + mod_timer(&req->q->timeout, 0); > } else { > + if (blk_mark_rq_complete(req)) > + return; > blk_delete_timer(req); > blk_rq_timed_out(req); > } Other req->deadline writes are protected by preempt_disable(), write_seqcount_begin(&rq->gstate_seq), write_seqcount_end(&rq->gstate_seq) and preempt_enable(). I think it's fine that the above req->deadline store does not have that protection but I also think that that deserves a comment. Thanks, Bart.