diff --git a/block/blk-core.c b/block/blk-core.c index e5abef2863b1adbc968afe62ba9e5bc0b1438db1..3f0a393082666c6ceafe383037683c5a0fefc6fc 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -783,6 +783,9 @@ void blk_cleanup_queue(struct request_queue *q) * prevent that q->request_fn() gets invoked after draining finished. */ blk_freeze_queue(q); + + rq_qos_exit(q); + spin_lock_irq(lock); queue_flag_set(QUEUE_FLAG_DEAD, q); spin_unlock_irq(lock); diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 3772671cf2bc5ad6322786b9531e9eb8bb6c7edd..d4f1280965b602eb0aaeba9b61223a406acd23bd 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -994,8 +994,6 @@ void blk_unregister_queue(struct gendisk *disk) kobject_del(&q->kobj); blk_trace_remove_sysfs(disk_to_dev(disk)); - rq_qos_exit(q); - mutex_lock(&q->sysfs_lock); if (q->request_fn || (q->mq_ops && q->elevator)) elv_unregister_queue(q);