diff --git a/block/blk-mq.c b/block/blk-mq.c index 0f00764710212a4cac924b3e786098342453e852..416be28ec421d374993ad2c9aab6d4d6cfcc6f39 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -2529,8 +2529,6 @@ void blk_mq_release(struct request_queue *q) struct blk_mq_hw_ctx *hctx, *next; int i; - cancel_delayed_work_sync(&q->requeue_work); - queue_for_each_hw_ctx(q, hctx, i) WARN_ON_ONCE(hctx && list_empty(&hctx->hctx_list)); diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index d4f1280965b602eb0aaeba9b61223a406acd23bd..8286640d4d663fe51a207421f5a4190ee2d9bfb8 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -836,6 +836,9 @@ static void __blk_release_queue(struct work_struct *work) blk_free_queue_stats(q->stats); + if (q->mq_ops) + cancel_delayed_work_sync(&q->requeue_work); + blk_exit_rl(q, &q->root_rl); if (q->queue_tags)