Skip to content
  1. May 25, 2023
  2. May 24, 2023
    • David S. Miller's avatar
      Merge branch 'devlink-port_del-new-cleanup' · 41a45ea4
      David S. Miller authored
      
      
      Jiri Pirko says:
      
      ====================
      devlink: small port_new/del() cleanup
      
      This patchset cleans up couple of leftovers after recent devlink locking
      changes. Previously, both port_new/dev() commands were called without
      holding instance lock. Currently all devlink commands are called with
      instance lock held.
      
      The first patch just removes redundant port notification.
      The second one removes couple of outdated comments.
      The last patch changes port_dev() to have devlink_port pointer as an arg
      instead of port_index, which makes it similar to the rest of port
      related ops.
      ====================
      
      Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      41a45ea4
    • Jiri Pirko's avatar
      devlink: pass devlink_port pointer to ops->port_del() instead of index · 9277649c
      Jiri Pirko authored
      
      
      Historically there was a reason why port_dev() along with for example
      port_split() did get port_index instead of the devlink_port pointer.
      With the locking changes that were done which ensured devlink instance
      mutex is hold for every command, the port ops could get devlink_port
      pointer directly. Change the forgotten port_dev() op to be as others
      and pass devlink_port pointer instead of port_index.
      
      Signed-off-by: default avatarJiri Pirko <jiri@nvidia.com>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9277649c
    • Jiri Pirko's avatar
      devlink: remove no longer true locking comment from port_new/del() · 1bb1b578
      Jiri Pirko authored
      
      
      All commands are called holding instance lock. Remove the outdated
      comment that says otherwise.
      
      Signed-off-by: default avatarJiri Pirko <jiri@nvidia.com>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1bb1b578
    • Jiri Pirko's avatar
      devlink: remove duplicate port notification · c496daeb
      Jiri Pirko authored
      
      
      The notification about created port is send from devl_port_register()
      function called from ops->port_new(). No need to send it again here,
      so remove the call and the helper function.
      
      Signed-off-by: default avatarJiri Pirko <jiri@nvidia.com>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c496daeb
    • David S. Miller's avatar
      Merge branch 'tools-ynl-byteorder' · 47469d2d
      David S. Miller authored
      
      
      Donald Hunter says:
      
      ====================
      tools: ynl: Add byte-order support for struct members
      
      This patchset adds support to ynl for handling byte-order in struct
      members. The first patch is a refactor to use predefined Struct() objects
      instead of generating byte-order specific formats on the fly. The second
      patch adds byte-order handling for struct members.
      ====================
      
      Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      47469d2d
    • Donald Hunter's avatar
      tools: ynl: Handle byte-order in struct members · bddd2e56
      Donald Hunter authored
      
      
      Add support for byte-order in struct members in the genetlink-legacy
      spec.
      
      Signed-off-by: default avatarDonald Hunter <donald.hunter@gmail.com>
      Acked-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bddd2e56
    • Donald Hunter's avatar
      tools: ynl: Use dict of predefined Structs to decode scalar types · 7c2435ef
      Donald Hunter authored
      
      
      Use a dict of predefined Struct() objects to decode scalar types in native,
      big or little endian format. This removes the repetitive code for the
      scalar variants and ensures all the signed variants are supported.
      
      Signed-off-by: default avatarDonald Hunter <donald.hunter@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7c2435ef
    • Russell King (Oracle)'s avatar
      net: phy: avoid kernel warning dump when stopping an errored PHY · 59088b5a
      Russell King (Oracle) authored
      
      
      When taking a network interface down (or removing a SFP module) after
      the PHY has encountered an error, phy_stop() complains incorrectly
      that it was called from HALTED state.
      
      The reason this is incorrect is that the network driver will have
      called phy_start() when the interface was brought up, and the fact
      that the PHY has a problem bears no relationship to the administrative
      state of the interface. Taking the interface administratively down
      (which calls phy_stop()) is always the right thing to do after a
      successful phy_start() call, whether or not the PHY has encountered
      an error.
      
      Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      59088b5a
    • David S. Miller's avatar
      Merge branch 'RTO_ONLINK' · 18731fe0
      David S. Miller authored
      
      
      Guillaume Nault says:
      
      ====================
      ipv4: Remove RTO_ONLINK from udp, ping and raw sockets.
      
      udp_sendmsg(), ping_v4_sendmsg() and raw_sendmsg() use similar patterns
      for restricting their route lookup to on-link hosts. Although they use
      slightly different code, they all use RTO_ONLINK to override the least
      significant bit of their tos value.
      
      RTO_ONLINK is used to restrict the route scope even when the scope is
      set to RT_SCOPE_UNIVERSE. Therefore it isn't necessary: we can properly
      set the scope to RT_SCOPE_LINK instead.
      
      Removing RTO_ONLINK will allow to convert .flowi4_tos to dscp_t in the
      future, thus allowing to properly separate the DSCP from the ECN bits
      in the networking stack.
      
      This patch series defines a common helper to figure out what's the
      scope of the route lookup. This unifies the way udp, ping and raw
      sockets get their routing scope and removes their dependency on
      RTO_ONLINK.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      18731fe0
    • Guillaume Nault's avatar
      udp: Stop using RTO_ONLINK. · 0e26371d
      Guillaume Nault authored
      
      
      Use ip_sendmsg_scope() to properly initialise the scope in
      flowi4_init_output(), instead of overriding tos with the RTO_ONLINK
      flag. The objective is to eventually remove RTO_ONLINK, which will
      allow converting .flowi4_tos to dscp_t.
      
      Now that the scope is determined by ip_sendmsg_scope(), we need to
      check its result to set the 'connected' variable.
      
      Signed-off-by: default avatarGuillaume Nault <gnault@redhat.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0e26371d
    • Guillaume Nault's avatar
      raw: Stop using RTO_ONLINK. · c85be08f
      Guillaume Nault authored
      
      
      Use ip_sendmsg_scope() to properly initialise the scope in
      flowi4_init_output(), instead of overriding tos with the RTO_ONLINK
      flag. The objective is to eventually remove RTO_ONLINK, which will
      allow converting .flowi4_tos to dscp_t.
      
      The MSG_DONTROUTE and SOCK_LOCALROUTE cases were already handled by
      raw_sendmsg() (SOCK_LOCALROUTE was handled by the RT_CONN_FLAGS*()
      macros called by get_rtconn_flags()). However, opt.is_strictroute
      wasn't taken into account. Therefore, a side effect of this patch is to
      now honour opt.is_strictroute, and thus align raw_sendmsg() with
      ping_v4_sendmsg() and udp_sendmsg().
      
      Since raw_sendmsg() was the only user of get_rtconn_flags(), we can now
      remove this function.
      
      Signed-off-by: default avatarGuillaume Nault <gnault@redhat.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c85be08f
    • Guillaume Nault's avatar
      ping: Stop using RTO_ONLINK. · 726de790
      Guillaume Nault authored
      
      
      Define a new helper to figure out the correct route scope to use on TX,
      depending on socket configuration, ancillary data and send flags.
      
      Use this new helper to properly initialise the scope in
      flowi4_init_output(), instead of overriding tos with the RTO_ONLINK
      flag.
      
      The objective is to eventually remove RTO_ONLINK, which will allow
      converting .flowi4_tos to dscp_t.
      
      Signed-off-by: default avatarGuillaume Nault <gnault@redhat.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      726de790
    • Coco Li's avatar
      gve: Support IPv6 Big TCP on DQ · a695641c
      Coco Li authored
      
      
      Add support for using IPv6 Big TCP on DQ which can handle large TSO/GRO
      packets. See https://lwn.net/Articles/895398/. This can improve the
      throughput and CPU usage.
      
      Perf test result:
      ip -d link show $DEV
      gso_max_size 185000 gso_max_segs 65535 tso_max_size 262143 tso_max_segs 65535 gro_max_size 185000
      
      For performance, tested with neper using 9k MTU on hardware that supports 200Gb/s line rate.
      
      In single streams when line rate is not saturated, we expect throughput improvements.
      When the networking is performing at line rate, we expect cpu usage improvements.
      
      Tcp_stream (unidirectional stream test, T=thread, F=flow):
      skb=180kb, T=1, F=1, no zerocopy: throughput average=64576.88 Mb/s, sender stime=8.3, receiver stime=10.68
      skb=64kb,  T=1, F=1, no zerocopy: throughput average=64862.54 Mb/s, sender stime=9.96, receiver stime=12.67
      skb=180kb, T=1, F=1, yes zerocopy:  throughput average=146604.97 Mb/s, sender stime=10.61, receiver stime=5.52
      skb=64kb,  T=1, F=1, yes zerocopy:  throughput average=131357.78 Mb/s, sender stime=12.11, receiver stime=12.25
      
      skb=180kb, T=20, F=100, no zerocopy:  throughput average=182411.37 Mb/s, sender stime=41.62, receiver stime=79.4
      skb=64kb,  T=20, F=100, no zerocopy:  throughput average=182892.02 Mb/s, sender stime=57.39, receiver stime=72.69
      skb=180kb, T=20, F=100, yes zerocopy: throughput average=182337.65 Mb/s, sender stime=27.94, receiver stime=39.7
      skb=64kb,  T=20, F=100, yes zerocopy: throughput average=182144.20 Mb/s, sender stime=47.06, receiver stime=39.01
      
      Signed-off-by: default avatarZiwei Xiao <ziweixiao@google.com>
      Signed-off-by: default avatarCoco Li <lixiaoyan@google.com>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Link: https://lore.kernel.org/r/20230522201552.3585421-1-ziweixiao@google.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a695641c
    • Jakub Kicinski's avatar
      Merge branch 'splice-net-replace-sendpage-with-sendmsg-msg_splice_pages-part-1' · 51c78a4d
      Jakub Kicinski authored
      
      
      David Howells says:
      
      ====================
      splice, net: Replace sendpage with sendmsg(MSG_SPLICE_PAGES), part 1
      
      Here's the first tranche of patches towards providing a MSG_SPLICE_PAGES
      internal sendmsg flag that is intended to replace the ->sendpage() op with
      calls to sendmsg().  MSG_SPLICE_PAGES is a hint that tells the protocol
      that it should splice the pages supplied if it can and copy them if not.
      
      This will allow splice to pass multiple pages in a single call and allow
      certain parts of higher protocols (e.g. sunrpc, iwarp) to pass an entire
      message in one go rather than having to send them piecemeal.  This should
      also make it easier to handle the splicing of multipage folios.
      
      A helper, skb_splice_from_iter() is provided to do the work of splicing or
      copying data from an iterator.  If a page is determined to be unspliceable
      (such as being in the slab), then the helper will give an error.
      
      Note that this facility is not made available to userspace and does not
      provide any sort of callback.
      
      This set consists of the following parts:
      
       (1) Define the MSG_SPLICE_PAGES flag and prevent sys_sendmsg() from being
           able to set it.
      
       (2) Add an extra argument to skb_append_pagefrags() so that something
           other than MAX_SKB_FRAGS can be used (sysctl_max_skb_frags for
           example).
      
       (3) Add the skb_splice_from_iter() helper to handle splicing pages into
           skbuffs for MSG_SPLICE_PAGES that can be shared by TCP, IP/UDP and
           AF_UNIX.
      
       (4) Implement MSG_SPLICE_PAGES support in TCP.
      
       (5) Make do_tcp_sendpages() just wrap sendmsg() and then fold it in to its
           various callers.
      
       (6) Implement MSG_SPLICE_PAGES support in IP and make udp_sendpage() just
           a wrapper around sendmsg().
      
       (7) Implement MSG_SPLICE_PAGES support in IP6/UDP6.
      
       (8) Implement MSG_SPLICE_PAGES support in AF_UNIX.
      
       (9) Make AF_UNIX copy unspliceable pages.
      
      Link: https://lore.kernel.org/r/20230316152618.711970-1-dhowells@redhat.com/ # v1
      Link: https://lore.kernel.org/r/20230329141354.516864-1-dhowells@redhat.com/ # v2
      Link: https://lore.kernel.org/r/20230331160914.1608208-1-dhowells@redhat.com/ # v3
      Link: https://lore.kernel.org/r/20230405165339.3468808-1-dhowells@redhat.com/ # v4
      Link: https://lore.kernel.org/r/20230406094245.3633290-1-dhowells@redhat.com/ # v5
      Link: https://lore.kernel.org/r/20230411160902.4134381-1-dhowells@redhat.com/ # v6
      Link: https://lore.kernel.org/r/20230515093345.396978-1-dhowells@redhat.com/ # v7
      Link: https://lore.kernel.org/r/20230518113453.1350757-1-dhowells@redhat.com/ # v8
      ====================
      
      Link: https://lore.kernel.org/r/20230522121125.2595254-1-dhowells@redhat.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      51c78a4d
    • David Howells's avatar
      unix: Convert unix_stream_sendpage() to use MSG_SPLICE_PAGES · 57d44a35
      David Howells authored
      
      
      Convert unix_stream_sendpage() to use sendmsg() with MSG_SPLICE_PAGES
      rather than directly splicing in the pages itself.
      
      This allows ->sendpage() to be replaced by something that can handle
      multiple multipage folios in a single transaction.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Kuniyuki Iwashima <kuniyu@amazon.com>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      57d44a35
    • David Howells's avatar
      af_unix: Support MSG_SPLICE_PAGES · a0dbf5f8
      David Howells authored
      
      
      Make AF_UNIX sendmsg() support MSG_SPLICE_PAGES, splicing in pages from the
      source iterator if possible and copying the data in otherwise.
      
      This allows ->sendpage() to be replaced by something that can handle
      multiple multipage folios in a single transaction.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Kuniyuki Iwashima <kuniyu@amazon.com>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a0dbf5f8
    • David Howells's avatar
      ip: Remove ip_append_page() · c49cf266
      David Howells authored
      
      
      ip_append_page() is no longer used with the removal of udp_sendpage(), so
      remove it.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
      cc: David Ahern <dsahern@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c49cf266
    • David Howells's avatar
      udp: Convert udp_sendpage() to use MSG_SPLICE_PAGES · 7ac7c987
      David Howells authored
      
      
      Convert udp_sendpage() to use sendmsg() with MSG_SPLICE_PAGES rather than
      directly splicing in the pages itself.
      
      This allows ->sendpage() to be replaced by something that can handle
      multiple multipage folios in a single transaction.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
      cc: David Ahern <dsahern@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      7ac7c987
    • David Howells's avatar
      ip6, udp6: Support MSG_SPLICE_PAGES · 6d8192bd
      David Howells authored
      
      
      Make IP6/UDP6 sendmsg() support MSG_SPLICE_PAGES.  This causes pages to be
      spliced from the source iterator if possible, copying the data if not.
      
      This allows ->sendpage() to be replaced by something that can handle
      multiple multipage folios in a single transaction.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
      cc: David Ahern <dsahern@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6d8192bd
    • David Howells's avatar
      ip, udp: Support MSG_SPLICE_PAGES · 7da0dde6
      David Howells authored
      
      
      Make IP/UDP sendmsg() support MSG_SPLICE_PAGES.  This causes pages to be
      spliced from the source iterator.
      
      This allows ->sendpage() to be replaced by something that can handle
      multiple multipage folios in a single transaction.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
      cc: David Ahern <dsahern@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      7da0dde6
    • David Howells's avatar
      tcp: Fold do_tcp_sendpages() into tcp_sendpage_locked() · 5367f9bb
      David Howells authored
      
      
      Fold do_tcp_sendpages() into its last remaining caller,
      tcp_sendpage_locked().
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: David Ahern <dsahern@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      5367f9bb
    • David Howells's avatar
      siw: Inline do_tcp_sendpages() · c2ff29e9
      David Howells authored
      
      
      do_tcp_sendpages() is now just a small wrapper around tcp_sendmsg_locked(),
      so inline it, allowing do_tcp_sendpages() to be removed.  This is part of
      replacing ->sendpage() with a call to sendmsg() with MSG_SPLICE_PAGES set.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarBernard Metzler <bmt@zurich.ibm.com>
      Reviewed-by: default avatarTom Talpey <tom@talpey.com>
      cc: Jason Gunthorpe <jgg@ziepe.ca>
      cc: Leon Romanovsky <leon@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c2ff29e9
    • David Howells's avatar
      tls: Inline do_tcp_sendpages() · e117dcfd
      David Howells authored
      
      
      do_tcp_sendpages() is now just a small wrapper around tcp_sendmsg_locked(),
      so inline it, allowing do_tcp_sendpages() to be removed.  This is part of
      replacing ->sendpage() with a call to sendmsg() with MSG_SPLICE_PAGES set.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Boris Pismenny <borisp@nvidia.com>
      cc: John Fastabend <john.fastabend@gmail.com>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      e117dcfd
    • David Howells's avatar
      espintcp: Inline do_tcp_sendpages() · 7f8816ab
      David Howells authored
      
      
      do_tcp_sendpages() is now just a small wrapper around tcp_sendmsg_locked(),
      so inline it, allowing do_tcp_sendpages() to be removed.  This is part of
      replacing ->sendpage() with a call to sendmsg() with MSG_SPLICE_PAGES set.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: Steffen Klassert <steffen.klassert@secunet.com>
      cc: Herbert Xu <herbert@gondor.apana.org.au>
      cc: David Ahern <dsahern@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      7f8816ab
    • David Howells's avatar
      tcp_bpf: Inline do_tcp_sendpages as it's now a wrapper around tcp_sendmsg · ebf2e886
      David Howells authored
      
      
      do_tcp_sendpages() is now just a small wrapper around tcp_sendmsg_locked(),
      so inline it.  This is part of replacing ->sendpage() with a call to
      sendmsg() with MSG_SPLICE_PAGES set.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: John Fastabend <john.fastabend@gmail.com>
      cc: Jakub Sitnicki <jakub@cloudflare.com>
      cc: David Ahern <dsahern@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ebf2e886
    • David Howells's avatar
      tcp: Convert do_tcp_sendpages() to use MSG_SPLICE_PAGES · c5c37af6
      David Howells authored
      
      
      Convert do_tcp_sendpages() to use sendmsg() with MSG_SPLICE_PAGES rather
      than directly splicing in the pages itself.  do_tcp_sendpages() can then be
      inlined in subsequent patches into its callers.
      
      This allows ->sendpage() to be replaced by something that can handle
      multiple multipage folios in a single transaction.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: David Ahern <dsahern@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c5c37af6
    • David Howells's avatar
      tcp: Support MSG_SPLICE_PAGES · 270a1c3d
      David Howells authored
      
      
      Make TCP's sendmsg() support MSG_SPLICE_PAGES.  This causes pages to be
      spliced or copied (if it cannot be spliced) from the source iterator.
      
      This allows ->sendpage() to be replaced by something that can handle
      multiple multipage folios in a single transaction.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      cc: David Ahern <dsahern@kernel.org>
      cc: Jens Axboe <axboe@kernel.dk>
      cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      270a1c3d