From: Dmitry Torokhov <dtor_core@ameritech.net>
To: netdev@oss.sgi.com
Cc: Radheka Godse <radheka.godse@intel.com>,
fubar@us.ibm.com, bonding-devel@lists.sourceforge.net
Subject: Re: [PATCH 2.6.13-rc1 8/17] bonding: SYSFS INTERFACE (large)
Date: Sat, 2 Jul 2005 00:30:03 -0500 [thread overview]
Message-ID: <200507020030.03635.dtor_core@ameritech.net> (raw)
In-Reply-To: <Pine.LNX.4.61.0507011347060.17459@localhost.localdomain>
Hi,
On Friday 01 July 2005 15:48, Radheka Godse wrote:
> This large patch adds the sysfs interface to channel bonding. It will
> allow users to add and remove bonds, add and remove slaves, and change
> all bonding parameters without using ifenslave.
> The ifenslave interface still works.
...
Couple of comments:
> @@ -3569,7 +3593,10 @@
> bond_remove_proc_entry(bond);
> bond_create_proc_entry(bond);
> #endif
> -
> + down_write(&(bonding_rwsem));
> + bond_destroy_sysfs_entry(bond);
> + bond_create_sysfs_entry(bond);
> + up_write(&(bonding_rwsem));
Space vs. tab identation.
> return NOTIFY_DONE;
> }
>
> @@ -4101,6 +4128,7 @@
> orig_app_abi_ver = prev_abi_ver;
> }
>
> + up_write(&(bonding_rwsem));
Whu extra parens?
> + * Changes:
> + *
> + * 2004/12/12 - Mitch Williams <mitch.a.williams at intel dot com>
> + * - Initial creation of sysfs interface.
> + *
> + * 2005/06/22 - Radheka Godse <radheka.godse at intel dot com>
> + * - Added ifenslave -c type functionality to sysfs
> + * - Added sysfs files for attributes such as MII Status and
> + * 802.3ad aggregator that are displayed in /proc
> + * - Added "name value" format to sysfs "mode" and
> + * "lacp_rate", for e.g., "active-backup 1" or "slow 0" for
> + * consistency and ease of script parsing
> + * - Fixed reversal of octets in arp_ip_targets via sysfs
> + * - sysfs support to handle bond interface re-naming
> + * - Moved all sysfs entries into /sys/class/net instead of
> + * of using a standalone subsystem.
> + * - Added sysfs symlinks between masters and slaves
> + * - Corrected bugs in sysfs unload path when creating bonds
> + * with existing interface names.
> + * - Removed redundant sysfs stat file since it duplicates slave info
> + * from the proc file
> + * - Fixed errors in sysfs show/store arp targets.
> + * - For consistency with ifenslave, instead of exiting
> + * with an error, updated bonding sysfs to
> + * close and attempt to enslave an up adapter.
> + * - Fixed NULL dereference when adding a slave interface
> + * that does not exist.
> + * - Added checks in sysfs bonding to reject invalid ip addresses
> + * - Synch up with post linux-2.6.12 bonding changes
> + * - Created sysfs bond attrib for xmit_hash_policy
I think we prefer to rely in SCMs to keep changelogs for new modules.
> +
> +static struct class *netdev_class;
> +/*--------------------------- Data Structures -----------------------------*/
> +
> +/* Bonding sysfs lock. Why can't we just use the subsytem lock?
> + * Because kobject_register tries to acquire the subsystem lock. If
> + * we already hold the lock (which we would if the user was creating
> + * a new bond through the sysfs interface), we deadlock.
> + */
> +
> +struct rw_semaphore bonding_rwsem;
klists were just added to the kernel proper. Does this sentiment still
holds true?
> +
> +/*
> + * "show" function for the bond_masters attribute.
> + * The class parameter is ignored.
> + */
> +static ssize_t bonding_show_bonds(struct class *cls, char *buffer)
> +{
> + int res = 0;
> + struct bonding *bond;
> +
> + down_read(&(bonding_rwsem));
Why extra parens?
> + list_for_each_entry_safe(bond, nxt, &bond_dev_list, bond_list) {
> + if (strnicmp(bond->dev->name, name, IFNAMSIZ) == 0) {
> + /* Temporarily set a meaningless flag. When
> + * we get done with the loop, we'll check all of these.
> + * If the bond doesn't have this flag set, then we need
> + * to remove the bond. If the flag has it set, then
> + * we can just clear the flag.
> + */
> + bond->flags |= IFF_DYNAMIC;
> + found = 1;
> + break; /* Found it, so go to next name */
> + }
> + }
Why list_for_each_entry_safe is used? NO elements is being deleted in
the loop...
> +
> + /* first, create a link from the slave back to the master */
> + ret = sysfs_create_link(&(slave->class_dev.kobj), &(master->class_dev.kobj),
> + "master");
Extra parens again.
> +static ssize_t bonding_show_arp_interval(struct class_device *cd, char *buf)
> +{
> + int count;
> + struct bonding *bond = to_bond(cd);
> +
> + down_read(&(bonding_rwsem));
> + count = sprintf(buf, "%d\n", bond->params.arp_interval) + 1;
> + up_read(&(bonding_rwsem));
> + return count;
> +}
What does this lock really protects here? As far as I can see params will
not go away...
> +
> + /* get the netdev class pointer */
> + firstbond = container_of(bond_dev_list.next, struct bonding, bond_list);
> + if (!firstbond)
> + {
Open brace should go on the same line as if. Besides, here it is not needed
at all...
Thanks!
--
Dmitry
next prev parent reply other threads:[~2005-07-02 5:30 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-01 20:48 [PATCH 2.6.13-rc1 8/17] bonding: SYSFS INTERFACE (large) Radheka Godse
2005-07-02 5:30 ` Dmitry Torokhov [this message]
2005-07-06 18:37 ` Mitch Williams
2005-07-06 19:02 ` Stephen Hemminger
2005-07-06 19:09 ` Dmitry Torokhov
2005-07-07 23:32 ` Mitch Williams
2005-07-02 8:13 ` Greg KH
2005-07-06 18:53 ` Mitch Williams
2005-07-06 19:52 ` Greg KH
2005-07-07 14:25 ` John W. Linville
2005-07-07 23:06 ` Mitch Williams
2005-07-07 23:14 ` Greg KH
2005-07-08 21:14 ` Mitch Williams
2005-07-08 21:31 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200507020030.03635.dtor_core@ameritech.net \
--to=dtor_core@ameritech.net \
--cc=bonding-devel@lists.sourceforge.net \
--cc=fubar@us.ibm.com \
--cc=netdev@oss.sgi.com \
--cc=radheka.godse@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.