)]}'
{
  "commit": "5c655dfd9823c2e0edf3f477637e2a05fc077fc2",
  "tree": "1f6cd026c3e2107a212095db15d16392c66d934b",
  "parents": [
    "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e",
    "49e03ca58334cd46dfd9267ced0ff91dcae2c451"
  ],
  "author": {
    "name": "Paolo Abeni",
    "email": "pabeni@redhat.com",
    "time": "Fri Jul 17 12:09:18 2026 +0200"
  },
  "committer": {
    "name": "Paolo Abeni",
    "email": "pabeni@redhat.com",
    "time": "Fri Jul 17 12:09:18 2026 +0200"
  },
  "message": "Merge branch \u0027netconsole-stop-charging-netpoll-users-for-netconsole-only-data\u0027\n\nBreno Leitao says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nnetconsole: stop charging netpoll users for netconsole-only data\n\nThis work continue to untangle netconsole and netpoll, improving\nmemory usage for netpoll users that are not netconsole.\n\nstruct netpoll is shared by every netpoll consumer in the tree:\nbonding, bridge, team, vlan, macvlan, dsa and netconsole. The non-\nnetconsole users only need a per-port handle that lets them transmit\nSKBs.\n\nYet struct netpoll has accumulated a pile of fields that exist only\nto serve netconsole\u0027s printk path:\n\n  - skb_pool / refill_wq: the fallback skb pool find_skb() falls back\n    on when alloc_skb() returns NULL, plus the workqueue that refills\n    it.\n  - local_port / remote_port / remote_mac: the source and destination\n    UDP ports and the destination ethernet address used to build\n    outgoing log packets.\n\nEvery netpoll user that allocates a struct netpoll pays for all of\nthese fields, even though it never queues a single skb on the pool,\nnever sends a UDP frame and never looks at any of the addressing.\n\nMove this netconsole-only state out of the shared struct into struct\nnetconsole_target, where its only consumer already lives.\n\nAfter the series every passive netpoll consumer drops\nsizeof(sk_buff_head) + sizeof(work_struct) + 2 * sizeof(u16) +\nETH_ALEN bytes per port (plus padding), and struct netpoll keeps only\nwhat belongs to the generic poll/transmit abstraction or what netpoll\ncore still reads itself.\n\nFollow-ups\n----------\nlocal_ip, remote_ip and ipv6 are still in struct netpoll. Moving the\naddressing additionally requires relocating netpoll_setup() -- whose\nonly caller is netconsole -- and its IPv4/IPv6 helpers, so it is left\nfor a follow-up to keep this series focused on a single responsibility\ntransfer.\n\nThis is pure code motion with no functional change. The pre-existing\ntarget/device teardown races reported against v1 have since been fixed\nindependently (as suggested by Jakub) and are already in the tree, so,\nre-posting this one.\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nLink: https://patch.msgid.link/20260710-netconsole_move_more-v3-0-6f63f76b28bc@debian.org\nSigned-off-by: Paolo Abeni \u003cpabeni@redhat.com\u003e\n",
  "tree_diff": []
}
