aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-01-22 20:45:39 -0500
committerDavid S. Miller <davem@davemloft.net>2014-01-22 20:45:39 -0500
commit7705b10463622006dce368a47fa9d4dd7b6489ec (patch)
tree61838a39f6928bccd585ea86c2282dff550a81e5
parent783c14633571462a5537ee628e1df1ecb715a3a1 (diff)
parente1d206a713b93fb6a7750d77b741cf93302b0152 (diff)
Merge branch 'bonding'
Ding Tianhong says: ==================== bonding: fix primary problem for bonding If the slave's name changed, and the bond params primary is exist, the bond should deal with the situation in two ways: 1) If the slave was the primary slave yet, clean the primary slave and reselect active slave. 2) If the slave's new name is as same as bond primary, set the slave as primary slave and reselect active slave. If the new primary 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. Update bonding.txt for primary description. v2.1->v1: Because there are too many indentions and useless verification, so rewrite the logic for updating the primary slave. Modify some comments for to clean the typos. v3->v2.1: Veaceslav disagree the first patch and modify the logic for it (bonding: update the primary slave when changing slave's name) and resend it himself (bonding: handle slave's name change with primary_slave logic), so remove the first patch and send the last two patches. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--Documentation/networking/bonding.txt3
-rw-r--r--drivers/net/bonding/bond_options.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
index a4d925e4ba7a..5cdb22971d19 100644
--- a/Documentation/networking/bonding.txt
+++ b/Documentation/networking/bonding.txt
@@ -657,7 +657,8 @@ primary
657 one slave is preferred over another, e.g., when one slave has 657 one slave is preferred over another, e.g., when one slave has
658 higher throughput than another. 658 higher throughput than another.
659 659
660 The primary option is only valid for active-backup mode. 660 The primary option is only valid for active-backup(1),
661 balance-tlb (5) and balance-alb (6) mode.
661 662
662primary_reselect 663primary_reselect
663 664
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