netdev
[Top] [All Lists]

requesting input on changes to bonding.c

To: netdev@xxxxxxxxxxx, davem@xxxxxxxxxx
Subject: requesting input on changes to bonding.c
From: "Janice Girouard" <girouard@xxxxxxxxxx>
Date: Tue, 14 Aug 2001 12:44:48 -0500
Importance: Normal
Sender: owner-netdev@xxxxxxxxxxx
There are a number of patches out at the
www.sourceforge.net/projects/bonding
site for release 2.4.4 at:

http://sourceforge.net/project/showfiles.php?group_id=24692&release_id=47592


These patches represent work since 9/30/2000 from various individuals for
some nice improvements in the bonding.c code.  A detailed list of these
changes are included at the bottom of this note.

I was hoping that we could receive feedback on these changes to facilate
having them accepted.  If you have a moment, could you take a look at this
work and provide input.

Thanks

Janice Girouard
girouard@xxxxxxxxxx
512-838-7981


________________________________________________________________________________


Summary of changes since 9/30/2000


  2000/09/30 - Willy Tarreau <willy at meta-x.org>
      - added trivial code to release a slave device.
      - fixed security bug (CAP_NET_ADMIN not checked)
      - implemented MII link monitoring to disable dead links :
        All MII capable slaves are checked every <miimon> milliseconds
        (100 ms seems good). This value can be changed by passing it to
        insmod. A value of zero disables the monitoring (default).
      - fixed an infinite loop in bond_xmit_roundrobin() when there's no
        good slave.
      - made the code hopefully SMP safe

  2000/10/03 - Willy Tarreau <willy at meta-x.org>
      - optimized slave lists based on relevant suggestions from Thomas
Davis
      - implemented active-backup method to obtain HA with two switches:
        stay as long as possible on the same active interface, while we
        also monitor the backup one (MII link status) because we want to
know
        if we are able to switch at any time. ( pass "mode=1" to insmod )
      - lots of stress testings because we need it to be more robust than
the
        wires ! :->

  2000/10/09 - Willy Tarreau <willy at meta-x.org>
      - added up and down delays after link state change.
      - optimized the slaves chaining so that when we run forward, we never
        repass through the bond itself, but we can find it by searching
        backwards. Renders the deletion more difficult, but accelerates the
        scan.
      - smarter enslaving and releasing.
      - finer and more robust SMP locking

  2000/10/17 - Willy Tarreau <willy at meta-x.org>
      - fixed two potential SMP race conditions

  2000/10/18 - Willy Tarreau <willy at meta-x.org>
      - small fixes to the monitoring FSM in case of zero delays
  2000/11/01 - Willy Tarreau <willy at meta-x.org>
      - fixed first slave not automatically used in trunk mode.
  2000/11/10 : spelling of "EtherChannel" corrected.
  2000/11/13 : fixed a race condition in case of concurrent accesses to
ioctl().
  2000/12/16 : fixed improper usage of rtnl_exlock_nowait().

  2001/1/3 - Chad N. Tindel <ctindel at ieee dot org>
      - The bonding driver now simulates MII status monitoring, just like
        a normal network device.  It will show that the link is down iff
        every slave in the bond shows that their links are down.  If at
least
        one slave is up, the bond's MII status will appear as up.

  2001/2/7 - Chad N. Tindel <ctindel at ieee dot org>
      - Applications can now query the bond from user space to get
        information which may be useful.  They do this by calling
        the BOND_INFO_QUERY ioctl.  Once the app knows how many slaves
        are in the bond, it can call the BOND_SLAVE_INFO_QUERY ioctl to
        get slave specific information (# link failures, etc).  See
        <linux/if_bonding.h> for more details.  The structs of interest
        are ifbond and ifslave.

  2001/4/5 - Chad N. Tindel <ctindel at ieee dot org>
      - Ported to 2.4 Kernel

  2001/5/2 - Jeffrey E. Mast <jeff at mastfamily dot com>
      - When a device is detached from a bond, the slave device is no
longer
        left thinking that is has a master.

  2001/5/16 - Jeffrey E. Mast <jeff at mastfamily dot com>
      - memset did not appropriately initialized the bond rw_locks. Used
        rwlock_init to initialize to unlocked state to prevent deadlock
when
        first attempting a lock
      - Called SET_MODULE_OWNER for bond device

  2001/5/17 - Tim Anderson <tsa at mvista.com>
      - 2 paths for releasing for slave release; 1 through ioctl
        and 2) through close. Both paths need to release the same way.
      - the free slave in bond release is changing slave status before
        the free. The netdev_set_master() is intended to change slave state
        so it should not be done as part of the release process.
      - Simple rule for slave state at release: only the active in A/B and
        only one in the trunked case.

  2001/6/01 - Tim Anderson <tsa at mvista.com>
      - Now call dev_close when releasing a slave so it doesn't screw up
        out routing table.

  2001/6/01 - Chad N. Tindel <ctindel at ieee dot org>
      - Added /proc support for getting bond and slave information.
        Information is in /proc/net/<bond device>/info.
      - Changed the locking when calling bond_close to prevent deadlock.
  2001/8/05 - Janice Girouard <girouard at us.ibm.com>
      - correct problem where refcnt of slave is not incremented in
bond_ioctl
        so the system hangs when halting.
      - correct locking problem when unable to malloc in bond_enslave.
      - added bond_xmit_xor logic.





<Prev in Thread] Current Thread [Next in Thread>
  • requesting input on changes to bonding.c, Janice Girouard <=