work_struct not getting scheduled

Himanshu Chauhan hschauhan at nulltrace.org
Thu Apr 21 12:42:22 EDT 2011


On Thu, Apr 21, 2011 at 9:29 PM, Dave Hylands <dhylands at gmail.com> wrote:
> Hi Pankaj,
>
> On Thu, Apr 21, 2011 at 5:14 AM, Pankaj B <xpankajbx at gmail.com> wrote:
>> Hi,
>> At my end I was using tasklets to do some handling. But while
>> doing the handling the handler had to sleep, so I had to switch to
>>  workqueues. I am scheduling a work as follows:
>> INIT_WORK(&event->work, do_handling_work);
>> 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.

<snip from lwn>
It turned out these functions were used in ~800 places, and in ~90% of
them the return value was ignored! This is perhaps understandble, because
the only way these functions can fail is if their work_struct argument is
uninitialized or already in use. (Whether it's robust for callers to
depend on this behavior remaining unchanged into the indefinite future is
more questionable.)
</snip from lwn>

For more read:
http://lwn.net/Articles/197318/

This might help you.

Regards
Himanshu



More information about the Kernelnewbies mailing list