datapath: Eliminate synchronize_rcu() in port group update.
authorBen Pfaff <blp@nicira.com>
Fri, 1 May 2009 17:20:35 +0000 (10:20 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 1 May 2009 17:20:35 +0000 (10:20 -0700)
commit1369fd47d27e6a4e8b3d1470bd982409875161d0
tree73b1d4a40cf409e58e4bf9a9c853f01913278668
parent15749c8937da54b0b73e9c13ab026ff888e84bd0
datapath: Eliminate synchronize_rcu() in port group update.

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 removes such a call in set_port_group().  This requires adding an
rcu_head to the data structure for port groups; since until now we've just
used the same "struct odp_port_group" exported to userspace, this means
that we need to introduce a new "struct dp_port_group" for internal use,
which in turn causes a fair bit of code motion.

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