mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v3 0/3] nvme-tcp: parallelize I/O setup queue in connect
@ 2026-09-10 20:28 Surabhi Gogte
  2026-09-10 20:28 ` [PATCH v3 1/3] nvme-tcp: store and use the caller's network namespace Surabhi Gogte
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Surabhi Gogte @ 2026-09-10 20:28 UTC (permalink / raw)
  To: Keith Busch, Jens Axboe, Christoph Hellwig, Sagi Grimberg
  Cc: Solganik Alexander, Roy Shterman, linux-nvme, linux-kernel,
	mkhalfella, randyj, adailey, Surabhi Gogte

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@purestorage.com/
v2: https://lore.kernel.org/20260824225648.316962-1-sgogte@purestorage.com/
---

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


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-09-11 21:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-10 20:28 [PATCH v3 0/3] nvme-tcp: parallelize I/O setup queue in connect Surabhi Gogte
2026-09-10 20:28 ` [PATCH v3 1/3] nvme-tcp: store and use the caller's network namespace Surabhi Gogte
2026-09-11 21:22   ` Sagi Grimberg
2026-09-10 20:28 ` [PATCH v3 2/3] nvme-tcp: refactor I/O queue setup path Surabhi Gogte
2026-09-11 21:23   ` Sagi Grimberg
2026-09-10 20:28 ` [PATCH v3 3/3] nvme-tcp: parallelize I/O queue allocation and startup Surabhi Gogte
2026-09-11 21:27   ` Sagi Grimberg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®