On Mon, Aug 8, 2011 at 8:25 PM, Jonathan Neuschäfer <j.neuschaefer@xxxxxxx> wrote: > On Sat, Aug 06, 2011 at 12:31:21PM +0530, Rajat Sharma wrote: >> Hi All, >> >> What is the difference between io_schedule() and schedule(), is >> io_schedule() more restrictive to shedule only I/O bound processes or >> it just favours I/O bound processes. Any documentation link would be >> great help. > > Have you even looked at the source code? > > From kernel/sched.c +5721: > /* > * This task is about to go to sleep on IO. Increment rq->nr_iowait so > * that process accounting knows that this is a task in IO wait state. > */ > void __sched io_schedule(void) > { > struct rq *rq = raw_rq(); > > delayacct_blkio_start(); > atomic_inc(&rq->nr_iowait); > blk_flush_plug(current); > current->in_iowait = 1; > schedule(); > current->in_iowait = 0; > atomic_dec(&rq->nr_iowait); > delayacct_blkio_end(); > } > EXPORT_SYMBOL(io_schedule); > > HTH, > Jonathan Neuschäfer > of course I looked at the source (obvious first step) before asking question and further following tsk->in_iowait, it seems it is just needed for accounting purpose. if (tsk->in_iowait) { se->statistics.iowait_sum += delta; se->statistics.iowait_count++; trace_sched_stat_iowait(tsk, delta); } Wanted to be sure of "is that it all about"? or I am missing something here? -Rajat _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies