diff --git a/block/blk-core.c b/block/blk-core.c index 06fb25bd24df5ec0709e4d4669c9489dcd7d5b73..5897e7bbbee33a14221045dd7831ef8e3562e1be 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -402,8 +402,6 @@ void blk_cleanup_queue(struct request_queue *q) */ blk_freeze_queue(q); - rq_qos_exit(q); - blk_queue_flag_set(QUEUE_FLAG_DEAD, q); /* for synchronous bio-based driver finish in-flight integrity i/o */ diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 169e63ee05cbe8280e9d9b527bac959acbefb567..92dc765ef124513423148b6b0f257beba82fd73d 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -786,6 +786,8 @@ static void blk_release_queue(struct kobject *kobj) might_sleep(); + rq_qos_exit(q); + if (test_bit(QUEUE_FLAG_POLL_STATS, &q->queue_flags)) blk_stat_remove_callback(q, q->poll_cb); blk_stat_free_callback(q->poll_cb);