v1->v2: - move DECLARE_LIBBPF_OPTS from libbpf.h to bpf.h (patch 4); - switch new libbpf API to OPTS framework; - switch selftest to libbpf OPTS framework. This patch set adds support for replacing cgroup-bpf programs attached with BPF_F_ALLOW_MULTI flag so that any program in a list can be updated to a new version without service interruption and order of programs can be preserved. Please see patch 3 for details on the use-case and API changes. Other patches: Patch 1 is preliminary refactoring of __cgroup_bpf_attach to simplify it. Patch 2 is minor cleanup of hierarchy_allows_attach. Patch 4 moves DECLARE_LIBBPF_OPTS from libbpf.h to bpf.h Patch 5 extends libbpf API to support new set of attach attributes. Patch 6 adds selftest coverage for the new API. Andrey Ignatov (6): bpf: Simplify __cgroup_bpf_attach bpf: Remove unused new_flags in hierarchy_allows_attach() bpf: Support replacing cgroup-bpf program in MULTI mode libbpf: Make DECLARE_LIBBPF_OPTS available in bpf.h libbpf: Introduce bpf_prog_attach_xattr selftests/bpf: Cover BPF_F_REPLACE in test_cgroup_attach include/linux/bpf-cgroup.h | 4 +- include/uapi/linux/bpf.h | 10 ++ kernel/bpf/cgroup.c | 97 ++++++++++--------- kernel/bpf/syscall.c | 4 +- kernel/cgroup/cgroup.c | 5 +- tools/include/uapi/linux/bpf.h | 10 ++ tools/lib/bpf/bpf.c | 21 +++- tools/lib/bpf/bpf.h | 34 +++++++ tools/lib/bpf/libbpf.c | 1 - tools/lib/bpf/libbpf.h | 24 +---- tools/lib/bpf/libbpf.map | 2 + .../selftests/bpf/test_cgroup_attach.c | 62 +++++++++++- 12 files changed, 191 insertions(+), 83 deletions(-) -- 2.17.1