Skip to content

Conversation

@blktests-ci
Copy link

@blktests-ci blktests-ci bot commented Feb 2, 2026

Pull request for series with
subject: blk-mq: fix possible deadlocks
version: 9
url: https://patchwork.kernel.org/project/linux-block/list/?series=1049630

@blktests-ci
Copy link
Author

blktests-ci bot commented Feb 2, 2026

Upstream branch: 8dfce89
series: https://patchwork.kernel.org/project/linux-block/list/?series=1049630
version: 9

To move implementation details inside blk-wbt.c, prepare to fix possible
deadlock to call wbt_init() while queue is frozen in the next patch.

Reviewed-by: Ming Lei <[email protected]>
Reviewed-by: Nilay Shroff <[email protected]>
Signed-off-by: Yu Kuai <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
…_counter

If wbt is disabled by default and user configures wbt by sysfs, queue
will be frozen first and then pcpu_alloc_mutex will be held in
blk_stat_alloc_callback().

Fix this problem by allocating memory first before queue frozen.

Signed-off-by: Yu Kuai <[email protected]>
Reviewed-by: Nilay Shroff <[email protected]>
Reviewed-by: Ming Lei <[email protected]>
There is already a helper blk_mq_debugfs_register_rqos() to register
one rqos, however this helper is called synchronously when the rqos is
created with queue frozen.

Prepare to fix possible deadlock to create blk-mq debugfs entries while
queue is still frozen.

Reviewed-by: Ming Lei <[email protected]>
Reviewed-by: Nilay Shroff <[email protected]>
Signed-off-by: Yu Kuai <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Currently rq-qos debugfs entries are created from rq_qos_add(), while
rq_qos_add() can be called while queue is still frozen. This can
deadlock because creating new entries can trigger fs reclaim.

Fix this problem by delaying creating rq-qos debugfs entries after queue
is unfrozen.

- For wbt, 1) it can be initialized by default, fix it by calling new
  helper after wbt_init() from wbt_init_enable_default(); 2) it can be
  initialized by sysfs, fix it by calling new helper after queue is
  unfrozen from wbt_set_lat().
- For iocost and iolatency, they can only be initialized by blkcg
  configuration, however, they don't have debugfs entries for now, hence
  they are not handled yet.

Signed-off-by: Yu Kuai <[email protected]>
Reviewed-by: Nilay Shroff <[email protected]>
Reviewed-by: Ming Lei <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Because it's only used inside blk-mq-debugfs.c now.

Reviewed-by: Nilay Shroff <[email protected]>
Signed-off-by: Yu Kuai <[email protected]>
Reviewed-by: Ming Lei <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Because this helper is only used by iocost and iolatency, while they
don't have debugfs entries.

Signed-off-by: Yu Kuai <[email protected]>
Reviewed-by: Nilay Shroff <[email protected]>
Reviewed-by: Ming Lei <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
…hctxs()

In blk_mq_update_nr_hw_queues(), debugfs_mutex is not held while
creating debugfs entries for hctxs. Hence add debugfs_mutex there,
it's safe because queue is not frozen.

Signed-off-by: Yu Kuai <[email protected]>
Reviewed-by: Nilay Shroff <[email protected]>
Reviewed-by: Ming Lei <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Creating new debugfs entries can trigger fs reclaim, hence we can't do
this with queue frozen, meanwhile, other locks that can be held while
queue is frozen should not be held as well.

Signed-off-by: Yu Kuai <[email protected]>
Reviewed-by: Nilay Shroff <[email protected]>
Reviewed-by: Ming Lei <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
@blktests-ci
Copy link
Author

blktests-ci bot commented Feb 3, 2026

Upstream branch: de0674d
series: https://patchwork.kernel.org/project/linux-block/list/?series=1049630
version: 9

@blktests-ci blktests-ci bot force-pushed the series/1040275=>linus-master branch from b4fef2d to 3f0c3fb Compare February 3, 2026 19:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant