On Fri, Oct 02 2009, Mike Galbraith wrote: > On Fri, 2009-10-02 at 20:08 +0200, Jens Axboe wrote: > > On Thu, Oct 01 2009, Mike Galbraith wrote: > > > max_dispatch = cfqd->cfq_quantum; > > > if (cfq_class_idle(cfqq)) > > > max_dispatch = 1; > > > > > > + if (cfqd->busy_queues > 1) > > > + cfqd->od_stamp = jiffies; > > > + > > > > ->busy_queues > 1 just means that they have requests ready for dispatch, > > not that they are dispatched. > > But we're not alone, somebody else is using disk. I'm trying to make > sure we don't have someone _about_ to come back.. like a reader, so when > there's another player, stamp to give him some time to wake up/submit > before putting the pedal to the metal. OK, then the check does what you want. It'll tell you that you have a pending request, and at least one other queue has one too. And that could dispatch right after you finish yours, depending on idling etc. Note that this _only_ applies to queues that have requests still sitting in CFQ, as soon as they are on the dispatch list in the block layer they will only be counted as busy if they still have sorted IO waiting. But that should be OK already, since I switched CFQ to dispatch single requests a few revisions ago. So we should not run into that anymore. -- Jens Axboe -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel