Message ID | 20200818222309.2181236-1-yhs@fb.com |
---|---|
Headers | show |
Series | bpf: two fixes for bpf iterators | expand |
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(-) >