On Tue, May 23, 2023 at 5:45 PM JP Kobryn <inwardvessel@xxxxxxxxx> wrote: > > Due to the way the datasec maps like bss, data, rodata are memory > mapped, they cannot be resized with bpf_map__set_value_size() like > non-datasec maps can. This series offers a way to allow the resizing of > datasec maps, by having the mapped regions resized as needed and also > adjusting associated BTF info if possible. > > The thought behind this is to allow for use cases where a given datasec > needs to scale to for example the number of CPU's present. A bpf program > can have a global array in a data section with an initial length and > before loading the bpf program, the array length could be extended to > match the CPU count. The selftests included in this series perform this > scaling to an arbitrary value to demonstrate how it can work. > > JP Kobryn (2): > add capability for resizing datasec maps > selftests for resizing datasec maps > > tools/lib/bpf/libbpf.c | 130 ++++++++++ > tools/lib/bpf/libbpf.h | 17 +- > .../bpf/prog_tests/global_map_resize.c | 236 ++++++++++++++++++ > .../bpf/progs/test_global_map_resize.c | 58 +++++ > 4 files changed, 440 insertions(+), 1 deletion(-) > create mode 100644 tools/testing/selftests/bpf/prog_tests/global_map_resize.c > create mode 100644 tools/testing/selftests/bpf/progs/test_global_map_resize.c > > -- > 2.40.0 > Thanks, it's a great feature! I did some formatting and cosmetic adjustments before applying. I also rolled into the first patch a change to make bpf_map__initial_value() return non-const pointer, as const pointer doesn't make much sense (this is backwards compatible change). Applied to bpf-next, thanks!