mbox series

[v3,bpf-next,0/3] bpf: Relax the max_entries check for inner map

Message ID 20200828011800.1970018-1-kafai@fb.com
Headers show
Series bpf: Relax the max_entries check for inner map | expand

Message

Martin KaFai Lau Aug. 28, 2020, 1:18 a.m. UTC
v3:
- Add map_meta_equal to bpf_map_ops and use it as an explict
  opt-in support for map-in-map
  
v2:
- New BPF_MAP_TYPE_FL to minimize code churns (Alexei)
- s/capabilities/properties/ (Andrii)
- Describe WHY in commit log (Andrii)

People has a use case that starts with a smaller inner map first and then
replaces it with a larger inner map later when it is needed.

This series allows the outer map to be updated with inner map in different
size as long as it is safe (meaning the max_entries is not used in the
verification time during prog load).

Please see individual patch for details.

Martin KaFai Lau (3):
  bpf: Add map_meta_equal map ops
  bpf: Relax max_entries check for most of the inner map types
  bpf: selftests: Add test for different inner map size

 include/linux/bpf.h                           | 16 +++++++++
 kernel/bpf/arraymap.c                         | 16 +++++++++
 kernel/bpf/bpf_inode_storage.c                |  1 +
 kernel/bpf/cpumap.c                           |  1 +
 kernel/bpf/devmap.c                           |  2 ++
 kernel/bpf/hashtab.c                          |  4 +++
 kernel/bpf/lpm_trie.c                         |  1 +
 kernel/bpf/map_in_map.c                       | 24 +++++--------
 kernel/bpf/map_in_map.h                       |  2 --
 kernel/bpf/queue_stack_maps.c                 |  2 ++
 kernel/bpf/reuseport_array.c                  |  1 +
 kernel/bpf/ringbuf.c                          |  1 +
 kernel/bpf/stackmap.c                         |  1 +
 kernel/bpf/syscall.c                          |  1 +
 net/core/bpf_sk_storage.c                     |  1 +
 net/core/sock_map.c                           |  2 ++
 net/xdp/xskmap.c                              |  8 +++++
 .../selftests/bpf/prog_tests/btf_map_in_map.c | 35 ++++++++++++++++++-
 .../selftests/bpf/progs/test_btf_map_in_map.c | 31 ++++++++++++++++
 19 files changed, 132 insertions(+), 18 deletions(-)

Comments

Daniel Borkmann Aug. 28, 2020, 3:27 p.m. UTC | #1
On 8/28/20 3:18 AM, Martin KaFai Lau wrote:
> v3:
> - Add map_meta_equal to bpf_map_ops and use it as an explict
>    opt-in support for map-in-map
>    
> v2:
> - New BPF_MAP_TYPE_FL to minimize code churns (Alexei)
> - s/capabilities/properties/ (Andrii)
> - Describe WHY in commit log (Andrii)
> 
> People has a use case that starts with a smaller inner map first and then
> replaces it with a larger inner map later when it is needed.
> 
> This series allows the outer map to be updated with inner map in different
> size as long as it is safe (meaning the max_entries is not used in the
> verification time during prog load).
> 
> Please see individual patch for details.
> 
> Martin KaFai Lau (3):
>    bpf: Add map_meta_equal map ops
>    bpf: Relax max_entries check for most of the inner map types
>    bpf: selftests: Add test for different inner map size
> 
>   include/linux/bpf.h                           | 16 +++++++++
>   kernel/bpf/arraymap.c                         | 16 +++++++++
>   kernel/bpf/bpf_inode_storage.c                |  1 +
>   kernel/bpf/cpumap.c                           |  1 +
>   kernel/bpf/devmap.c                           |  2 ++
>   kernel/bpf/hashtab.c                          |  4 +++
>   kernel/bpf/lpm_trie.c                         |  1 +
>   kernel/bpf/map_in_map.c                       | 24 +++++--------
>   kernel/bpf/map_in_map.h                       |  2 --
>   kernel/bpf/queue_stack_maps.c                 |  2 ++
>   kernel/bpf/reuseport_array.c                  |  1 +
>   kernel/bpf/ringbuf.c                          |  1 +
>   kernel/bpf/stackmap.c                         |  1 +
>   kernel/bpf/syscall.c                          |  1 +
>   net/core/bpf_sk_storage.c                     |  1 +
>   net/core/sock_map.c                           |  2 ++
>   net/xdp/xskmap.c                              |  8 +++++
>   .../selftests/bpf/prog_tests/btf_map_in_map.c | 35 ++++++++++++++++++-
>   .../selftests/bpf/progs/test_btf_map_in_map.c | 31 ++++++++++++++++
>   19 files changed, 132 insertions(+), 18 deletions(-)

Looks good to me, applied thanks!