Re: work_struct not getting scheduled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





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);
> 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.

1) Why call flush_scheduled_work? This function will wait until
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

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux