Skip to content

Commit

Permalink
nvme-tcp: fix possible hang when failing to set io queues
Browse files Browse the repository at this point in the history
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.

Fixes: 3f2304f ("nvme-tcp: add NVMe over TCP host driver")
Signed-off-by: Sagi Grimberg <[email protected]>
Signed-off-by: Christoph Hellwig <[email protected]>
  • Loading branch information
sagigrimberg authored and Christoph Hellwig committed Mar 18, 2021
1 parent bb83337 commit 72f5724
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions drivers/nvme/host/tcp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1752,8 +1752,11 @@ static int nvme_tcp_alloc_io_queues(struct nvme_ctrl *ctrl)
return ret;

ctrl->queue_count = nr_io_queues + 1;
if (ctrl->queue_count < 2)
return 0;
if (ctrl->queue_count < 2) {
dev_err(ctrl->device,
"unable to set any I/O queues\n");
return -ENOMEM;
}

dev_info(ctrl->device,
"creating %d I/O queues.\n", nr_io_queues);
Expand Down

0 comments on commit 72f5724

Please sign in to comment.