if (cfq_pending_requests(cfqd)) kblockd_schedule_work(&cfqd->unplug_work); 
cfq_schedule_dispatch(cfqd); 
static void cfq_idle_slice_timer(unsigned long data){	struct cfq_data *cfqd = (struct cfq_data *) data;	struct cfq_queue *cfqq;	unsigned long flags;	spin_lock_irqsave(cfqd->queue->queue_lock, flags);	if ((cfqq = cfqd->active_queue) != NULL) {		unsigned long now = jiffies;		/*		 * expired		 */		if (time_after(now, cfqq->slice_end))			goto expire;		/*		 * only expire and reinvoke request handler, if there are		 * other queues with pending requests		 */		if (!cfq_pending_requests(cfqd)) {			cfqd->idle_slice_timer.expires = min(now + cfqd->cfq_slice_idle, cfqq->slice_end);			add_timer(&cfqd->idle_slice_timer);			goto out_cont;		}		/*		 * not expired and it has a request pending, let it dispatch		 */		if (!RB_EMPTY(&cfqq->sort_list)) {			cfqq->must_dispatch = 1;			goto out_kick;		}	}expire:	cfq_slice_expired(cfqd, 0);out_kick:	if (cfq_pending_requests(cfqd))		kblockd_schedule_work(&cfqd->unplug_work);out_cont:	spin_unlock_irqrestore(cfqd->queue->queue_lock, flags);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3b18152c327707ae6a2eeba4cfb66457143753bc/cfq-iosched.c/clean/drivers/block/cfq-iosched.c