Messages in this thread | | | From | Jeff Moyer <> | Subject | Re: [PATCH 2/4] block: Implement a blk_yield function to voluntarily give up the I/O scheduler. | Date | Thu, 15 Apr 2010 11:49:22 -0400 |
| |
Jens Axboe <jens.axboe@oracle.com> writes:
> On Wed, Apr 14 2010, Vivek Goyal wrote:
>> > @@ -1887,6 +1891,9 @@ static void cfq_dispatch_insert(struct request_queue *q, struct request *rq) >> > >> > cfqd->rq_in_flight[cfq_cfqq_sync(cfqq)]++; >> > cfqq->nr_sectors += blk_rq_sectors(rq); >> > + >> > + if (cfq_cfqq_yield(cfqq) && RB_EMPTY_ROOT(&cfqq->sort_list)) >> > + cfq_yield_cfqq(cfqd, cfqq); >> >> Jeff, >> >> I am wondering if cfq_select_queue() will be a better place for yielding >> the queue. >> >> if (cfq_cfqq_yield(cfqq) && RB_EMPTY_ROOT(&cfqq->sort_list)) >> goto expire; >> >> We can avoid one unnecessary __blk_run_queue(). > > Agree, doing it on insert is not the right place.
I see where you're coming from, but that makes things quite a bit trickier. I look forward to the review of *that* patch. ;-)
Cheers, Jeff
| |