On Wed, May 23, 2012 at 10:36 AM, Pravin B Shelar <pshe...@nicira.com> wrote: > 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. > > Signed-off-by: Pravin B Shelar <pshe...@nicira.com>
Can you add a note in the commit message about how we're planning on addressing this in the future? I got a whitespace error: Applying: datapath: Avoid system freeze due to ovs-flow-rehash softlockup. /home/jesse/openvswitch/.git/rebase-apply/patch:64: new blank line at EOF. + warning: 1 line adds whitespace errors. > diff --git a/datapath/linux/compat/include/linux/workqueue.h > b/datapath/linux/compat/include/linux/workqueue.h > index 919afe3..e5e2178 100644 > --- a/datapath/linux/compat/include/linux/workqueue.h > +++ b/datapath/linux/compat/include/linux/workqueue.h > @@ -68,6 +64,7 @@ int cancel_delayed_work_sync(struct delayed_work *dwork); > (_work)->func = (_func); \ > } while (0) > > -#endif /* kernel version < 2.6.23 */ > + > +extern void flush_scheduled_work(void); Is this declaration necessary? I didn't find any other references to it. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev