On Wed, Dec 11, 2019 at 2:34 PM Brian Vazquez <brianvv@xxxxxxxxxx> wrote: > > This patch series introduce batch ops that can be added to bpf maps to > lookup/lookup_and_delete/update/delete more than 1 element at the time, > this is specially useful when syscall overhead is a problem and in case > of hmap it will provide a reliable way of traversing them. > > The implementation inclues a generic approach that could potentially be > used by any bpf map and adds it to arraymap, it also includes the specific > implementation of hashmaps which are traversed using buckets instead > of keys. > > The bpf syscall subcommands introduced are: > > BPF_MAP_LOOKUP_BATCH > BPF_MAP_LOOKUP_AND_DELETE_BATCH > BPF_MAP_UPDATE_BATCH > BPF_MAP_DELETE_BATCH > > The UAPI attribute is: > > struct { /* struct used by BPF_MAP_*_BATCH commands */ > __aligned_u64 in_batch; /* start batch, > * NULL to start from beginning > */ > __aligned_u64 out_batch; /* output: next start batch */ > __aligned_u64 keys; > __aligned_u64 values; > __u32 count; /* input/output: > * input: # of key/value > * elements > * output: # of filled elements > */ > __u32 map_fd; > __u64 elem_flags; > __u64 flags; > } batch; > > > in_batch and out_batch are only used for lookup and lookup_and_delete since > those are the only two operations that attempt to traverse the map. > > update/delete batch ops should provide the keys/values that user wants > to modify. > > Here are the previous discussions on the batch processing: > - https://lore.kernel.org/bpf/20190724165803.87470-1-brianvv@xxxxxxxxxx/ > - https://lore.kernel.org/bpf/20190829064502.2750303-1-yhs@xxxxxx/ > - https://lore.kernel.org/bpf/20190906225434.3635421-1-yhs@xxxxxx/ > > Changelog sinve v2: > - Add generic batch support for lpm_trie and test it (Yonghong Song) > - Use define MAP_LOOKUP_RETRIES for retries (John Fastabend) > - Return errors directly and remove labels (Yonghong Song) > - Insert new API functions into libbpf alphabetically (Yonghong Song) > - Change hlist_nulls_for_each_entry_rcu to > hlist_nulls_for_each_entry_safe in htab batch ops (Yonghong Song) Yonghong, please review.