Hello Jens, This patchset cleans up elevator change code, and unifying it via single helper, meantime moves kobject_add/del & debugfs register/unregister out of queue freezing & elevator_lock. This way fixes many lockdep warnings reported recently, especially since fs_reclaim is connected with freeze lock manually by commit ffa1e7ada456 ("block: Make request_queue lockdep splats show up earlier"). Thanks, Ming V4: - pull Christoph's two elevator change/switch cleanup patches first, then the following elevator change unifying is simplified a lot(Christoph) - fold Nilay's patch into the last patch for avoiding one new lock warning on rqos_state_mutex (Nilay Shoff) - drop patch "block: move blk_unregister_queue() & device_del() after freeze wait" which may cause MD hang during shutdown, and add new patch "block: add new helper for disabling elevator switch when deleting disk" for dealing with one small race window (Christoph) - add patch "block: remove elevator queue's type check in elv_attr_show/store()" (Christoph) - rename ->update_nr_hwq_sema as ->update_nr_hwq_lock (Christoph) - add small patch "block: move blk_queue_registered() check into elv_iosched_store()" V3: - replace srcu with rw_sem for avoiding race between add/del disk & elevator switch and updating nr_hw_queues (Nilay Shoff) - add elv_update_nr_hw_queues() for elevator reattachment in case of updating nr_hw_queues, meantime keep elv_change_ctx as local structure (Christoph) - replace ->elevator_lock with disk->rqos_state_mutex for covering wbt state change - add new patch "block: use q->elevator with ->elevator_lock held in elv_iosched_show()" - small cleanup & commit log improvement V2: - retry add/del disk when blk_mq_update_nr_hw_queues() is in-progress - swap blk_mq_add_queue_tag_set() with blk_mq_map_swqueue() in blk_mq_init_allocated_queue() (Nilay Shroff) - move ELEVATOR_FLAG_DISABLE_WBT to request queue's flags (Nilay Shoff) - fix race because of delaying elevator unregister - define flags of `elv_change_ctx` as `bool` (Christoph) - improve comment and commit log (Christoph) Christoph Hellwig (2): block: look up the elevator type in elevator_switch block: fold elevator_disable into elevator_switch Ming Lei (22): block: move blk_mq_add_queue_tag_set() after blk_mq_map_swqueue() block: move ELEVATOR_FLAG_DISABLE_WBT a request queue flag block: don't call freeze queue in elevator_switch() and elevator_disable() block: use q->elevator with ->elevator_lock held in elv_iosched_show() block: add two helpers for registering/un-registering sched debugfs block: move sched debugfs register into elvevator_register_queue block: prevent adding/deleting disk during updating nr_hw_queues block: don't allow to switch elevator if updating nr_hw_queues is in-progress block: move blk_queue_registered() check into elv_iosched_store() block: simplify elevator reattachment for updating nr_hw_queues block: move queue freezing & elevator_lock into elevator_change() block: add `struct elv_change_ctx` for unifying elevator change block: unifying elevator change block: pass elevator_queue to elv_register_queue & unregister_queue block: remove elevator queue's type check in elv_attr_show/store() block: fail to show/store elevator sysfs attribute if elevator is dying block: add new helper for disabling elevator switch when deleting disk block: move elv_register[unregister]_queue out of elevator_lock block: move hctx debugfs/sysfs registering out of freezing queue block: don't acquire ->elevator_lock in blk_mq_map_swqueue and blk_mq_realloc_hw_ctxs block: move hctx cpuhp add/del out of queue freezing block: move wbt_enable_default() out of queue freezing from sched ->exit() block/bfq-iosched.c | 6 +- block/blk-mq-debugfs.c | 13 +- block/blk-mq-sched.c | 41 ++++-- block/blk-mq.c | 132 +++-------------- block/blk-sysfs.c | 29 ++-- block/blk-wbt.c | 9 +- block/blk.h | 8 +- block/elevator.c | 322 ++++++++++++++++++++++++----------------- block/elevator.h | 6 +- block/genhd.c | 151 ++++++++++++------- include/linux/blk-mq.h | 3 + include/linux/blkdev.h | 8 + 12 files changed, 369 insertions(+), 359 deletions(-) -- 2.47.0