datapath: Eliminate synchronize_rcu() in table swap.
authorBen Pfaff <blp@nicira.com>
Fri, 1 May 2009 17:20:21 +0000 (10:20 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 1 May 2009 17:20:38 +0000 (10:20 -0700)
commit08343b78a89a16c3ac387d64900d2dc390a74414
treee777ff8e0d90943ba6a28291c875d48d112de236
parent1369fd47d27e6a4e8b3d1470bd982409875161d0
datapath: Eliminate synchronize_rcu() in table swap.

We found out some time ago that synchronize_rcu() can block for multiple
seconds in some cases, so it's a good idea to eliminate as many of them
as we can.

This commit eliminates a call to synchronize_rcu() from functions that
expand or flush flow tables.  To avoid adding a member to dp_table that
specifies the "free_flows" argument to dp_table_destroy(), the commit
uses two different callback functions and manually inlines dp_table_swap()
into its callers.

Bug #1233.
datapath/datapath.h
datapath/table.c