aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordingtianhong <dingtianhong@huawei.com>2014-01-18 03:28:52 -0500
committerDavid S. Miller <davem@davemloft.net>2014-01-22 20:45:32 -0500
commitc59ab673699b6dcf457caea46799679e2526917c (patch)
tree30aedf331487d4a2a9234ce7907a32c9b2a63ec5
parent783c14633571462a5537ee628e1df1ecb715a3a1 (diff)
bonding: clean the primary slave if there is no slave matching new primary
If the new primay is not matching any slave in the bond, the bond should record it to params, clean the primary slave and select a new active slave. Signed-off-by: Ding Tianhong <dingtianhong@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/bonding/bond_options.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
index 05a402c99bff..4cee04aa6eb3 100644
--- a/drivers/net/bonding/bond_options.c
+++ b/drivers/net/bonding/bond_options.c
@@ -1021,6 +1021,12 @@ int bond_option_primary_set(struct bonding *bond, struct bond_opt_value *newval)
1021 } 1021 }
1022 } 1022 }
1023 1023
1024 if (bond->primary_slave) {
1025 pr_info("%s: Setting primary slave to None.\n",
1026 bond->dev->name);
1027 bond->primary_slave = NULL;
1028 bond_select_active_slave(bond);
1029 }
1024 strncpy(bond->params.primary, primary, IFNAMSIZ); 1030 strncpy(bond->params.primary, primary, IFNAMSIZ);
1025 bond->params.primary[IFNAMSIZ - 1] = 0; 1031 bond->params.primary[IFNAMSIZ - 1] = 0;
1026 1032