From: Kuniyuki Iwashima <kuniyu@amazon.com>
To: <pabeni@redhat.com>
Cc: <davem@davemloft.net>, <edumazet@google.com>, <kuba@kernel.org>,
<kuni1840@gmail.com>, <kuniyu@amazon.com>,
<netdev@vger.kernel.org>
Subject: Re: [PATCH v3 net-next 04/14] af_unix: Bulk update unix_tot_inflight/unix_inflight when queuing skb.
Date: Tue, 27 Feb 2024 18:34:45 -0800 [thread overview]
Message-ID: <20240228023445.28279-1-kuniyu@amazon.com> (raw)
In-Reply-To: <d90b617800cedf03ce8d93d2df61a724f2775f56.camel@redhat.com>
From: Paolo Abeni <pabeni@redhat.com>
Date: Tue, 27 Feb 2024 11:47:23 +0100
> On Fri, 2024-02-23 at 13:39 -0800, Kuniyuki Iwashima wrote:
> > diff --git a/net/unix/garbage.c b/net/unix/garbage.c
> > index 96d0b1db3638..e8fe08796d02 100644
> > --- a/net/unix/garbage.c
> > +++ b/net/unix/garbage.c
> > @@ -148,6 +148,7 @@ static void unix_free_vertices(struct scm_fp_list *fpl)
> > }
> >
> > DEFINE_SPINLOCK(unix_gc_lock);
> > +unsigned int unix_tot_inflight;
> >
> > void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver)
> > {
> > @@ -172,7 +173,10 @@ void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver)
> > unix_add_edge(fpl, edge);
> > } while (i < fpl->count_unix);
> >
> > + WRITE_ONCE(unix_tot_inflight, unix_tot_inflight + fpl->count_unix);
> > out:
> > + WRITE_ONCE(fpl->user->unix_inflight, fpl->user->unix_inflight + fpl->count);
>
> I'm unsure if later patches will shed some light, but why the above
> statement is placed _after_ the 'out' label? fpl->count will be 0 in
> such path, and the updated not needed. Why don't you place it before
> the mentioned label?
fpl->count is the total number of fds in skb, and fpl->count_unix
is the number of AF_UNIX fds.
So, we could reach the out: label if we pass no AF_UNIX fd but
other fds, then we count the number for each user to use in
too_many_unix_fds().
Before this change, unix_inflight() and unix_notinflight() did the
same but incremented/decremented one by one.
>
> > +
> > spin_unlock(&unix_gc_lock);
> >
> > fpl->inflight = true;
> > @@ -195,7 +199,10 @@ void unix_del_edges(struct scm_fp_list *fpl)
> > unix_del_edge(fpl, edge);
> > } while (i < fpl->count_unix);
> >
> > + WRITE_ONCE(unix_tot_inflight, unix_tot_inflight - fpl->count_unix);
> > out:
> > + WRITE_ONCE(fpl->user->unix_inflight, fpl->user->unix_inflight - fpl->count);
>
> Same question here.
>
> Thanks!
>
> Paolo
next prev parent reply other threads:[~2024-02-28 2:34 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-23 21:39 [PATCH v3 net-next 00/14] af_unix: Rework GC Kuniyuki Iwashima
2024-02-23 21:39 ` [PATCH v3 net-next 01/14] af_unix: Allocate struct unix_vertex for each inflight AF_UNIX fd Kuniyuki Iwashima
2024-02-23 21:39 ` [PATCH v3 net-next 02/14] af_unix: Allocate struct unix_edge " Kuniyuki Iwashima
2024-02-23 21:39 ` [PATCH v3 net-next 03/14] af_unix: Link struct unix_edge when queuing skb Kuniyuki Iwashima
2024-02-23 21:39 ` [PATCH v3 net-next 04/14] af_unix: Bulk update unix_tot_inflight/unix_inflight " Kuniyuki Iwashima
2024-02-27 10:47 ` Paolo Abeni
2024-02-28 2:34 ` Kuniyuki Iwashima [this message]
2024-02-28 7:46 ` Paolo Abeni
2024-02-23 21:39 ` [PATCH v3 net-next 05/14] af_unix: Detect Strongly Connected Components Kuniyuki Iwashima
2024-02-25 0:34 ` Jakub Kicinski
2024-02-26 19:07 ` Kuniyuki Iwashima
2024-02-27 11:02 ` Paolo Abeni
2024-02-28 2:49 ` Kuniyuki Iwashima
2024-02-23 21:39 ` [PATCH v3 net-next 06/14] af_unix: Save listener for embryo socket Kuniyuki Iwashima
2024-02-23 21:39 ` [PATCH v3 net-next 07/14] af_unix: Fix up unix_edge.successor " Kuniyuki Iwashima
2024-02-23 21:39 ` [PATCH v3 net-next 08/14] af_unix: Save O(n) setup of Tarjan's algo Kuniyuki Iwashima
2024-02-23 21:39 ` [PATCH v3 net-next 09/14] af_unix: Skip GC if no cycle exists Kuniyuki Iwashima
2024-02-23 21:39 ` [PATCH v3 net-next 10/14] af_unix: Avoid Tarjan's algorithm if unnecessary Kuniyuki Iwashima
2024-02-23 21:40 ` [PATCH v3 net-next 11/14] af_unix: Assign a unique index to SCC Kuniyuki Iwashima
2024-02-27 11:19 ` Paolo Abeni
2024-02-28 3:05 ` Kuniyuki Iwashima
2024-02-28 7:49 ` Paolo Abeni
2024-02-28 16:25 ` Kuniyuki Iwashima
2024-02-28 17:51 ` Paolo Abeni
2024-02-23 21:40 ` [PATCH v3 net-next 12/14] af_unix: Detect dead SCC Kuniyuki Iwashima
2024-02-27 11:25 ` Paolo Abeni
2024-02-28 3:14 ` Kuniyuki Iwashima
2024-02-23 21:40 ` [PATCH v3 net-next 13/14] af_unix: Replace garbage collection algorithm Kuniyuki Iwashima
2024-02-27 11:36 ` Paolo Abeni
2024-02-28 3:32 ` Kuniyuki Iwashima
2024-02-28 8:08 ` Paolo Abeni
2024-02-28 16:29 ` Kuniyuki Iwashima
2024-02-23 21:40 ` [PATCH v3 net-next 14/14] selftest: af_unix: Test GC for SCM_RIGHTS Kuniyuki Iwashima
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=20240228023445.28279-1-kuniyu@amazon.com \
--to=kuniyu@amazon.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=kuni1840@gmail.com \
--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.