Julian Anastasov
9e4e948a3e
ipvs: avoid rcu_barrier during netns cleanup
...
commit 578bc3ef1e ("ipvs: reorganize dest trash") added
rcu_barrier() on cleanup to wait dest users and schedulers
like LBLC and LBLCR to put their last dest reference.
Using rcu_barrier with many namespaces is problematic.
Trying to fix it by freeing dest with kfree_rcu is not
a solution, RCU callbacks can run in parallel and execution
order is random.
Fix it by creating new function ip_vs_dest_put_and_free()
which is heavier than ip_vs_dest_put(). We will use it just
for schedulers like LBLC, LBLCR that can delay their dest
release.
By default, dests reference is above 0 if they are present in
service and it is 0 when deleted but still in trash list.
Change the dest trash code to use ip_vs_dest_put_and_free(),
so that refcnt -1 can be used for freeing. As result,
such checks remain in slow path and the rcu_barrier() from
netns cleanup can be removed.
Signed-off-by: Julian Anastasov <ja@ssi.bg >
Signed-off-by: Simon Horman <horms@verge.net.au >
2013-10-15 10:36:01 +09:00
..
2013-09-11 12:34:13 -07:00
2013-10-07 15:40:44 -04:00
2013-09-23 16:29:41 -04:00
2013-09-23 16:29:42 -04:00
2013-10-01 17:06:14 -04:00
2013-09-30 21:59:38 -07:00
2013-08-14 01:12:58 +02:00
2013-09-23 16:29:42 -04:00
2013-07-31 17:24:22 -07:00
2013-09-28 15:56:15 -04:00
2013-07-31 17:50:01 -07:00
2013-08-10 01:16:44 -07:00
2013-07-27 22:14:06 -07:00
2013-07-31 17:50:02 -07:00
2013-07-31 17:50:02 -07:00
2013-08-28 17:45:48 -04:00
2013-08-29 14:08:24 -04:00
2013-07-31 17:50:02 -07:00
2013-09-05 14:54:29 -07:00
2013-09-20 14:49:32 -04:00
2013-09-20 14:49:32 -04:00
2013-09-20 14:49:32 -04:00
2013-09-20 14:49:32 -04:00
2013-09-20 14:49:32 -04:00
2013-09-20 14:49:32 -04:00
2013-09-20 14:49:32 -04:00
2013-09-20 14:49:32 -04:00
2013-09-20 14:49:32 -04:00
2013-09-20 14:49:32 -04:00
2013-09-20 14:49:33 -04:00
2013-10-03 15:36:37 -04:00
2013-09-20 14:49:33 -04:00
2013-09-20 14:49:33 -04:00
2013-09-20 14:49:33 -04:00
2013-09-20 14:49:33 -04:00
2013-07-03 14:37:39 -07:00
2013-09-20 14:49:33 -04:00
2013-07-16 09:58:05 +03:00
2013-09-04 14:53:20 -04:00
2013-09-21 14:01:38 -04:00
2013-10-09 00:01:25 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-05-28 23:49:07 -07:00
2013-10-08 23:19:24 -04:00
2013-10-10 14:37:35 -04:00
2013-10-09 00:01:25 -04:00
2013-09-21 14:01:38 -04:00
2013-10-09 13:04:03 -04:00
2013-09-27 17:32:16 -04:00
2013-09-21 14:01:38 -04:00
2013-09-04 00:27:25 -04:00
2013-09-21 14:01:38 -04:00
2013-09-04 00:27:25 -04:00
2013-10-15 10:36:01 +09:00
2013-10-09 00:01:25 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:39 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-09-21 14:01:38 -04:00
2013-08-29 14:08:24 -04:00
2013-09-04 14:53:20 -04:00
2013-10-01 17:06:14 -04:00
2013-09-21 14:01:39 -04:00
2013-07-31 17:50:02 -07:00
2013-10-01 17:06:14 -04:00
2013-09-21 14:01:39 -04:00
2013-09-21 14:01:39 -04:00
2013-09-05 14:54:29 -07:00
2013-09-21 14:01:39 -04:00
2013-09-21 14:01:39 -04:00
2013-09-23 01:51:07 -04:00
2013-07-31 17:24:22 -07:00
2013-08-31 00:32:32 -04:00
2013-09-23 01:51:08 -04:00
2013-09-23 01:51:08 -04:00
2013-09-23 01:51:08 -04:00
2013-09-23 01:51:08 -04:00
2013-10-10 00:08:07 -04:00
2013-09-23 01:51:08 -04:00
2013-09-28 15:21:52 -07:00
2013-09-23 01:51:09 -04:00
2013-09-20 14:41:02 -04:00
2013-09-23 01:51:09 -04:00
2013-10-01 17:06:14 -04:00
2013-10-09 00:01:25 -04:00
2013-09-23 01:51:09 -04:00
2013-10-10 14:37:35 -04:00
2013-06-04 16:43:42 -07:00
2013-10-08 16:27:33 -04:00
2013-09-23 16:29:40 -04:00
2013-07-27 22:14:06 -07:00
2013-09-05 12:44:30 -04:00
2013-09-23 16:29:40 -04:00
2013-09-23 16:29:41 -04:00
2013-09-23 16:29:41 -04:00
2013-09-30 15:24:57 -04:00