if (!cfq_pending_requests(cfqd)) {
if (!cfqd->busy_queues) {
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)) {			cfq_mark_cfqq_must_dispatch(cfqq);			goto out_kick;		}	}expire:	cfq_slice_expired(cfqd, 0);out_kick:	cfq_schedule_dispatch(cfqd);out_cont:	spin_unlock_irqrestore(cfqd->queue->queue_lock, flags);}