On 8/18/20 3:23 PM, Yonghong Song wrote:
Patch #1 fixed a rcu stall warning when traversing large number
of tasks/files without overflowing seq_file buffer. The method
is to control the number of visited objects in bpf_seq_read()
so all bpf iterators will benefit.

Patch #2 calculated tid properly in a namespace in order to avoid
visiting the name task multiple times.

Patch #3 handled read() error code EAGAIN properly in bpftool
bpf_iter userspace code to collect pids. The change is needed
due to Patch #1.

Sorry. Missed the changelog below.

Changelogs:
  - v1 -> v2:
    . do ratelimiting in bpf_seq_read() with a counter.
      cond_resched() doesn't work as some iterators (e.g., tcp,
      netlink, etc.) has rcu read critical section across
      consecutive seq_ops->next() functions.


Yonghong Song (3):
   bpf: fix a rcu_sched stall issue with bpf task/task_file iterator
   bpf: avoid visit same object multiple times
   bpftool: handle EAGAIN error code properly in pids collection

  kernel/bpf/bpf_iter.c    | 15 ++++++++++++++-
  kernel/bpf/task_iter.c   |  3 ++-
  tools/bpf/bpftool/pids.c |  2 ++
  3 files changed, 18 insertions(+), 2 deletions(-)

Reply via email to