On Thu, Apr 21, 2011 at 9:02 PM, Michael Blizek <michi1@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
Hi!
On 17:44 Thu 21 Apr , Pankaj B wrote:
...
> INIT_WORK(&event->work, do_handling_work);1) Why call flush_scheduled_work? This function will wait until
> schedule_work(&event->work);
> flush_scheduled_work();
>
> But the work never gets scheduled. I have put some printks in the
> do_handling_work() function. Creating workqueue and queueing
> the work to that workqueue doen't work either. I find this a
> very strange problem. Does anybody knows about this?
>
> FYI: my system has heavy IO load when I schedule the work.
do_handling_work is finished. You could just call do_handling_work directly...
do_handling_work is to be called/scheduled from the interrupt context.
Actually I was not calling flush_scheduled_work() initially(it sleeps), I tried it because
work was not getting scheduled. I can not call do_handling_work() directly
because it sleeps.
2) If you have heavy IO load, it might will up the workqueues. It should not
cause total starvation. But if (1) did not solve your problem, try reproducing
it while the system is idle.
Work get scheduled when the system is idle.
Somehow the work is getting scheduled now. I doubt another thread which was causing
system to become non-responsive for most of the time.
@Dave: I am using linux kernel 2.6.30.2
@Himanshu: Good point. I checked return value of schedule_work(),
I am getting non-zero value which is expected.
Thank you all.
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies