[PATCH v3 0/3] nvme-tcp: parallelize I/O setup queue in connect

From: Surabhi Gogte

Date: Thu Sep 10 2026 - 16:30:25 EST


Similar to commit 2a8513091d2f ("nvme-rdma: parallelize I/O queue
allocation and startup"), I/O queue allocation and start steps
(including authentication) can be parallelized for nvme-tcp as well.

Patch 1 fixes a pre-existing bug: nvme_tcp_alloc_queue() used
current->nsproxy->net_ns to create sockets during initial connect
while it used kernel's init_net for reconnect and error recovery
paths. The fix captures the caller's network namespace at controller
allocation time.

Patch 2 is a preparatory refactor: it splits the queue-count
negotiation and TLS PSK checks into helpers so that the individual
steps can be called directly from nvme_tcp_configure_io_queues(). No
functional change.

Patch 3 has the async implementation: it fans the per-queue alloc and
start out over an async domain, serializes the per-cpu queue-count in
nvme_tcp_set_queue_io_cpu() that can now run concurrently, and uses
ctrl->net for all socket creation.

Testing on a 64-core host with 64 IO-queues shows nvme-tcp connection
time reduced from 61ms to 11ms.

---
v3:
- Added patch 1 fixing a network namespace bug: reconnect and error
recovery paths were creating sockets in init_net instead of the
controller's namespace. Patch 3 now uses ctrl->net (from patch 1)
instead of hardcoding init_net.
- Patches renumbered accordingly (v2 patch 1->2, patch 2->3).

v2:
- Resending the entire series to fix missing numbering in the
original patch 2 subject line. No functional code changes.

v1: https://lore.kernel.org/20260824222939.301887-1-sgogte@xxxxxxxxxxxxxxx/
v2: https://lore.kernel.org/20260824225648.316962-1-sgogte@xxxxxxxxxxxxxxx/
---

Surabhi Gogte (3):
nvme-tcp: store and use the caller's network namespace
nvme-tcp: refactor I/O queue setup path
nvme-tcp: parallelize I/O queue allocation and startup

drivers/nvme/host/tcp.c | 144 +++++++++++++++++++++++++++-------------
1 file changed, 98 insertions(+), 46 deletions(-)

--
2.55.0