genl: Allow concurrent genl callbacks.
authorPravin B Shelar <pshelar@nicira.com>
Tue, 23 Apr 2013 07:48:30 +0000 (07:48 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 25 Apr 2013 05:43:15 +0000 (01:43 -0400)
commitdef3117493eafd9dfa1f809d861e0031b2cc8a07
tree93edfbb60f9d57d37d5643062cf3d41befc18579
parent133b94245c54bb2d8832bfb15975b931bc00d914
genl: Allow concurrent genl callbacks.

All genl callbacks are serialized by genl-mutex. This can become
bottleneck in multi threaded case.
Following patch adds an parameter to genl_family so that a
particular family can get concurrent netlink callback without
genl_lock held.
New rw-sem is used to protect genl callback from genl family unregister.
in case of parallel_ops genl-family read-lock is taken for callbacks and
write lock is taken for register or unregistration for any family.
In case of locked genl family semaphore and gel-mutex is locked for
any openration.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/genetlink.h
net/netlink/genetlink.c