[Top] [All Lists]

Re: [PATCH] bonding using arp_ip_target may stay down with active path

To: Eric Paris <eparis@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] bonding using arp_ip_target may stay down with active path
From: Jay Vosburgh <fubar@xxxxxxxxxx>
Date: Mon, 16 May 2005 13:34:37 -0700
Cc: netdev@xxxxxxxxxxx, jgarzik@xxxxxxxxx, bonding-devel@xxxxxxxxxxxxxxxxxxxxx
In-reply-to: Message from Eric Paris <> of "Mon, 16 May 2005 14:41:25 EDT." <>
Sender: netdev-bounce@xxxxxxxxxxx
Eric Paris <eparis@xxxxxxxxxxxxxx> wrote:

>[...]  Bring back up the interface connected to
>eth1.  At this point we have a "valid" connection since eth1 can talk to
>one of the arp targets.  But we are only sending arp requests on eth0
>(verify with tcpdump)

        The trick is to have a situation with a partitioned network and
a failure such that the device still has link, but does not respond to
the ARP queries.  That's not an unreasonable failure if there's a switch
in each path to the arp_ip_target peers (which is how I set it up

>The patch below has been tested by me and appears to fix the problem.
>All of the failover tests I performed seem to work including pulling
>cables and stopping responses from the arp_ip_target entries.  

        The patch looks good to me, also (although I made the change by
hand instead of via patch).


        -Jay Vosburgh, IBM Linux Technology Center, fubar@xxxxxxxxxx

Signed-off-by: Jay Vosburgh <fubar@xxxxxxxxxx>

--- linux-2.6.11/drivers/net/bonding/bond_main.c.orig   2005-05-12 
12:22:52.000000000 -0400
+++ linux-2.6.11/drivers/net/bonding/bond_main.c        2005-05-12 
15:13:53.000000000 -0400
@@ -3046,7 +3046,7 @@ static void bond_activebackup_arp_mon(st

                        /* search for next candidate */
-                       bond_for_each_slave_from(bond, slave, i, 
bond->current_arp_slave) {
+                       bond_for_each_slave_from(bond, slave, i, 
bond->current_arp_slave->next) {
                                if (IS_UP(slave->dev)) {
                                        slave->link = BOND_LINK_BACK;

<Prev in Thread] Current Thread [Next in Thread>