Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package dracut for openSUSE:Factory checked in at 2026-03-31 15:22:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dracut (Old) and /work/SRC/openSUSE:Factory/.dracut.new.1999 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dracut" Tue Mar 31 15:22:05 2026 rev:257 rq:1343591 version:110+suse.23.g5d9502c7 Changes: -------- --- /work/SRC/openSUSE:Factory/dracut/dracut.changes 2026-03-27 06:38:19.742336180 +0100 +++ /work/SRC/openSUSE:Factory/.dracut.new.1999/dracut.changes 2026-03-31 15:22:19.452438420 +0200 @@ -1,0 +2,12 @@ +Mon Mar 30 06:57:43 UTC 2026 - Antonio Feijoo <[email protected]> + +- Update to version 110+suse.23.g5d9502c7: + + NVMeoF boot: avoid network interface renaming (jsc#PED-14341): + * feat(nvmf): set rd.nvmf.nm=1 if NetworkManager 1.54 is detected + * feat(nvmf): allow using system interface naming policy + * feat(nvmf): add dracut.conf option nvmf_nbft_mode + * feat(nvmf): enable adapting to NBFT reconfiguration + * fix(dracut.conf.5): move fstab/chroot warning to hostonly_mode section + +------------------------------------------------------------------- Old: ---- dracut-110+suse.18.g5a7a17b3.tar.xz New: ---- dracut-110+suse.23.g5d9502c7.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dracut.spec ++++++ --- /var/tmp/diff_new_pack.wBVdx6/_old 2026-03-31 15:22:21.456522114 +0200 +++ /var/tmp/diff_new_pack.wBVdx6/_new 2026-03-31 15:22:21.464522447 +0200 @@ -26,7 +26,7 @@ %endif Name: dracut -Version: 110+suse.18.g5a7a17b3 +Version: 110+suse.23.g5d9502c7 Release: 0 Summary: Event driven initramfs infrastructure License: GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.wBVdx6/_old 2026-03-31 15:22:21.544525788 +0200 +++ /var/tmp/diff_new_pack.wBVdx6/_new 2026-03-31 15:22:21.552526123 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/opensuse/dracut-ng.git</param> - <param name="changesrevision">5a7a17b301fa788ec37a72abbea60ac8e5dbe934</param></service></servicedata> + <param name="changesrevision">5d9502c714d7ce6ddb67f2d632d7326cc41614a0</param></service></servicedata> (No newline at EOF) ++++++ dracut-110+suse.18.g5a7a17b3.tar.xz -> dracut-110+suse.23.g5d9502c7.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-110+suse.18.g5a7a17b3/dracut.sh new/dracut-110+suse.23.g5d9502c7/dracut.sh --- old/dracut-110+suse.18.g5a7a17b3/dracut.sh 2026-03-25 14:33:48.000000000 +0100 +++ new/dracut-110+suse.23.g5d9502c7/dracut.sh 2026-03-30 08:48:10.000000000 +0200 @@ -1188,6 +1188,7 @@ [[ $kernel_image_l ]] && kernel_image=$(path_rel_to_abs "$kernel_image_l") [[ $sbat_l ]] && sbat="$sbat_l" [[ $machine_id_l ]] && machine_id="$machine_id_l" +[[ $nvmf_nbft_mode ]] || nvmf_nbft_mode=match TMPDIR="$(realpath -e "$tmpdir")" readonly TMPDIR @@ -2052,6 +2053,14 @@ fi unset threecpio_help_output +case $nvmf_nbft_mode in + nbft | match | static) ;; + *) + dwarn "Invalid value \"$nvmf_nbft_mode\" for nvmf_nbft_mode. Assuming \"match\"." + nvmf_nbft_mode=match + ;; +esac + if [[ $no_kernel != yes ]] && ! [[ -d $srcmods ]]; then dfatal "Cannot find module directory $srcmods" dfatal "and --no-kernel was not specified" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-110+suse.18.g5a7a17b3/man/dracut.cmdline.7.adoc new/dracut-110+suse.23.g5d9502c7/man/dracut.cmdline.7.adoc --- old/dracut-110+suse.18.g5a7a17b3/man/dracut.cmdline.7.adoc 2026-03-25 14:33:48.000000000 +0100 +++ new/dracut-110+suse.23.g5d9502c7/man/dracut.cmdline.7.adoc 2026-03-30 08:48:10.000000000 +0200 @@ -946,6 +946,13 @@ the initramfs was built. Targets specified with rd.nvmf.discover on the kernel command line will still be tried. +**rd.nvmf.nm**:: + Rely on NetworkManagers nm-initrd-generator tool to set up network + interfaces from the NVMe Boot Firmware Table (NBFT). This has the effect + that the network interfaces generated from the NBFT will have regular + interface names rather than ++nbft0++ etc. *This requires NetworkManager + 1.54.0 or higher*. + **rd.nvmf.hostnqn=**__<hostNQN>__:: NVMe host NQN to use diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-110+suse.18.g5a7a17b3/man/dracut.conf.5.adoc new/dracut-110+suse.23.g5d9502c7/man/dracut.conf.5.adoc --- old/dracut-110+suse.18.g5a7a17b3/man/dracut.conf.5.adoc 2026-03-25 14:33:48.000000000 +0100 +++ new/dracut-110+suse.23.g5d9502c7/man/dracut.conf.5.adoc 2026-03-30 08:48:10.000000000 +0200 @@ -192,6 +192,9 @@ efforts to save more space. Minor changes in hardware or environment can make the image unbootable. +WARNING: If chrooted to another root other than the real root device, use +`--fstab` and provide a valid _/etc/fstab_. + *hostonly_cmdline=*"__{yes|no}__":: If set to "yes", store the kernel command line arguments needed in the initramfs. If **hostonly="yes"** and this option is not configured, it's @@ -209,9 +212,6 @@ *tmpdir=*"__<temporary directory>__":: Specify temporary directory to use. + -WARNING: If chrooted to another root other than the real root device, use -`--fstab` and provide a valid _/etc/fstab_. - *use_fstab=*"__{yes|no}__":: Use _/etc/fstab_ instead of _/proc/self/mountinfo_ (default=no). @@ -400,6 +400,21 @@ Let kernel-install create a rescue image (default=no). This configuration option applies only to kernel-install. +*nvmf_nbft_mode*="__{match|nbft|static}__":: +For systems that use the ++nvmf++ module for booting from NVMe over Fabrics +(NVMeoF), specify how to set command line options for NVMe subsystems that are +listed in the NVMe Boot Firmware Table (NBFT). This option only has an effect +if ++hostonly_cmdline++ is set to ++yes++. If set to ++static++, generate +cmdline entries for all NVMe subsystems detected while the initramfs was +built. If set to ++nbft++, don't generate any entries for NVMe subsystems using +the ++tcp++ transport (i.e. rely on NBFT parsing for detecting NVMe subsystems +at boot time). If set to ++match++ (default), only add cmdline entries for +++tcp++ subsystems that do not match any entry in the NBFT, comparing subsystem +IP address (traddr) and port (trsvcid). Use ++nbft++ or ++match++ if you want +the system to adapt if the content of the NBFT changes between reboots. Use +++static++ if you want connect to the same subsystems, always, no matter what +the content of the NBFT is. The default is ++match++. + == Files _/etc/dracut.conf_:: Old configuration file. It is recommended to use individual files in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-110+suse.18.g5a7a17b3/modules.d/74nvmf/module-setup.sh new/dracut-110+suse.23.g5d9502c7/modules.d/74nvmf/module-setup.sh --- old/dracut-110+suse.18.g5a7a17b3/modules.d/74nvmf/module-setup.sh 2026-03-25 14:33:48.000000000 +0100 +++ new/dracut-110+suse.23.g5d9502c7/modules.d/74nvmf/module-setup.sh 2026-03-30 08:48:10.000000000 +0200 @@ -1,5 +1,15 @@ #!/bin/bash +__nvmf_has_nbft() { + local f found= + for f in /sys/firmware/acpi/tables/NBFT*; do + [ -f "$f" ] || continue + found=1 + break + done + [[ $found ]] +} + # called by dracut check() { local -A nvmf_trtypes @@ -32,16 +42,6 @@ fi } - has_nbft() { - local f found= - for f in /sys/firmware/acpi/tables/NBFT*; do - [ -f "$f" ] || continue - found=1 - break - done - [[ $found ]] - } - [[ $hostonly ]] || [[ $mount_needs ]] && { [ -f /etc/nvme/hostnqn ] || return 255 [ -f /etc/nvme/hostid ] || return 255 @@ -53,7 +53,7 @@ require_kernel_modules "${!nvmf_trtypes[@]}" || return 1 if [ ! -f /sys/class/fc/fc_udev_device/nvme_discovery ] \ && [ ! -f /etc/nvme/discovery.conf ] \ - && [ ! -f /etc/nvme/config.json ] && ! has_nbft; then + && [ ! -f /etc/nvme/config.json ] && ! __nvmf_has_nbft; then echo "No discovery arguments present" return 255 fi @@ -86,6 +86,7 @@ cmdline() { local _hostnqn local _hostid + local -a _nbft_subsystems # shellcheck disable=SC2317,SC2329 # called later by for_each_host_dev_and_slaves gen_nvmf_cmdline() { @@ -96,6 +97,8 @@ local trsvcid local _address local -a _address_parts + local nbft_entry + local -a version [[ -L "/sys/dev/block/$_dev" ]] || return 0 cd -P "/sys/dev/block/$_dev" || return 0 @@ -123,6 +126,20 @@ [[ $i =~ ^trsvcid= ]] && trsvcid="${i#trsvcid=}" done [[ -z $traddr && -z $host_traddr && -z $trsvcid ]] && continue + [[ $trtype == tcp && $nvmf_nbft_mode == nbft ]] \ + && __nvmf_has_nbft && continue + # _nbft_subsystems is set in cmdline() scope below. + # It lists all subsystems found in the NBFT in the format + # "traddr,trsvcid" + # If the subsystem found is listed in the NBFT, don't add it + # explicitly to the command line. + if [[ $trtype == tcp && $nvmf_nbft_mode == match ]]; then + for nbft_entry in "${_nbft_subsystems[@]}"; do + if [[ "$traddr,$trsvcid" == "$nbft_entry" ]]; then + continue 2 + fi + done + fi echo -n " rd.nvmf.discover=$trtype,$traddr,$host_traddr,$trsvcid" done } @@ -136,7 +153,17 @@ echo -n " rd.nvmf.hostid=${_hostid}" fi + if dracut_module_included network-manager; then + mapfile -t -d . version < <(NetworkManager --version) + [[ ${#version[@]} == 3 && + $((10000 * version[0] + 100 * version[1] + version[2])) -ge 15400 ]] \ + && echo -n " rd.nvmf.nm=1 " + fi + [[ $hostonly ]] || [[ $mount_needs ]] && { + mapfile -t _nbft_subsystems < \ + <(nvme nbft show -s -o json \ + | jq -r '.[].subsystem[] | select(.transport == "tcp") | [.traddr, .trsvcid] | join(",")') pushd . > /dev/null for_each_host_dev_and_slaves gen_nvmf_cmdline popd > /dev/null || exit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-110+suse.18.g5a7a17b3/modules.d/74nvmf/parse-nvmf-boot-connections.sh new/dracut-110+suse.23.g5d9502c7/modules.d/74nvmf/parse-nvmf-boot-connections.sh --- old/dracut-110+suse.18.g5a7a17b3/modules.d/74nvmf/parse-nvmf-boot-connections.sh 2026-03-25 14:33:48.000000000 +0100 +++ new/dracut-110+suse.23.g5d9502c7/modules.d/74nvmf/parse-nvmf-boot-connections.sh 2026-03-30 08:48:10.000000000 +0200 @@ -203,6 +203,12 @@ nbft_json=$(nvme nbft show -H -o json) || return 0 n_nbft=$(nbft_run_jq ". | length" "$nbft_json") || return 0 + if [ "$n_nbft" -gt 0 ] && getargbool 0 rd.nvmf.nm; then + # nm-initrd-generator will take care of the interface setup. + # We set valid_nbft_entry_found to enable netroot (see below). + : > /tmp/valid_nbft_entry_found + return 0 + fi while [ "$j" -lt "$n_nbft" ]; do all_hfi_json=$(nbft_run_jq ".[$j].hfi" "$nbft_json") || continue
