From mboxrd@z Thu Jan 1 00:00:00 1970 From: hschauhan@nulltrace.org (Himanshu Chauhan) Date: Thu, 21 Apr 2011 22:12:22 +0530 Subject: work_struct not getting scheduled In-Reply-To: References: Message-ID: To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org On Thu, Apr 21, 2011 at 9:29 PM, Dave Hylands wrote: > Hi Pankaj, > > On Thu, Apr 21, 2011 at 5:14 AM, Pankaj B 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. 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.) For more read: http://lwn.net/Articles/197318/ This might help you. Regards Himanshu