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

Projects

Status: ✅ Testing / in Review

Development

Successfully merging this pull request may close these issues.

2 participants