diff --git a/block/blk-mq.c b/block/blk-mq.c index 06a615b75a164..ae7d31cb5a4e1 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -497,7 +497,6 @@ static void __blk_mq_free_request(struct request *rq) const int sched_tag = rq->internal_tag; blk_pm_mark_last_busy(rq); - hctx->tags->rqs[rq->tag] = NULL; rq->mq_hctx = NULL; if (rq->tag != -1) blk_mq_put_tag(hctx, hctx->tags, ctx, rq->tag); diff --git a/block/blk-mq.h b/block/blk-mq.h index 895fb9aaa406f..f2075978db500 100644 --- a/block/blk-mq.h +++ b/block/blk-mq.h @@ -209,7 +209,6 @@ static inline bool blk_mq_get_dispatch_budget(struct blk_mq_hw_ctx *hctx) static inline void __blk_mq_put_driver_tag(struct blk_mq_hw_ctx *hctx, struct request *rq) { - hctx->tags->rqs[rq->tag] = NULL; blk_mq_put_tag(hctx, hctx->tags, rq->mq_ctx, rq->tag); rq->tag = -1; @@ -223,6 +222,7 @@ static inline void blk_mq_put_driver_tag(struct request *rq) { if (rq->tag == -1 || rq->internal_tag == -1) return; + __blk_mq_put_driver_tag(rq->mq_hctx, rq); }