Re: [PATCH 3/6] workqueue: make cancel_rearming_delayed_workqueue() work on idle dwork

2007-02-08 Thread Oleg Nesterov
On 02/08, Andrew Morton wrote: > > On Thu, 8 Feb 2007 11:35:39 +0300 Oleg Nesterov <[EMAIL PROTECTED]> wrote: > > > Andrew, do you think it is worth to tweak delayed works so it would be > > possible to use flush_work(dwork->work) ? > > > > I've completely lost track of what you've been doing in

Re: [PATCH 3/6] workqueue: make cancel_rearming_delayed_workqueue() work on idle dwork

2007-02-08 Thread Andrew Morton
On Thu, 8 Feb 2007 11:35:39 +0300 Oleg Nesterov <[EMAIL PROTECTED]> wrote: > On 02/08, Horms wrote: > > > > On Wed, Feb 07, 2007 at 08:43:55PM +0300, Oleg Nesterov wrote: > > > > > > I think we have another problem with delayed_works. > > > > > > cancel_rearming_delayed_workqueue() doesn't garan

Re: [PATCH 3/6] workqueue: make cancel_rearming_delayed_workqueue() work on idle dwork

2007-02-08 Thread Oleg Nesterov
On 02/08, Horms wrote: > > On Wed, Feb 07, 2007 at 08:43:55PM +0300, Oleg Nesterov wrote: > > > > I think we have another problem with delayed_works. > > > > cancel_rearming_delayed_workqueue() doesn't garantee that the ->func() is > > not > > running upon return. I don't know if it is bug or no

Re: [PATCH 3/6] workqueue: make cancel_rearming_delayed_workqueue() work on idle dwork

2007-02-07 Thread Horms
On Wed, Feb 07, 2007 at 08:43:55PM +0300, Oleg Nesterov wrote: > On 02/07, Oleg Nesterov wrote: > > > > The following code > > > > schedule_delayed_work(dw); > > cancel_rearming_delayed_workqueue(dw); // OK > > cancel_rearming_delayed_workqueue(dw); // HANGS! > > > > still doesn't

Re: [PATCH 3/6] workqueue: make cancel_rearming_delayed_workqueue() work on idle dwork

2007-02-07 Thread Oleg Nesterov
On 02/07, Oleg Nesterov wrote: > > The following code > > schedule_delayed_work(dw); > cancel_rearming_delayed_workqueue(dw); // OK > cancel_rearming_delayed_workqueue(dw); // HANGS! > > still doesn't work. I think we have another problem with delayed_works. cancel_rearming

Re: [PATCH 3/6] workqueue: make cancel_rearming_delayed_workqueue() work on idle dwork

2007-02-07 Thread Oleg Nesterov
On 02/07, Daniel Drake wrote: > > Oleg Nesterov wrote: > >cancel_rearming_delayed_workqueue(dwork) will hang forever if dwork was not > >scheduled, because in that case cancel_delayed_work()->del_timer_sync() > >never > >returns true. > > Thanks! We hit this problem before with the zd1211rw drive

Re: [PATCH 3/6] workqueue: make cancel_rearming_delayed_workqueue() work on idle dwork

2007-02-07 Thread Daniel Drake
Oleg Nesterov wrote: cancel_rearming_delayed_workqueue(dwork) will hang forever if dwork was not scheduled, because in that case cancel_delayed_work()->del_timer_sync() never returns true. Thanks! We hit this problem before with the zd1211rw driver and avoided using cancel_rearming_delayed_wor

[PATCH 3/6] workqueue: make cancel_rearming_delayed_workqueue() work on idle dwork

2007-02-06 Thread Oleg Nesterov
cancel_rearming_delayed_workqueue(dwork) will hang forever if dwork was not scheduled, because in that case cancel_delayed_work()->del_timer_sync() never returns true. I don't know if there are any callers which may have problems, but this is not so convenient, and the fix is very simple. Q: look