]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commitfb9dde8d92f03b8d6651caec1fd00f9ed7ab5fbf
tree78d96a346886b3797d563e598dac08e18898f16b
parent243f586920a86a04afe4d821cc310094f7dce102
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