From: Ming Lei <ming.lei@redhat.com>
To: Jens Axboe <axboe@kernel.dk>, linux-block@vger.kernel.org
Cc: "Nilay Shroff" <nilay@linux.ibm.com>,
"Shinichiro Kawasaki" <shinichiro.kawasaki@wdc.com>,
"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
"Christoph Hellwig" <hch@lst.de>,
"Ming Lei" <ming.lei@redhat.com>
Subject: [PATCH V5 00/25] block: unify elevator changing and fix lockdep warning
Date: Mon, 5 May 2025 22:17:38 +0800 [thread overview]
Message-ID: <20250505141805.2751237-1-ming.lei@redhat.com> (raw)
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
V5:
- replace down_read_nested() with down_read(), by adding
helper of add_disk_final()
- fix race between elv_iosched_store and __del_gendisk (Nilay Shoff)
- improve elv_update_nr_hw_queues() (Christoph)
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 (23):
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: add helper add_disk_final()
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 | 329 ++++++++++++++++++++++++-----------------
block/elevator.h | 6 +-
block/genhd.c | 197 +++++++++++++++---------
include/linux/blk-mq.h | 3 +
include/linux/blkdev.h | 8 +
12 files changed, 402 insertions(+), 379 deletions(-)
--
2.47.0
next reply other threads:[~2025-05-05 14:18 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-05 14:17 Ming Lei [this message]
2025-05-05 14:17 ` [PATCH V5 01/25] block: move blk_mq_add_queue_tag_set() after blk_mq_map_swqueue() Ming Lei
2025-05-05 14:17 ` [PATCH V5 02/25] block: move ELEVATOR_FLAG_DISABLE_WBT a request queue flag Ming Lei
2025-05-05 14:17 ` [PATCH V5 03/25] block: don't call freeze queue in elevator_switch() and elevator_disable() Ming Lei
2025-05-05 14:17 ` [PATCH V5 04/25] block: use q->elevator with ->elevator_lock held in elv_iosched_show() Ming Lei
2025-05-05 14:17 ` [PATCH V5 05/25] block: add two helpers for registering/un-registering sched debugfs Ming Lei
2025-05-05 14:17 ` [PATCH V5 06/25] block: move sched debugfs register into elvevator_register_queue Ming Lei
2025-05-05 14:17 ` [PATCH V5 07/25] block: add helper add_disk_final() Ming Lei
2025-05-06 4:40 ` Christoph Hellwig
2025-05-06 7:43 ` Nilay Shroff
2025-05-06 11:02 ` Hannes Reinecke
2025-05-05 14:17 ` [PATCH V5 08/25] block: prevent adding/deleting disk during updating nr_hw_queues Ming Lei
2025-05-05 14:17 ` [PATCH V5 09/25] block: don't allow to switch elevator if updating nr_hw_queues is in-progress Ming Lei
2025-05-06 4:41 ` Christoph Hellwig
2025-05-06 6:26 ` Nilay Shroff
2025-05-05 14:17 ` [PATCH V5 10/25] block: look up the elevator type in elevator_switch Ming Lei
2025-05-05 14:17 ` [PATCH V5 11/25] block: fold elevator_disable into elevator_switch Ming Lei
2025-05-05 14:17 ` [PATCH V5 12/25] block: move blk_queue_registered() check into elv_iosched_store() Ming Lei
2025-05-06 4:41 ` Christoph Hellwig
2025-05-06 7:47 ` Nilay Shroff
2025-05-05 14:17 ` [PATCH V5 13/25] block: simplify elevator reattachment for updating nr_hw_queues Ming Lei
2025-05-05 14:17 ` [PATCH V5 14/25] block: move queue freezing & elevator_lock into elevator_change() Ming Lei
2025-05-05 14:17 ` [PATCH V5 15/25] block: add `struct elv_change_ctx` for unifying elevator change Ming Lei
2025-05-06 4:42 ` Christoph Hellwig
2025-05-05 14:17 ` [PATCH V5 16/25] block: " Ming Lei
2025-05-05 14:17 ` [PATCH V5 17/25] block: pass elevator_queue to elv_register_queue & unregister_queue Ming Lei
2025-05-05 14:17 ` [PATCH V5 18/25] block: remove elevator queue's type check in elv_attr_show/store() Ming Lei
2025-05-05 14:17 ` [PATCH V5 19/25] block: fail to show/store elevator sysfs attribute if elevator is dying Ming Lei
2025-05-06 11:09 ` Hannes Reinecke
2025-05-05 14:17 ` [PATCH V5 20/25] block: add new helper for disabling elevator switch when deleting disk Ming Lei
2025-05-06 6:32 ` Nilay Shroff
2025-05-05 14:17 ` [PATCH V5 21/25] block: move elv_register[unregister]_queue out of elevator_lock Ming Lei
2025-05-06 4:43 ` Christoph Hellwig
2025-05-06 6:36 ` Nilay Shroff
2025-05-05 14:18 ` [PATCH V5 22/25] block: move hctx debugfs/sysfs registering out of freezing queue Ming Lei
2025-05-05 14:18 ` [PATCH V5 23/25] block: don't acquire ->elevator_lock in blk_mq_map_swqueue and blk_mq_realloc_hw_ctxs Ming Lei
2025-05-06 4:44 ` Christoph Hellwig
2025-05-05 14:18 ` [PATCH V5 24/25] block: move hctx cpuhp add/del out of queue freezing Ming Lei
2025-05-06 4:44 ` Christoph Hellwig
2025-05-05 14:18 ` [PATCH V5 25/25] block: move wbt_enable_default() out of queue freezing from sched ->exit() Ming Lei
2025-05-06 4:44 ` Christoph Hellwig
2025-05-06 13:48 ` [PATCH V5 00/25] block: unify elevator changing and fix lockdep warning Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250505141805.2751237-1-ming.lei@redhat.com \
--to=ming.lei@redhat.com \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=linux-block@vger.kernel.org \
--cc=nilay@linux.ibm.com \
--cc=shinichiro.kawasaki@wdc.com \
--cc=thomas.hellstrom@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox