bond: Tag flows according to their hash bucket, not just their slave.
authorBen Pfaff <blp@nicira.com>
Tue, 21 Aug 2012 20:51:01 +0000 (13:51 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 21 Aug 2012 20:51:01 +0000 (13:51 -0700)
commit00ed83143a0a2df95304926b4e8de3cdc9b89065
tree8b6a679c11a132e26931c7ba030a4082e2d36cc2
parent9ff262f43571b20999de65c55991bf9797d8431d
bond: Tag flows according to their hash bucket, not just their slave.

The bonding code is supposed to tag flows two ways:

    - According to the chosen bond slave, to make it easy to invalidate all
      of the flows assigned to a given slave.

    - According to the hash value for a flow, to make it easy to invalidate
      all of the flows that hash into the same bucket.

However, the code wasn't actually applying the hash-based tags.  This
meant that rebalancing didn't take effect immediately, and so after
rebalancing we could get log messages like this:

   inconsistency in subfacet (actions were: 5) (correct actions: 4)

specifying some flow that was moved by the rebalance.

This commit fixes the problem by applying the hash-based tags.

Bug #12847.
Reported-by: Pratap Reddy <preddy@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
AUTHORS
lib/bond.c