From patchwork Fri Jan 25 18:41:49 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: bonding: unset primary slave via sysfs Date: Fri, 25 Jan 2013 08:41:49 -0000 From: Milos Vyletel X-Patchwork-Id: 215833 Message-Id: <47084655-E363-4D67-94B3-B6A3471B4D4E@sde.cz> To: netdev@vger.kernel.org When bonding module is loaded with primary parameter and one decides to unset primary slave using sysfs these settings are not preserved during bond device restart. Primary slave is only unset once and it's not remembered in bond->params structure. Below is example of recreation. Fix is simple one-liner # grep OPTS /etc/sysconfig/network-scripts/ifcfg-bond0 BONDING_OPTS="mode=active-backup miimon=100 primary=eth01" # grep "Primary Slave" /proc/net/bonding/bond0 Primary Slave: eth01 (primary_reselect always) # echo "" > /sys/class/net/bond0/bonding/primary # grep "Primary Slave" /proc/net/bonding/bond0 Primary Slave: None # sed -i -e 's/primary=eth01//' /etc/sysconfig/network-scripts/ifcfg-bond0 # grep OPTS /etc/sysconfig/network-scripts/ifcfg-bond BONDING_OPTS="mode=active-backup miimon=100 " # ifdown bond0 && ifup bond0 without patch: # grep "Primary Slave" /proc/net/bonding/bond0 Primary Slave: eth01 (primary_reselect always) with patch: # grep "Primary Slave" /proc/net/bonding/bond0 Primary Slave: None --- drivers/net/bonding/bond_sysfs.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c index 1877ed7..50f7eef 100644 --- a/drivers/net/bonding/bond_sysfs.c +++ b/drivers/net/bonding/bond_sysfs.c @@ -1053,6 +1053,7 @@ static ssize_t bonding_store_primary(struct device *d, pr_info("%s: Setting primary slave to None.\n", bond->dev->name); bond->primary_slave = NULL; + memset(bond->params.primary, '\0', sizeof(bond->params.primary)); bond_select_active_slave(bond); goto out; }