From: Veaceslav Falico <vfalico@redhat.com>
To: netdev@vger.kernel.org
Cc: Jay Vosburgh <fubar@us.ibm.com>,
Andy Gospodarek <andy@greyhouse.net>,
"David S. Miller" <davem@davemloft.net>,
Patrick McHardy <kaber@trash.net>,
Eric Dumazet <edumazet@google.com>, Jiri Pirko <jiri@resnulli.us>,
Alexander Duyck <alexander.h.duyck@intel.com>,
Veaceslav Falico <vfalico@redhat.com>
Subject: [PATCH RFC net-next 0/21] bonding: use neighbours instead of own lists
Date: Mon, 2 Sep 2013 23:39:04 +0200 [thread overview]
Message-ID: <1378157965-17537-1-git-send-email-vfalico@redhat.com> (raw)
(on top of "net: correctly interlink lower/upper devices" - the fix is
vital)
Hi,
I'm sending it as early as possible, because it's quite a big patchset and
some of the approaches I've chosen are not really easy/straightforward. It
will require a lot of work, obviously, before I can send it as a proper
patchset ready to be considered for inclusion, even though it works now.
I'm sending it to gather any feedback possible.
This patchset introduces all the needed infrastructure, on top of current
adjacent lists, to be able to remove bond's slave_list/slave->list. The
overhead in memory/CPU is minimal, and after the patchset bonding can rely
on its slave-related functions, given the proper locking.
It also automatically creates slave/upper and master symlinks in dev's
sysfs directory.
The current version works ok, as first tests have shown. I'm testing it
further.
Here is a short description of each:
net: add neighbour_dev_list to save only neighbours
Adding two new lists, each for the device neighbours only - it's
done for speed when going through slaves.
net: add RCU variant to search for netdev_adjacent link
net: add netdev_adjacent->private and allow to use it
These two patches add infrastructure for the netdev_adjacent new
member - private, which contains master's private info for the
slave - in case of bonding it's struct slave *.
net: expose the master link to sysfs, and remove it from bond
Create sysfs link for master devices.
vlan: link the upper neighbour only after registering
vlan linked itself before registering, which ends badly if we'll
have a user before it registers, and is not ready for sysfs
operations.
net: create sysfs symlinks for neighbour devices
Create sysfs links to slave/upper devices.
bonding: add bond_has_slaves() and use it
It'll be easier for modification in the future.
bonding: convert bond_has_slaves() to use the neighbour list
First usage of the neighbour_dev_list.lower - bonding's lower
devices are *always* slaves, so we can verify if it's empty or not.
bonding: populate neighbour's private on enslave
Attach struct slave * to each lower link.
bonding: modify bond_get_slave_by_dev() to use neighbours
We can search already for ->private here.
bonding: remove bond_for_each_slave_reverse()
It's useless and hard to read sometimes.
net: add for_each iterators through neighbour lower link's private
bonding: make bond_for_each_slave() use lower neighbour's private
These two patches convert bond_for_each_slave() to use neighbours
lower list.
net: add netdev_for_each_lower_neigh_private_continue()
bonding: use neighbour list for bond_for_each_slave_continue()
These two - bond_for_each_slave_continue().
net: add a possibility to get private from netdev_adjacent->list
bonding: convert first/last slave logic to use neighbours
Convert those little helpers without huge functions - just use the
list's next/prev.
net: add a function to get the next/prev private
bonding: use neighbours for bond_next/prev_slave()
Same.
bonding: use bond_for_each_slave() in bond_uninit()
We can safely use it - we're using the ->next field.
bonding: remove slave lists
Finally.
I'll update if anything comes up.
Thanks in advance.
CC: Jay Vosburgh <fubar@us.ibm.com>
CC: Andy Gospodarek <andy@greyhouse.net>
CC: "David S. Miller" <davem@davemloft.net>
CC: Patrick McHardy <kaber@trash.net>
CC: Eric Dumazet <edumazet@google.com>
CC: Jiri Pirko <jiri@resnulli.us>
CC: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Veaceslav Falico <vfalico@redhat.com>
---
drivers/net/bonding/bond_3ad.c | 13 +-
drivers/net/bonding/bond_alb.c | 42 ++--
drivers/net/bonding/bond_main.c | 204 +++++++++-------
drivers/net/bonding/bond_procfs.c | 5 +-
drivers/net/bonding/bond_sysfs.c | 62 ++---
drivers/net/bonding/bonding.h | 65 ++---
include/linux/netdevice.h | 67 +++++-
net/8021q/vlan.c | 14 +-
net/core/dev.c | 483 +++++++++++++++++++++++++++++++++-----
9 files changed, 686 insertions(+), 269 deletions(-)
next reply other threads:[~2013-09-02 21:40 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-02 21:39 Veaceslav Falico [this message]
2013-09-02 21:39 ` [PATCH RFC net-next 01/21] net: add neighbour_dev_list to save only neighbours Veaceslav Falico
2013-09-03 8:29 ` Jiri Pirko
2013-09-03 8:34 ` Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 02/21] net: add RCU variant to search for netdev_adjacent link Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 03/21] net: add netdev_adjacent->private and allow to use it Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 04/21] net: expose the master link to sysfs, and remove it from bond Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 05/21] vlan: link the upper neighbour only after registering Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 06/21] net: create sysfs symlinks for neighbour devices Veaceslav Falico
2013-09-03 7:48 ` Jiri Pirko
2013-09-03 8:05 ` Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 07/21] bonding: add bond_has_slaves() and use it Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 08/21] bonding: convert bond_has_slaves() to use the neighbour list Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 09/21] bonding: populate neighbour's private on enslave Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 10/21] bonding: modify bond_get_slave_by_dev() to use neighbours Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 11/21] bonding: remove bond_for_each_slave_reverse() Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 12/21] net: add for_each iterators through neighbour lower link's private Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 13/21] bonding: make bond_for_each_slave() use lower neighbour's private Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 14/21] net: add netdev_for_each_lower_neigh_private_continue() Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 15/21] bonding: use neighbour list for bond_for_each_slave_continue() Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 16/21] net: add a possibility to get private from netdev_adjacent->list Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 17/21] bonding: convert first/last slave logic to use neighbours Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 18/21] net: add a function to get the next/prev private Veaceslav Falico
2013-09-03 8:10 ` Jiri Pirko
2013-09-02 21:39 ` [PATCH RFC net-next 19/21] bonding: use neighbours for bond_next/prev_slave() Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 20/21] bonding: use bond_for_each_slave() in bond_uninit() Veaceslav Falico
2013-09-02 21:39 ` [PATCH RFC net-next 21/21] bonding: remove slave lists Veaceslav Falico
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=1378157965-17537-1-git-send-email-vfalico@redhat.com \
--to=vfalico@redhat.com \
--cc=alexander.h.duyck@intel.com \
--cc=andy@greyhouse.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=fubar@us.ibm.com \
--cc=jiri@resnulli.us \
--cc=kaber@trash.net \
--cc=netdev@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).