bond: Use correct type for slave's change_seq.
authorJarno Rajahalme <jarno@ovn.org>
Fri, 4 Dec 2015 18:19:07 +0000 (10:19 -0800)
committerJarno Rajahalme <jarno@ovn.org>
Fri, 4 Dec 2015 18:19:07 +0000 (10:19 -0800)
seq values are 64-bit, and storing them to a 32-bit variable causes
the stored value never to match actual seq value after the seq value
gets big enough.

This is a likely cause of OVS main thread using 100% CPU in a system
using bonds after some runtime.

VMware-BZ: #1564993
Reported-by: Hiram Bayless <hbayless@vmware.com>
Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
Acked-by: Joe Stringer <joe@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
ofproto/bond.c

index 1dbf8f1..c2749e5 100644 (file)
@@ -84,7 +84,7 @@ struct bond_slave {
     void *aux;                  /* Client-provided handle for this slave. */
 
     struct netdev *netdev;      /* Network device, owned by the client. */
-    unsigned int change_seq;    /* Tracks changes in 'netdev'. */
+    uint64_t change_seq;        /* Tracks changes in 'netdev'. */
     ofp_port_t  ofp_port;       /* OpenFlow port number. */
     char *name;                 /* Name (a copy of netdev_get_name(netdev)). */