[ovs-git] Open vSwitch: datapath: Avoid system freeze due to ovs-flow-rehash softlockup. (master)

dev at openvswitch.org dev at openvswitch.org
Thu May 24 00:28:42 UTC 2012

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Open vSwitch".

The branch, master has been updated
       via  ee5f04b7c29897d96b06ebb119ee131ea84183ec (commit)
      from  8319bc815a8d5fa375a28c94dde208f2dec68c42 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit ee5f04b7c29897d96b06ebb119ee131ea84183ec
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=ee5f04b7c29897d96b06ebb119ee131ea84183ec
Author: Pravin B Shelar <pshelar at nicira.com>
datapath: Avoid system freeze due to ovs-flow-rehash softlockup.
OVS datapath does periodic flow table rehash which takes genl_lock
in workq context.
In some cases, like ports add or delete, genl_lock can cause softlockup
as vswitchd would take and succeed with genl_lock and rehash workq
would block on the lock. Eventually rehash will proceed, flow rehash
is low priority task so this is not problem for rehashing.
But it is blocking workq thread; some other workq item from other
kernel subsystem would be blocked and can cause system freeze.
To avoid workq blocking and system freeze, we can use OVS compat workq.
It runs in separate kernel thread thus does not block any non-ovs
deferred workq work item.

We will fix it by making genetlink lockless and having fine granular
locking in OVS.

Signed-off-by: Pravin B Shelar <pshelar at nicira.com>
Acked-by: Jesse Gross <jesse at nicira.com>


Summary of changes:
 datapath/linux/compat/include/linux/workqueue.h |   12 ++++--------
 datapath/linux/compat/workqueue.c               |    3 ---
 2 files changed, 4 insertions(+), 11 deletions(-)

Open vSwitch

More information about the git mailing list