On Tue, Oct 15, 2013 at 11:01:46AM +0900, Simon Horman wrote: > From: Julian Anastasov <ja@xxxxxx> > > commit 578bc3ef1e473a ("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. I can enqueue this fix to nf if you like. No need to resend, I can manually apply. Let me know. -- To unsubscribe from this list: send the line "unsubscribe lvs-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html