bpf: Bloom filter map naming fixups
This patch has two changes in the kernel bloom filter map implementation: 1) Change the names of map-ops functions to include the "bloom_map" prefix. As Martin pointed out on a previous patchset, having generic map-ops names may be confusing in tracing and in perf-report. 2) Drop the "& 0xF" when getting nr_hash_funcs, since we already ascertain that no other bits in map_extra beyond the first 4 bits can be set. Signed-off-by: Joanne Koong <joannekoong@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Yonghong Song <yhs@fb.com> Link: https://lore.kernel.org/bpf/20211029224909.1721024-2-joannekoong@fb.com
This commit is contained in:
committed by
Alexei Starovoitov
parent
f27a6fad14
commit
6fdc348006
@@ -40,7 +40,7 @@ static u32 hash(struct bpf_bloom_filter *bloom, void *value,
|
|||||||
return h & bloom->bitset_mask;
|
return h & bloom->bitset_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int peek_elem(struct bpf_map *map, void *value)
|
static int bloom_map_peek_elem(struct bpf_map *map, void *value)
|
||||||
{
|
{
|
||||||
struct bpf_bloom_filter *bloom =
|
struct bpf_bloom_filter *bloom =
|
||||||
container_of(map, struct bpf_bloom_filter, map);
|
container_of(map, struct bpf_bloom_filter, map);
|
||||||
@@ -55,7 +55,7 @@ static int peek_elem(struct bpf_map *map, void *value)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int push_elem(struct bpf_map *map, void *value, u64 flags)
|
static int bloom_map_push_elem(struct bpf_map *map, void *value, u64 flags)
|
||||||
{
|
{
|
||||||
struct bpf_bloom_filter *bloom =
|
struct bpf_bloom_filter *bloom =
|
||||||
container_of(map, struct bpf_bloom_filter, map);
|
container_of(map, struct bpf_bloom_filter, map);
|
||||||
@@ -72,12 +72,12 @@ static int push_elem(struct bpf_map *map, void *value, u64 flags)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pop_elem(struct bpf_map *map, void *value)
|
static int bloom_map_pop_elem(struct bpf_map *map, void *value)
|
||||||
{
|
{
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct bpf_map *map_alloc(union bpf_attr *attr)
|
static struct bpf_map *bloom_map_alloc(union bpf_attr *attr)
|
||||||
{
|
{
|
||||||
u32 bitset_bytes, bitset_mask, nr_hash_funcs, nr_bits;
|
u32 bitset_bytes, bitset_mask, nr_hash_funcs, nr_bits;
|
||||||
int numa_node = bpf_map_attr_numa_node(attr);
|
int numa_node = bpf_map_attr_numa_node(attr);
|
||||||
@@ -90,11 +90,13 @@ static struct bpf_map *map_alloc(union bpf_attr *attr)
|
|||||||
attr->max_entries == 0 ||
|
attr->max_entries == 0 ||
|
||||||
attr->map_flags & ~BLOOM_CREATE_FLAG_MASK ||
|
attr->map_flags & ~BLOOM_CREATE_FLAG_MASK ||
|
||||||
!bpf_map_flags_access_ok(attr->map_flags) ||
|
!bpf_map_flags_access_ok(attr->map_flags) ||
|
||||||
|
/* The lower 4 bits of map_extra (0xF) specify the number
|
||||||
|
* of hash functions
|
||||||
|
*/
|
||||||
(attr->map_extra & ~0xF))
|
(attr->map_extra & ~0xF))
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
/* The lower 4 bits of map_extra specify the number of hash functions */
|
nr_hash_funcs = attr->map_extra;
|
||||||
nr_hash_funcs = attr->map_extra & 0xF;
|
|
||||||
if (nr_hash_funcs == 0)
|
if (nr_hash_funcs == 0)
|
||||||
/* Default to using 5 hash functions if unspecified */
|
/* Default to using 5 hash functions if unspecified */
|
||||||
nr_hash_funcs = 5;
|
nr_hash_funcs = 5;
|
||||||
@@ -150,7 +152,7 @@ static struct bpf_map *map_alloc(union bpf_attr *attr)
|
|||||||
return &bloom->map;
|
return &bloom->map;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void map_free(struct bpf_map *map)
|
static void bloom_map_free(struct bpf_map *map)
|
||||||
{
|
{
|
||||||
struct bpf_bloom_filter *bloom =
|
struct bpf_bloom_filter *bloom =
|
||||||
container_of(map, struct bpf_bloom_filter, map);
|
container_of(map, struct bpf_bloom_filter, map);
|
||||||
@@ -158,38 +160,39 @@ static void map_free(struct bpf_map *map)
|
|||||||
bpf_map_area_free(bloom);
|
bpf_map_area_free(bloom);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *lookup_elem(struct bpf_map *map, void *key)
|
static void *bloom_map_lookup_elem(struct bpf_map *map, void *key)
|
||||||
{
|
{
|
||||||
/* The eBPF program should use map_peek_elem instead */
|
/* The eBPF program should use map_peek_elem instead */
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int update_elem(struct bpf_map *map, void *key,
|
static int bloom_map_update_elem(struct bpf_map *map, void *key,
|
||||||
void *value, u64 flags)
|
void *value, u64 flags)
|
||||||
{
|
{
|
||||||
/* The eBPF program should use map_push_elem instead */
|
/* The eBPF program should use map_push_elem instead */
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int check_btf(const struct bpf_map *map, const struct btf *btf,
|
static int bloom_map_check_btf(const struct bpf_map *map,
|
||||||
const struct btf_type *key_type,
|
const struct btf *btf,
|
||||||
const struct btf_type *value_type)
|
const struct btf_type *key_type,
|
||||||
|
const struct btf_type *value_type)
|
||||||
{
|
{
|
||||||
/* Bloom filter maps are keyless */
|
/* Bloom filter maps are keyless */
|
||||||
return btf_type_is_void(key_type) ? 0 : -EINVAL;
|
return btf_type_is_void(key_type) ? 0 : -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bpf_bloom_btf_id;
|
static int bpf_bloom_map_btf_id;
|
||||||
const struct bpf_map_ops bloom_filter_map_ops = {
|
const struct bpf_map_ops bloom_filter_map_ops = {
|
||||||
.map_meta_equal = bpf_map_meta_equal,
|
.map_meta_equal = bpf_map_meta_equal,
|
||||||
.map_alloc = map_alloc,
|
.map_alloc = bloom_map_alloc,
|
||||||
.map_free = map_free,
|
.map_free = bloom_map_free,
|
||||||
.map_push_elem = push_elem,
|
.map_push_elem = bloom_map_push_elem,
|
||||||
.map_peek_elem = peek_elem,
|
.map_peek_elem = bloom_map_peek_elem,
|
||||||
.map_pop_elem = pop_elem,
|
.map_pop_elem = bloom_map_pop_elem,
|
||||||
.map_lookup_elem = lookup_elem,
|
.map_lookup_elem = bloom_map_lookup_elem,
|
||||||
.map_update_elem = update_elem,
|
.map_update_elem = bloom_map_update_elem,
|
||||||
.map_check_btf = check_btf,
|
.map_check_btf = bloom_map_check_btf,
|
||||||
.map_btf_name = "bpf_bloom_filter",
|
.map_btf_name = "bpf_bloom_filter",
|
||||||
.map_btf_id = &bpf_bloom_btf_id,
|
.map_btf_id = &bpf_bloom_map_btf_id,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user