aboutsummaryrefslogtreecommitdiffstats
path: root/net/openvswitch/vport-netdev.h
diff options
context:
space:
mode:
authorJesse Gross <jesse@nicira.com>2012-11-28 17:01:52 -0500
committerJesse Gross <jesse@nicira.com>2012-11-28 17:04:34 -0500
commit92eb1d477145b2e7780b5002e856f70b8c3d74da (patch)
treedd9856ff7feb1dd9b10485c31c26fe4fa4d344c4 /net/openvswitch/vport-netdev.h
parent39c7caebc94e851f58b84b54659156dd30522e8e (diff)
openvswitch: Use RCU callback when detaching netdevices.
Currently, each time a device is detached from an OVS datapath we call synchronize RCU before freeing associated data structures. However, if a bridge is deleted (which detaches all ports) when many devices are connected then there can be a long delay. This switches to use call_rcu() to group the cost together. Reported-by: Justin Pettit <jpettit@nicira.com> Signed-off-by: Jesse Gross <jesse@nicira.com>
Diffstat (limited to 'net/openvswitch/vport-netdev.h')
-rw-r--r--net/openvswitch/vport-netdev.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/openvswitch/vport-netdev.h b/net/openvswitch/vport-netdev.h
index f7072a25c604..6478079b3417 100644
--- a/net/openvswitch/vport-netdev.h
+++ b/net/openvswitch/vport-netdev.h
@@ -20,12 +20,15 @@
20#define VPORT_NETDEV_H 1 20#define VPORT_NETDEV_H 1
21 21
22#include <linux/netdevice.h> 22#include <linux/netdevice.h>
23#include <linux/rcupdate.h>
23 24
24#include "vport.h" 25#include "vport.h"
25 26
26struct vport *ovs_netdev_get_vport(struct net_device *dev); 27struct vport *ovs_netdev_get_vport(struct net_device *dev);
27 28
28struct netdev_vport { 29struct netdev_vport {
30 struct rcu_head rcu;
31
29 struct net_device *dev; 32 struct net_device *dev;
30}; 33};
31 34