netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC net-next 00/15] devlink: code split and structured instance walk
@ 2022-12-15  2:01 Jakub Kicinski
  2022-12-15  2:01 ` [RFC net-next 01/15] devlink: move code to a dedicated directory Jakub Kicinski
                   ` (15 more replies)
  0 siblings, 16 replies; 42+ messages in thread
From: Jakub Kicinski @ 2022-12-15  2:01 UTC (permalink / raw)
  To: davem; +Cc: netdev, edumazet, pabeni, jiri, jacob.e.keller, leon,
	Jakub Kicinski

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


^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2022-12-16 23:26 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-15  2:01 [RFC net-next 00/15] devlink: code split and structured instance walk Jakub Kicinski
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

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