All of lore.kernel.org
 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 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.