Adding pinned uuid for rootfs
This commit is contained in:
+25
-3
@@ -10,6 +10,15 @@ set -euo pipefail
|
||||
|
||||
ROOTFS="/artifacts/rootfs.erofs"
|
||||
SUBNQN="${SUBNQN:-nqn.2026-06.org.example.fleet:rootfs}"
|
||||
# Fixed, fleet-generic namespace UUID. The host references the root device as
|
||||
# /dev/disk/by-id/nvme-uuid.$ROOT_NS_UUID on the kernel cmdline, which is stable
|
||||
# regardless of NVMe controller enumeration order (the I/O controller can land
|
||||
# on nvme0/nvme1/... depending on whether a transient discovery controller took
|
||||
# a slot first — so a hardcoded /dev/nvme0n1 is unsafe). MUST match
|
||||
# ROOT_NS_UUID in scripts/extract-artifacts.sh, which bakes it into the UKI
|
||||
# cmdline. NOTE: for multi-version serving (TODO #6) make this version-specific
|
||||
# alongside the per-version NQN, so a host can't connect the wrong rootfs.
|
||||
ROOT_NS_UUID="${ROOT_NS_UUID:-f1ee7000-0000-4000-8000-000000000001}"
|
||||
TADDR="${TARGET_ADDR:-0.0.0.0}"
|
||||
TPORT="${TARGET_PORT:-4420}"
|
||||
CPUMASK="${SPDK_CPUMASK:-0x1}"
|
||||
@@ -58,14 +67,27 @@ echo "==> exposing $ROOTFS as bdev 'rootfs' (4 KiB blocks)"
|
||||
echo "==> creating subsystem $SUBNQN (allow any host — lab/no-auth)"
|
||||
"$RPC" nvmf_create_subsystem "$SUBNQN" -a -s SPDKLAB0000000001 -d FleetRootfs
|
||||
|
||||
echo "==> adding namespace 1"
|
||||
echo "==> adding namespace 1 (uuid $ROOT_NS_UUID)"
|
||||
# Read-only is enforced by the bdev_aio '-r' open above (this SPDK's add_ns has
|
||||
# no --read-only flag), plus the :ro image-volume mount and the client's erofs
|
||||
# ro + dm-verity.
|
||||
"$RPC" nvmf_subsystem_add_ns "$SUBNQN" rootfs
|
||||
# -u pins the namespace UUID so the host can reference it as
|
||||
# /dev/disk/by-id/nvme-uuid.$ROOT_NS_UUID (stable across controller indices).
|
||||
"$RPC" nvmf_subsystem_add_ns "$SUBNQN" rootfs -u "$ROOT_NS_UUID"
|
||||
|
||||
echo "==> adding TCP listener ${TADDR}:${TPORT} (also serves discovery)"
|
||||
echo "==> adding TCP listener ${TADDR}:${TPORT} to $SUBNQN"
|
||||
"$RPC" nvmf_subsystem_add_listener "$SUBNQN" -t tcp -a "$TADDR" -s "$TPORT"
|
||||
|
||||
# Also add the listener to the well-known discovery subsystem. Without this,
|
||||
# SPDK still answers discovery on this listener but logs a deprecation warning
|
||||
# ("listener was not added to the discovery subsystem") and the implicit
|
||||
# behaviour is slated for removal. Explicitly registering it is the supported
|
||||
# way and future-proofs `nvme discover` against an SPDK bump. Best-effort:
|
||||
# tolerate older SPDK builds where the discovery NQN can't take a listener.
|
||||
echo "==> adding TCP listener ${TADDR}:${TPORT} to the discovery subsystem"
|
||||
"$RPC" nvmf_subsystem_add_listener nqn.2014-08.org.nvmexpress.discovery \
|
||||
-t tcp -a "$TADDR" -s "$TPORT" \
|
||||
|| echo "WARNING: could not add listener to discovery subsystem (older SPDK?) — discovery still works via the deprecated implicit path." >&2
|
||||
|
||||
echo "==> SPDK serving $SUBNQN over tcp/${TPORT}; rd.nvmf.discover=tcp,${TADDR},${TPORT}"
|
||||
wait "$TGT_PID"
|
||||
|
||||
Reference in New Issue
Block a user