diff options
Diffstat (limited to 'block/blk-mq.c')
-rw-r--r-- | block/blk-mq.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c index 29275f5a996f..6e3b15f70cd7 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c | |||
@@ -918,7 +918,10 @@ static bool blk_mq_check_expired(struct blk_mq_hw_ctx *hctx, | |||
918 | */ | 918 | */ |
919 | if (blk_mq_req_expired(rq, next)) | 919 | if (blk_mq_req_expired(rq, next)) |
920 | blk_mq_rq_timed_out(rq, reserved); | 920 | blk_mq_rq_timed_out(rq, reserved); |
921 | if (refcount_dec_and_test(&rq->ref)) | 921 | |
922 | if (is_flush_rq(rq, hctx)) | ||
923 | rq->end_io(rq, 0); | ||
924 | else if (refcount_dec_and_test(&rq->ref)) | ||
922 | __blk_mq_free_request(rq); | 925 | __blk_mq_free_request(rq); |
923 | 926 | ||
924 | return true; | 927 | return true; |