mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 12:21:22 -05:00
ublk: reorder tag_set initialization before queue allocation
Move ublk_add_tag_set() before ublk_init_queues() in the device initialization path. This allows us to use the blk-mq CPU-to-queue mapping established by the tag_set to determine the appropriate NUMA node for each queue allocation. The error handling paths are also reordered accordingly. Reviewed-by: Caleb Sander Mateos <csander@purestorage.com> Signed-off-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
@@ -3178,17 +3178,17 @@ static int ublk_ctrl_add_dev(const struct ublksrv_ctrl_cmd *header)
|
||||
ub->dev_info.nr_hw_queues, nr_cpu_ids);
|
||||
ublk_align_max_io_size(ub);
|
||||
|
||||
ret = ublk_init_queues(ub);
|
||||
ret = ublk_add_tag_set(ub);
|
||||
if (ret)
|
||||
goto out_free_dev_number;
|
||||
|
||||
ret = ublk_add_tag_set(ub);
|
||||
ret = ublk_init_queues(ub);
|
||||
if (ret)
|
||||
goto out_deinit_queues;
|
||||
goto out_free_tag_set;
|
||||
|
||||
ret = -EFAULT;
|
||||
if (copy_to_user(argp, &ub->dev_info, sizeof(info)))
|
||||
goto out_free_tag_set;
|
||||
goto out_deinit_queues;
|
||||
|
||||
/*
|
||||
* Add the char dev so that ublksrv daemon can be setup.
|
||||
@@ -3197,10 +3197,10 @@ static int ublk_ctrl_add_dev(const struct ublksrv_ctrl_cmd *header)
|
||||
ret = ublk_add_chdev(ub);
|
||||
goto out_unlock;
|
||||
|
||||
out_free_tag_set:
|
||||
blk_mq_free_tag_set(&ub->tag_set);
|
||||
out_deinit_queues:
|
||||
ublk_deinit_queues(ub);
|
||||
out_free_tag_set:
|
||||
blk_mq_free_tag_set(&ub->tag_set);
|
||||
out_free_dev_number:
|
||||
ublk_free_dev_number(ub);
|
||||
out_free_ub:
|
||||
|
||||
Reference in New Issue
Block a user