Skip to content

sys-kernel: enable NVMe/TCP and multipath kernel modules#4036

Open
chrisj-satx wants to merge 2 commits into
flatcar:mainfrom
LambdaLabs:nvme-tcp
Open

sys-kernel: enable NVMe/TCP and multipath kernel modules#4036
chrisj-satx wants to merge 2 commits into
flatcar:mainfrom
LambdaLabs:nvme-tcp

Conversation

@chrisj-satx
Copy link
Copy Markdown

@chrisj-satx chrisj-satx commented May 18, 2026

sys-kernel: enable NVMe/TCP and multipath kernel modules

Adds TCP transport support for NVMe over Fabrics and enables native multipath.

nvme_tcp allows Flatcar nodes to act as NVMe/TCP initiators. Without it, storage CSI drivers like NetApp Trident won't work on Flatcar. nvmet_tcp is included as well since Longhorn v2 requires it for its replication layer. nvme_multipath enables the kernel's native multipath support, required for Trident to correctly handle NVMe/TCP volumes.

Refs: flatcar/Flatcar#1526

How to use

sudo modprobe nvme_fabrics
sudo modprobe nvme_tcp
lsmod | grep nvme
cat /sys/module/nvme_core/parameters/multipath

Testing done

Built and booted on amd64 against stable-4593.2.0 (kernel 6.12.81) and main (kernel 6.12.87). arm64 not tested.
Verified modules load and multipath is active:

$ zcat /proc/config.gz | grep -E 'NVME_TCP|NVME_MULTIPATH|NVME_TARGET_TCP'
CONFIG_NVME_MULTIPATH=y
CONFIG_NVME_TCP=m
# CONFIG_NVME_TCP_TLS is not set
CONFIG_NVME_TARGET_TCP=m
# CONFIG_NVME_TARGET_TCP_TLS is not set

$ sudo modprobe nvme_fabrics
$ sudo modprobe nvme_tcp

$ lsmod | grep nvme
nvme_tcp               53248  0
nvme_fabrics           32768  1 nvme_tcp
nvme                   57344  50
nvme_core             188416  53 nvme_tcp,nvme,nvme_fabrics

$ cat /sys/module/nvme_core/parameters/multipath
Y

Validated end-to-end with NetApp Trident by successfully connecting to an NVMe/TCP target on a node running this image.

  • Changelog entries added in the respective changelog/ directory (user-facing change, bug fix, security fix, update)
  • Inspected CI output for image differences: /boot and /usr size, packages, list files for any missing binaries, kernel modules, config files, kernel modules, etc.

@chrisj-satx chrisj-satx requested a review from a team as a code owner May 18, 2026 20:38
Add CONFIG_NVME_TCP=m, CONFIG_NVME_TARGET_TCP=m, and CONFIG_NVME_MULTIPATH=y
to the 6.12 kernel config. Required for NVMe/TCP initiators and ANA multipath.

Tested on amd64 only (Flatcar stable-4593.2.0 / kernel 6.12.81 and main / kernel 6.12.87).

Refs: flatcar/Flatcar#1526
Signed-off-by: Christian Jones <christian.jones@lambdal.com>
Signed-off-by: Christian Jones <christian.jones@lambdal.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant