bonding: refactor ARP active-backup monitor
Refactor ARP monitor for active-backup mode. The motivation for this is to take care of locking issues in a clear manner (particularly to correctly handle RTNL vs. the bonding locks). Currently, the a-b ARP monitor does not hold RTNL at all, but future changes will require RTNL during ARP monitor failovers. Rather than using conditional locking, this patch instead breaks up the ARP monitor into three discrete steps: inspection, commit changes, and probe. The inspection phase marks slaves that require link state changes. The commit phase is only called if inspection detects that changes are needed, and is called with RTNL. Lastly, the probe phase issues the ARP probes that the inspection phase uses to determine link state. Signed-off-by: Jay Vosburgh <fubar@us.ibm.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
committed by
Jeff Garzik
parent
7893b2491a
commit
b2220cad58
@@ -158,6 +158,7 @@ struct slave {
|
||||
unsigned long jiffies;
|
||||
unsigned long last_arp_rx;
|
||||
s8 link; /* one of BOND_LINK_XXXX */
|
||||
s8 new_link;
|
||||
s8 state; /* one of BOND_STATE_XXXX */
|
||||
u32 original_flags;
|
||||
u32 original_mtu;
|
||||
@@ -169,6 +170,11 @@ struct slave {
|
||||
struct tlb_slave_info tlb_info;
|
||||
};
|
||||
|
||||
/*
|
||||
* Link pseudo-state only used internally by monitors
|
||||
*/
|
||||
#define BOND_LINK_NOCHANGE -1
|
||||
|
||||
/*
|
||||
* Here are the locking policies for the two bonding locks:
|
||||
*
|
||||
|
Reference in New Issue
Block a user