Re: [PATCH v4 3/3] nvme-tcp: parallelize I/O queue allocation and startup

From: Martin Belanger

Date: Mon Oct 26 2026 - 06:57:28 EST


On 9/22/26 16:07, Surabhi Gogte wrote:
> Similar to commit 2a8513091d2f ("nvme-rdma: parallelize I/O queue
> allocation and startup"), refactor nvme tcp I/O queue setup to use async
> API, combining allocation and startup into a single parallel operation
> per queue. This reduces connection and reconnection setup time when
> there are delays in establishing connections, which is especially
> important for high-core-count hosts.
[...]

Hi Surabhi,

This patch breaks NVMe/TCP connects with TLS. This is a different bug
from the pf_cache_lock one that Shin'ichiro reported.

Test: one VM with 4 CPUs, nvmet-tcp on 127.0.0.1 with tsas tls1.3, a
connect with --tls and 4 I/O queues, and tlshd at upstream commit
a0bd51d.

- Linus master 6b4b543fa187: 14 of 20 connects fail.
- Same tree with this patch reverted: 20 of 20 connects pass.
- Same tree with Daniel's pf_cache_lock fix [1]: 22 of 40 and 17 of 40
  connects fail.

On each failed connect, one I/O queue logs:

  nvme nvme0: queue 4: TLS handshake complete, error -110

The tlshd that runs for the target logs:

  failed to search 'psk' key 'NVMe0R01 <hostnqn> <subnqn>'
  gnutls: Error in password/key file. (-31)

and closes the connection. The tlshd that runs for the host then gets
GNUTLS_E_PREMATURE_TERMINATION, which it reports to the kernel as
ETIMEDOUT. The other queues use the same PSK, and their handshakes
succeed. blktests nvme/062 and nvme/063 fail the same way.

I can share the reproducer script.

[1] https://lore.kernel.org/all/20261014-nvme-fabrics-isolcpu-v1-1-355156be27b2@xxxxxxxxxx/

Martin