[PATCH 2/2] nvme-rdma: Fix possible hang when failing to set io queues

Chao Leng lengchao at huawei.com
Tue Mar 16 01:33:58 GMT 2021


Reviewed-by: Chao Leng <lengchao at huawei.com>

On 2021/3/16 5:04, Sagi Grimberg wrote:
> We only setup io queues for nvme controllers, and it makes
> absolutely no sense to allow a controller (re)connect without
> any I/O queues. If we happen to fail setting the queue count
> for any reason, we should not allow this to be a successful
> reconnect as I/O has no chance in going through. Instead
> just fail and schedule another reconnect.
> 
> Reported-by: Chao Leng <lengchao at huawei.com>
> Fixes: 711023071960 ("nvme-rdma: add a NVMe over Fabrics RDMA host driver")
> Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
> ---
>   drivers/nvme/host/rdma.c | 7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
> index 53ac4d7442ba..eb093ea5ffa1 100644
> --- a/drivers/nvme/host/rdma.c
> +++ b/drivers/nvme/host/rdma.c
> @@ -736,8 +736,11 @@ static int nvme_rdma_alloc_io_queues(struct nvme_rdma_ctrl *ctrl)
>   		return ret;
>   
>   	ctrl->ctrl.queue_count = nr_io_queues + 1;
> -	if (ctrl->ctrl.queue_count < 2)
> -		return 0;
> +	if (ctrl->ctrl.queue_count < 2) {
> +		dev_err(ctrl->ctrl.device,
> +			"unable to set any I/O queues\n");
> +		return -ENOMEM;
> +	}
>   
>   	dev_info(ctrl->ctrl.device,
>   		"creating %d I/O queues.\n", nr_io_queues);
> 



More information about the Linux-nvme mailing list