]> git.baikalelectronics.ru Git - kernel.git/commit
tipc: convert node lock to rwlock
authorJon Paul Maloy <jon.maloy@ericsson.com>
Thu, 19 Nov 2015 19:30:44 +0000 (14:30 -0500)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Nov 2015 19:06:10 +0000 (14:06 -0500)
commit7652bc74efe5551d1a72a84ab523d802676e5a13
tree226f40f32f063d27a8d9a6abe6708d550721f1fd
parent8ca6836d994443955cbcec673d073b910ebc580e
tipc: convert node lock to rwlock

According to the node FSM a node in state SELF_UP_PEER_UP cannot
change state inside a lock context, except when a TUNNEL_PROTOCOL
(SYNCH or FAILOVER) packet arrives. However, the node's individual
links may still change state.

Since each link now is protected by its own spinlock, we finally have
the conditions in place to convert the node spinlock to an rwlock_t.
If the node state and arriving packet type are rigth, we can let the
link directly receive the packet under protection of its own spinlock
and the node lock in read mode. In all other cases we use the node
lock in write mode. This enables full concurrent execution between
parallel links during steady-state traffic situations, i.e., 99+ %
of the time.

This commit implements this change.

Reviewed-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/link.c
net/tipc/node.c
net/tipc/node.h