<br><br><div class="gmail_quote">On Thu, Apr 21, 2011 at 9:02 PM, Michael Blizek <span dir="ltr">&lt;<a href="mailto:michi1@michaelblizek.twilightparadox.com">michi1@michaelblizek.twilightparadox.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi!<br>
<br>
On 17:44 Thu 21 Apr     , Pankaj B wrote:<br>
...<br>
<div class="im">&gt; INIT_WORK(&amp;event-&gt;work, do_handling_work);<br>
&gt; schedule_work(&amp;event-&gt;work);<br>
&gt; flush_scheduled_work();<br>
&gt;<br>
&gt; But the work never gets scheduled. I have put some printks in the<br>
&gt; do_handling_work() function. Creating workqueue and queueing<br>
&gt; the work to that workqueue doen&#39;t work either. I find this a<br>
&gt; very strange problem. Does anybody knows about this?<br>
&gt;<br>
&gt; FYI: my system has heavy IO load when I schedule the work.<br>
<br>
</div>1) Why call flush_scheduled_work? This function will wait until<br>
do_handling_work is finished. You could just call do_handling_work directly...</blockquote><div><br></div><div>do_handling_work is to be called/scheduled from the interrupt context.</div><div>Actually I was not calling flush_scheduled_work() initially(it sleeps), I tried it because</div>
<div>work was not getting scheduled. I can not call do_handling_work() directly</div><div>because it sleeps. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"> </blockquote>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
2) If you have heavy IO load, it might will up the workqueues. It should not<br>
cause total starvation. But if (1) did not solve your problem, try reproducing<br>
it while the system is idle.<br></blockquote><div>Work get scheduled when the system is idle. </div><div><br></div><div>Somehow the work is getting scheduled now. I doubt another thread which was causing</div><div>system to become non-responsive for most of the time.</div>
<div><br></div><div>@Dave: I am using linux kernel 2.6.30.2</div><div><br></div><div>@Himanshu: Good point. I checked return value of schedule_work(), </div><div>I am getting non-zero value which is expected.</div><div><br>
</div><div>Thank you all.</div></div>