mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
blk-mq-debugfs: factor out a helper to register debugfs for all rq_qos
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 <ming.lei@redhat.com> Reviewed-by: Nilay Shroff <nilay@linux.ibm.com> Signed-off-by: Yu Kuai <yukuai@fnnas.com> Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
@@ -631,14 +631,7 @@ void blk_mq_debugfs_register(struct request_queue *q)
|
||||
blk_mq_debugfs_register_hctx(q, hctx);
|
||||
}
|
||||
|
||||
if (q->rq_qos) {
|
||||
struct rq_qos *rqos = q->rq_qos;
|
||||
|
||||
while (rqos) {
|
||||
blk_mq_debugfs_register_rqos(rqos);
|
||||
rqos = rqos->next;
|
||||
}
|
||||
}
|
||||
blk_mq_debugfs_register_rq_qos(q);
|
||||
}
|
||||
|
||||
static void blk_mq_debugfs_register_ctx(struct blk_mq_hw_ctx *hctx,
|
||||
@@ -769,6 +762,20 @@ void blk_mq_debugfs_register_rqos(struct rq_qos *rqos)
|
||||
debugfs_create_files(rqos->debugfs_dir, rqos, rqos->ops->debugfs_attrs);
|
||||
}
|
||||
|
||||
void blk_mq_debugfs_register_rq_qos(struct request_queue *q)
|
||||
{
|
||||
lockdep_assert_held(&q->debugfs_mutex);
|
||||
|
||||
if (q->rq_qos) {
|
||||
struct rq_qos *rqos = q->rq_qos;
|
||||
|
||||
while (rqos) {
|
||||
blk_mq_debugfs_register_rqos(rqos);
|
||||
rqos = rqos->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void blk_mq_debugfs_register_sched_hctx(struct request_queue *q,
|
||||
struct blk_mq_hw_ctx *hctx)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user