diff options
author | Julian Anastasov <ja@ssi.bg> | 2013-03-21 09:58:10 (GMT) |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-04-01 22:23:45 (GMT) |
commit | 088339a57d6042a8a19a3d5794594b558cd7b624 (patch) | |
tree | 835a3b82d7504f7f5670a7b130eedabf14d0ccc2 /net/netlabel | |
parent | 60b6aa3b319d902db49dbaee7433fe2ac7d0cdb5 (diff) | |
download | linux-fsl-qoriq-088339a57d6042a8a19a3d5794594b558cd7b624.tar.xz |
ipvs: convert connection locking
Convert __ip_vs_conntbl_lock_array as follows:
- readers that do not modify conn lists will use RCU lock
- updaters that modify lists will use spinlock_t
Now for conn lookups we will use RCU read-side
critical section. Without using __ip_vs_conn_get such
places have access to connection fields and can
dereference some pointers like pe and pe_data plus
the ability to update timer expiration. If full access
is required we contend for reference.
We add barrier in __ip_vs_conn_put, so that
other CPUs see the refcnt operation after other writes.
With the introduction of ip_vs_conn_unlink()
we try to reorganize ip_vs_conn_expire(), so that
unhashing of connections that should stay more time is
avoided, even if it is for very short time.
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off by: Hans Schillstrom <hans@schillstrom.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'net/netlabel')
0 files changed, 0 insertions, 0 deletions