On Thu, Apr 21, 2011 at 9:29 PM, Dave Hylands <dhylands@gmail.com> wrote:
Hi Pankaj,
On Thu, Apr 21, 2011 at 5:14 AM, Pankaj B <xpankajbx@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