Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package powerpc-utils for openSUSE:Factory checked in at 2025-05-13 20:12:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/powerpc-utils (Old) and /work/SRC/openSUSE:Factory/.powerpc-utils.new.30101 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "powerpc-utils" Tue May 13 20:12:23 2025 rev:151 rq:1276793 version:1.3.13 Changes: -------- --- /work/SRC/openSUSE:Factory/powerpc-utils/powerpc-utils.changes 2025-03-20 19:24:20.316017281 +0100 +++ /work/SRC/openSUSE:Factory/.powerpc-utils.new.30101/powerpc-utils.changes 2025-05-13 20:12:47.121259890 +0200 @@ -1,0 +2,5 @@ +Mon May 12 09:44:17 UTC 2025 - Michal Suchanek <msucha...@suse.de> + +- Fix-HNV-installation-network-conflicts-across-all-di.patch (jsc#PED-3946) + +------------------------------------------------------------------- New: ---- Fix-HNV-installation-network-conflicts-across-all-di.patch BETA DEBUG BEGIN: New: - Fix-HNV-installation-network-conflicts-across-all-di.patch (jsc#PED-3946) BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ powerpc-utils.spec ++++++ --- /var/tmp/diff_new_pack.6022IY/_old 2025-05-13 20:12:48.189304716 +0200 +++ /var/tmp/diff_new_pack.6022IY/_new 2025-05-13 20:12:48.189304716 +0200 @@ -32,6 +32,7 @@ Patch5: lparstat-print-memory-mode-correctly.patch Patch6: drmgr-pci-Return-0-for-success-from-do_replace.patch Patch7: lparstat-Fix-negative-values-for-idle-PURR.patch +Patch8: Fix-HNV-installation-network-conflicts-across-all-di.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: libnuma-devel ++++++ Fix-HNV-installation-network-conflicts-across-all-di.patch ++++++ >From 6929aa51df4edc2871a7f810212fdcc0339d00e8 Mon Sep 17 00:00:00 2001 From: Mingming Cao <mingming....@ibm.com> Date: Fri, 9 May 2025 15:05:47 -0700 Subject: [PATCH] Fix HNV installation network conflicts across all distros by automatically cleaning up stale standalone interfaces after they are enslaved to the HNV bonding device. Previously, if an HNV was configured on HMC with SR_IOV and backing devices assigned HNV IDs, a new installation without bonding support caused the HNV init scripts at reboot to create bonding devices that conflicted with existing interfaces, resulting in immediate network loss. This update automates resolution of these conflicts by removing outdated standalone interfaces and transferring IP configuration to the bonded interface, eliminating the need for manual user intervention. Signed-off-by: Mingming Cao <mingming....@ibm.com> --- scripts/hcnmgr | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/scripts/hcnmgr b/scripts/hcnmgr index b5a6bfb..015272c 100644 --- a/scripts/hcnmgr +++ b/scripts/hcnmgr @@ -303,6 +303,48 @@ get_dev_hcn() { hcnlog DEBUG "get_dev_hcn: exit" return $E_SUCCESS } +# Function: check_transfer_ip_to_bond_nm +# Purpose: Check and Transfer IP configuration from a standalone +# network device to its bonding master, +# then clean up the legacy profile of the standalone device. +# +# NetworkManager Case +check_transfer_ip_to_bond_nm() { + local BONDNAME="$1" + hcnlog DEBUG "transfer_and_cleanup_dev_nm: $DEVNAME enter" + + if ! nmcli -f NAME con show | grep -q "$DEVNAME\s"; then + hcnlog INFO "No standalone device $DEVNAME cfg; nothing to transfer." + return 0 + fi + + # Extract IP address and gateway from the slave configuration + IPADDR=$(nmcli -g ipv4.addresses connection show "$DEVNAME") + GATEWAY=$(nmcli -g ipv4.gateway connection show "$DEVNAME") + DNS=$(nmcli -g ipv4.dns connection show "$DEVNAME") + + if [ -z "$IPADDR" ]; then + hcnlog INFO "No IP address found in $DEVNAME; nothing to transfer." + return 0 + fi + + if ! nmcli -f NAME con show | grep -q "$BONDNAME\s"; then + hcnlog WARN "Bond config for $BONDNAME not found; cannot transfer IP." + return 0 + fi + + # Add IP address, dns and gateway to the bond configuration + [ -n "$IPADDR" ] && nmcli con modify "$BONDNAME" ipv4.method manual ipv4.address "$IPADDR" + [ -n "$GATEWAY" ] && nmcli con modify "$BONDNAME" ipv4.method manual ipv4.gateway "$GATEWAY" + [ -n "$DNS" ] && nmcli con modify "$BONDNAME" ipv4.method manual ip4.dns "$DNS" + + hcnlog INFO "Removing legacy profile $DEVNAME" + nmcli con down "$DEVNAME" 2>/dev/null + nmcli con delete "$DEVNAME" 2>/dev/null + + hcnlog INFO "Successfully transferred IP and cleaned up $DEVNAME" + return 0 +} # # function do_config_vdevice_nm @@ -376,6 +418,11 @@ do_config_vdevice_nm() { if [[ $MODE == "primary" ]]; then hcnlog INFO "Change bonding primary slave to $DEVNAME" nmcli con mod id "$BONDNAME" +bond.options "primary=$DEVNAME" + + # if there is standalone dev, cleanup the interface + # and if there is ip address, transfer to bonding master + check_transfer_ip_to_bond_nm "$BONDNAME" + nmcli con up "$BONDNAME" fi @@ -383,6 +430,55 @@ do_config_vdevice_nm() { return $E_SUCCESS } +# Function: check_transfer_ip_to_bond_wicked +# Purpose: Transfer IP configuration from a standalone network device to its bonding master, +# then clean up the legacy profile of the standalone device. +# +# Wicked Case +# +check_transfer_ip_to_bond_wicked() { + local BONDNAME="$1" + local DEVNAME="$2" + local SLAVE_CFG="/etc/sysconfig/network/ifcfg-${DEVNAME}" + local BOND_CFG="/etc/sysconfig/network/ifcfg-${BONDNAME}" + + hcnlog DEBUG "check_transfer_ip_to_bond_wicked: enter" + + if [ ! -f "$SLAVE_CFG" ]; then + hcnlog INFO "No standalone device cfg; nothing to transfer." + return 0 + fi + + # Extract IP address and gateway from the slave configuration + local IPADDR PREFIXLEN GATEWAY + IPADDR=$(grep -E '^IPADDR=' "$SLAVE_CFG" | cut -d= -f2 | tr -d '"') + GATEWAY=$(grep -E '^GATEWAY=' "$SLAVE_CFG" | cut -d= -f2 | tr -d '"') + DNS=$(grep -E '^DNS=' "$SLAVE_CFG" | cut -d= -f2 | tr -d '"') + + if [ -z "$IPADDR" ]; then + hcnlog INFO "No IP address found in $SLAVE_CFG; nothing to transfer." + return 0 + fi + + if [ ! -f "$BOND_CFG" ]; then + hcnlog WARN "Bond config for $BONDNAME not found; cannot transfer IP." + return 0 + fi + + # Add IP address, dns and gateway to the bond configuration + [ -n "$IPADDR" ] && echo "IPADDR='$IPADDR'" >> "$BOND_CFG" + [ -n "$GATEWAY" ] && echo "GATEWAY='$GATEWAY'" >> "$BOND_CFG" + [ -n "$DNS" ] && echo "DNS='$DNS'" >> "$BOND_CFG" + + # Remove conflicting settings + # Remove IP-related entries from the slave configuration + sed -i '/^IPADDR=/d;/^PREFIXLEN=/d;/^BOOTPROTO=/d' "$SLAVE_CFG" + + rm "$SLAVE_CFG" + hcnlog INFO "Transferred IP $IPADDR from $DEVNAME to $BONDNAME" + return 0 +} + # function do_config_vdevice_wicked # configure or create HCN (active-backup bonding) # add device as bonding slave @@ -403,6 +499,7 @@ do_config_vdevice_wicked() { # used/reserved to separate multiple arp_ip_targets, thus # this could result in invalid options...: suse_ifcfg_bond_create "$BONDNAME" "" "${BONDOPTIONS//,/ }" + check_transfer_ip_to_bond_wicked $BONDNAME $DEVNAME fi # Add device to the bond @@ -963,6 +1060,11 @@ scanhcn_wicked() { hcnlog INFO "scanhcn failed to adjust bond '$bond' config primary to '$primary'" fi + hcnlog INFO "check slave cfg file and transfer IP to master if present" + for dev in $(suse_ifcfg_bond_get_slaves "$bond") ; do + check_transfer_ip_to_bond_wicked "$bond" "$dev" + done + if systemctl is-active -q wicked.service ; then hcnlog INFO "scanhcn starting HCN bonding: $bond" wicked ifup "$bond" -- 2.47.1