bonding: modify sysfs support to permit multiple loads
authorJay Vosburgh <fubar@us.ibm.com>
Sat, 20 Jan 2007 02:15:47 +0000 (18:15 -0800)
committerJeff Garzik <jeff@garzik.org>
Mon, 5 Feb 2007 21:58:47 +0000 (16:58 -0500)
commit877cbd36b27e073eb78fe7073a433fbe0da7d5f8
tree2509195023739015f75711f5358db2209ae03e8a
parent09c892797688312dc8a3c4d8b37dcb7207c1d48a
bonding: modify sysfs support to permit multiple loads

The existing code would blindly attempt to create the
bonding_masters file (in /sys/class/net) every time the module was
loaded.  When the module is loaded multiple times (which is the
historical method used by initscripts and sysconfig to create multiple
bonding interfaces), this caused load failure of the second module load
attempt, as the creation request would fail.

This changes the code to note the failure, arrange to not remove
the bonding_masters file upon module exit, and then return success.

Bonding interfaces created by the second or subsequent loads of
the module will not exist in bonding_masters.  This is not a significant
change, as previously only the interfaces from the most recent load of
the module would be listed.  Both situations are less than optimal, but
this case permits compatibility with existing distro configuration
scripts, and is consistent.

Note that previously, the sysfs create request would overwrite
the exsting bonding_masters file and succeed, allowing multiple loads of
the module.  The sysfs code has recently changed to return an error if
the file being created already exists.

Patrick McHardy <kaber@trash.net>, who reported this problem,
observed crashes on the old kernel (before sysfs checked for
duplicates).  I did not experience such crashes, but this change should
resolve them.

Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/bonding/bond_sysfs.c