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

Reply via email to