All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stanislav Fomichev <stfomichev@gmail.com>
To: Jordan Rife <jordan@jrife.io>
Cc: netdev@vger.kernel.org, bpf@vger.kernel.org,
	Daniel Borkmann <daniel@iogearbox.net>,
	Martin KaFai Lau <martin.lau@linux.dev>,
	Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
	Kuniyuki Iwashima <kuniyu@google.com>,
	Alexei Starovoitov <alexei.starovoitov@gmail.com>
Subject: Re: [PATCH v4 bpf-next 00/12] bpf: tcp: Exactly-once socket iteration
Date: Mon, 7 Jul 2025 11:31:13 -0700	[thread overview]
Message-ID: <aGwScU1nHA4PmDpq@mini-arch> (raw)
In-Reply-To: <20250707155102.672692-1-jordan@jrife.io>

On 07/07, Jordan Rife wrote:
> TCP socket iterators use iter->offset to track progress through a
> bucket, which is a measure of the number of matching sockets from the
> current bucket that have been seen or processed by the iterator. On
> subsequent iterations, if the current bucket has unprocessed items, we
> skip at least iter->offset matching items in the bucket before adding
> any remaining items to the next batch. However, iter->offset isn't
> always an accurate measure of "things already seen" when the underlying
> bucket changes between reads, which can lead to repeated or skipped
> sockets. Instead, this series remembers the cookies of the sockets we
> haven't seen yet in the current bucket and resumes from the first cookie
> in that list that we can find on the next iteration.
> 
> This is a continuation of the work started in [1]. This series largely
> replicates the patterns applied to UDP socket iterators, applying them
> instead to TCP socket iterators.
> 
> CHANGES
> =======
> v3 -> v4:
> * Drop braces around sk_nulls_for_each_from in patch five ("bpf: tcp:
>   Avoid socket skips and repeats during iteration") (Stanislav).
> * Add a break after the TCP_SEQ_STATE_ESTABLISHED case in patch five
>   (Stanislav).
> * Add an `if (sock_type == SOCK_STREAM)` check before assigning
>   TCP_LISTEN to skel->rodata->ss in patch eight ("selftests/bpf: Allow
>   for iteration over multiple states") to more clearly express the
>   intent that the option is only consumed for SOCK_STREAM tests
>   (Stanislav).
> * Move the `i = 0` assignment into the for loop in patch ten
>   ("selftests/bpf: Create established sockets in socket iterator
>   tests") (Stanislav).

LGTM, thank you!

Acked-by: Stanislav Fomichev <sdf@fomichev.me>

      parent reply	other threads:[~2025-07-07 18:31 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-07 15:50 [PATCH v4 bpf-next 00/12] bpf: tcp: Exactly-once socket iteration Jordan Rife
2025-07-07 15:50 ` [PATCH v4 bpf-next 01/12] bpf: tcp: Make mem flags configurable through bpf_iter_tcp_realloc_batch Jordan Rife
2025-07-07 15:50 ` [PATCH v4 bpf-next 02/12] bpf: tcp: Make sure iter->batch always contains a full bucket snapshot Jordan Rife
2025-07-08 23:16   ` Martin KaFai Lau
2025-07-08 23:30     ` Martin KaFai Lau
2025-07-07 15:50 ` [PATCH v4 bpf-next 03/12] bpf: tcp: Get rid of st_bucket_done Jordan Rife
2025-07-07 15:50 ` [PATCH v4 bpf-next 04/12] bpf: tcp: Use bpf_tcp_iter_batch_item for bpf_tcp_iter_state batch items Jordan Rife
2025-07-07 15:50 ` [PATCH v4 bpf-next 05/12] bpf: tcp: Avoid socket skips and repeats during iteration Jordan Rife
2025-07-07 15:50 ` [PATCH v4 bpf-next 06/12] selftests/bpf: Add tests for bucket resume logic in listening sockets Jordan Rife
2025-07-07 15:50 ` [PATCH v4 bpf-next 07/12] selftests/bpf: Allow for iteration over multiple ports Jordan Rife
2025-07-07 15:50 ` [PATCH v4 bpf-next 08/12] selftests/bpf: Allow for iteration over multiple states Jordan Rife
2025-07-07 15:50 ` [PATCH v4 bpf-next 09/12] selftests/bpf: Make ehash buckets configurable in socket iterator tests Jordan Rife
2025-07-07 15:50 ` [PATCH v4 bpf-next 10/12] selftests/bpf: Create established sockets " Jordan Rife
2025-07-07 15:50 ` [PATCH v4 bpf-next 11/12] selftests/bpf: Create iter_tcp_destroy test program Jordan Rife
2025-07-08 23:39   ` Martin KaFai Lau
2025-07-07 15:51 ` [PATCH v4 bpf-next 12/12] selftests/bpf: Add tests for bucket resume logic in established sockets Jordan Rife
2025-07-08 23:44   ` Martin KaFai Lau
2025-07-09 22:47     ` Jordan Rife
2025-07-07 18:31 ` Stanislav Fomichev [this message]

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=aGwScU1nHA4PmDpq@mini-arch \
    --to=stfomichev@gmail.com \
    --cc=alexei.starovoitov@gmail.com \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=jordan@jrife.io \
    --cc=kuniyu@google.com \
    --cc=martin.lau@linux.dev \
    --cc=netdev@vger.kernel.org \
    --cc=willemdebruijn.kernel@gmail.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.