From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
jiri@resnulli.us, jacob.e.keller@intel.com, leon@kernel.org,
Jakub Kicinski <kuba@kernel.org>
Subject: [RFC net-next 00/15] devlink: code split and structured instance walk
Date: Wed, 14 Dec 2022 18:01:40 -0800 [thread overview]
Message-ID: <20221215020155.1619839-1-kuba@kernel.org> (raw)
Hi!
I started working on the refcounting / registration changes
and (as is usual in our profession) I quickly veered off into
refactoring / paying technical debt. I hope this is not too
controversial.
===
Split devlink.c into a handful of files, trying to keep the "core"
code away from all the command-specific implementations.
The core code has been quite scattered before. Going forward we can
consider using a source file per-subobject, I think that it's quite
beneficial to newcomers (based on relative ease with which folks
contribute to ethtool vs devlink). But this series doesn't split
everything out, yet - partially due to backporting concerns,
but mostly due to lack of time.
Introduce a context structure for dumps, and use it to store
the devlink instance ID of the last dumped devlink instance.
This means we don't have to restart the walk from 0 each time.
Finally - introduce a "structured walk". A centralized dump handler
in devlink/netlink.c which walks the devlink instances, deals with
refcounting/locking, simplifying the per-object implementations quite
a bit.
Jakub Kicinski (15):
devlink: move code to a dedicated directory
devlink: split out core code
devlink: split out netlink code
devlink: protect devlink dump by the instance lock
netlink: add macro for checking dump ctx size
devlink: use an explicit structure for dump context
devlink: remove start variables from dumps
devlink: drop the filter argument from devlinks_xa_find_get
devlink: health: combine loops in dump
devlink: restart dump based on devlink instance ids (simple)
devlink: restart dump based on devlink instance ids (nested)
devlink: restart dump based on devlink instance ids (function)
devlink: uniformly take the devlink instance lock in the dump loop
devlink: add by-instance dump infra
devlink: convert remaining dumps to the by-instance scheme
include/linux/netlink.h | 4 +
net/Makefile | 1 +
net/core/Makefile | 1 -
net/devlink/Makefile | 3 +
net/{core/devlink.c => devlink/basic.c} | 1457 ++++++-----------------
net/devlink/core.c | 345 ++++++
net/devlink/devl_internal.h | 205 ++++
net/devlink/netlink.c | 241 ++++
net/netfilter/nf_conntrack_netlink.c | 2 +-
9 files changed, 1157 insertions(+), 1102 deletions(-)
create mode 100644 net/devlink/Makefile
rename net/{core/devlink.c => devlink/basic.c} (90%)
create mode 100644 net/devlink/core.c
create mode 100644 net/devlink/devl_internal.h
create mode 100644 net/devlink/netlink.c
--
2.38.1
next reply other threads:[~2022-12-15 2:02 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-15 2:01 Jakub Kicinski [this message]
2022-12-15 2:01 ` [RFC net-next 01/15] devlink: move code to a dedicated directory Jakub Kicinski
2022-12-15 9:51 ` Jiri Pirko
2022-12-15 18:44 ` Jacob Keller
2022-12-15 19:13 ` Jakub Kicinski
2022-12-15 19:09 ` Jakub Kicinski
2022-12-15 19:29 ` Jacob Keller
2022-12-15 19:48 ` Jakub Kicinski
2022-12-16 9:09 ` Jiri Pirko
2022-12-16 9:10 ` Jiri Pirko
2022-12-16 18:32 ` Jakub Kicinski
2022-12-16 23:26 ` Jacob Keller
2022-12-15 2:01 ` [RFC net-next 02/15] devlink: split out core code Jakub Kicinski
2022-12-15 2:01 ` [RFC net-next 03/15] devlink: split out netlink code Jakub Kicinski
2022-12-15 18:45 ` Jacob Keller
2022-12-15 19:14 ` Jakub Kicinski
2022-12-15 19:35 ` Jacob Keller
2022-12-15 2:01 ` [RFC net-next 04/15] devlink: protect devlink dump by the instance lock Jakub Kicinski
2022-12-15 8:42 ` Jiri Pirko
2022-12-15 19:17 ` Jakub Kicinski
2022-12-15 2:01 ` [RFC net-next 05/15] netlink: add macro for checking dump ctx size Jakub Kicinski
2022-12-15 2:01 ` [RFC net-next 06/15] devlink: use an explicit structure for dump context Jakub Kicinski
2022-12-15 9:52 ` Jiri Pirko
2022-12-15 18:50 ` Jacob Keller
2022-12-15 19:18 ` Jakub Kicinski
2022-12-15 2:01 ` [RFC net-next 07/15] devlink: remove start variables from dumps Jakub Kicinski
2022-12-15 2:01 ` [RFC net-next 08/15] devlink: drop the filter argument from devlinks_xa_find_get Jakub Kicinski
2022-12-15 18:52 ` Jacob Keller
2022-12-15 2:01 ` [RFC net-next 09/15] devlink: health: combine loops in dump Jakub Kicinski
2022-12-15 2:01 ` [RFC net-next 10/15] devlink: restart dump based on devlink instance ids (simple) Jakub Kicinski
2022-12-15 18:59 ` Jacob Keller
2022-12-15 2:01 ` [RFC net-next 11/15] devlink: restart dump based on devlink instance ids (nested) Jakub Kicinski
2022-12-15 2:01 ` [RFC net-next 12/15] devlink: restart dump based on devlink instance ids (function) Jakub Kicinski
2022-12-15 2:01 ` [RFC net-next 13/15] devlink: uniformly take the devlink instance lock in the dump loop Jakub Kicinski
2022-12-15 2:01 ` [RFC net-next 14/15] devlink: add by-instance dump infra Jakub Kicinski
2022-12-15 9:11 ` Jiri Pirko
2022-12-15 19:24 ` Jacob Keller
2022-12-15 19:47 ` Jakub Kicinski
2022-12-16 9:23 ` Jiri Pirko
2022-12-15 19:03 ` Jacob Keller
2022-12-15 2:01 ` [RFC net-next 15/15] devlink: convert remaining dumps to the by-instance scheme Jakub Kicinski
2022-12-15 19:39 ` [RFC net-next 00/15] devlink: code split and structured instance walk Jacob Keller
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=20221215020155.1619839-1-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jacob.e.keller@intel.com \
--cc=jiri@resnulli.us \
--cc=leon@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.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.