netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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(-)

             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).