mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
nvme-fc: don't override opts->nr_io_queues
Its what the user passed, so its probably a better idea to keep it intact. Also, limit the number of I/O queues to max online cpus and the lport maximum hw queues. Reviewed-by: Johannes Thumshirn <[email protected]> Reviewed-by: Max Gurtovoy <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Sagi Grimberg <[email protected]>
This commit is contained in:
parent
01ad099046
commit
7314183d1d
1 changed files with 11 additions and 5 deletions
|
|
@ -2175,17 +2175,20 @@ static int
|
|||
nvme_fc_create_io_queues(struct nvme_fc_ctrl *ctrl)
|
||||
{
|
||||
struct nvmf_ctrl_options *opts = ctrl->ctrl.opts;
|
||||
unsigned int nr_io_queues;
|
||||
int ret;
|
||||
|
||||
ret = nvme_set_queue_count(&ctrl->ctrl, &opts->nr_io_queues);
|
||||
nr_io_queues = min(min(opts->nr_io_queues, num_online_cpus()),
|
||||
ctrl->lport->ops->max_hw_queues);
|
||||
ret = nvme_set_queue_count(&ctrl->ctrl, &nr_io_queues);
|
||||
if (ret) {
|
||||
dev_info(ctrl->ctrl.device,
|
||||
"set_queue_count failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ctrl->ctrl.queue_count = opts->nr_io_queues + 1;
|
||||
if (!opts->nr_io_queues)
|
||||
ctrl->ctrl.queue_count = nr_io_queues + 1;
|
||||
if (!nr_io_queues)
|
||||
return 0;
|
||||
|
||||
nvme_fc_init_io_queues(ctrl);
|
||||
|
|
@ -2245,15 +2248,19 @@ static int
|
|||
nvme_fc_reinit_io_queues(struct nvme_fc_ctrl *ctrl)
|
||||
{
|
||||
struct nvmf_ctrl_options *opts = ctrl->ctrl.opts;
|
||||
unsigned int nr_io_queues;
|
||||
int ret;
|
||||
|
||||
ret = nvme_set_queue_count(&ctrl->ctrl, &opts->nr_io_queues);
|
||||
nr_io_queues = min(min(opts->nr_io_queues, num_online_cpus()),
|
||||
ctrl->lport->ops->max_hw_queues);
|
||||
ret = nvme_set_queue_count(&ctrl->ctrl, &nr_io_queues);
|
||||
if (ret) {
|
||||
dev_info(ctrl->ctrl.device,
|
||||
"set_queue_count failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ctrl->ctrl.queue_count = nr_io_queues + 1;
|
||||
/* check for io queues existing */
|
||||
if (ctrl->ctrl.queue_count == 1)
|
||||
return 0;
|
||||
|
|
@ -2702,7 +2709,6 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
|
|||
ctrl->ctrl.queue_count = min_t(unsigned int,
|
||||
opts->nr_io_queues,
|
||||
lport->ops->max_hw_queues);
|
||||
opts->nr_io_queues = ctrl->ctrl.queue_count; /* so opts has valid value */
|
||||
ctrl->ctrl.queue_count++; /* +1 for admin queue */
|
||||
|
||||
ctrl->ctrl.sqsize = opts->queue_size - 1;
|
||||
|
|
|
|||
Loading…
Reference in a new issue