bpf: hash: use per-bucket spinlock
authortom.leiming@gmail.com <tom.leiming@gmail.com>
Tue, 29 Dec 2015 14:40:27 +0000 (22:40 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 29 Dec 2015 20:13:44 +0000 (15:13 -0500)
commit688ecfe60220516e8b6707c832ec02e92522dd85
tree78d96a346886b3797d563e598dac08e18898f16b
parent45d8390c56bd2851097736c1c20ad958880168df
bpf: hash: use per-bucket spinlock

Both htab_map_update_elem() and htab_map_delete_elem() can be
called from eBPF program, and they may be in kernel hot path,
so it isn't efficient to use a per-hashtable lock in this two
helpers.

The per-hashtable spinlock is used for protecting bucket's
hlist, and per-bucket lock is just enough. This patch converts
the per-hashtable lock into per-bucket spinlock, so that
contention can be decreased a lot.

Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
kernel/bpf/hashtab.c