Messages in this thread | | | Date | Wed, 30 Dec 2009 21:50:34 +0100 | Subject | Re: [PATCH] cfq-iosched: replace sync_flight by rq_in_driver[BLK_RW_SYNC] | From | Corrado Zoccolo <> |
| |
On Wed, Dec 30, 2009 at 7:47 PM, Jens Axboe <jens.axboe@oracle.com> wrote: > On Wed, Dec 30 2009, Corrado Zoccolo wrote: >> According to my intuition (and brief testing), sync_flight is always >> equal to rq_in_driver[BLK_RW_SYNC] at the point of usage, so it can >> be removed and replaced by the other. > > They are not fully identical. ->sync_flight is incremented on insertion > on the dispatch list, ->rq_in_driver not until the request is activated > (eg the driver has retrieved it and wants to dispatch to the hardware). Usually (only exceptions are forced dispatch, or when a conflict in the rb tree is found), a request is activated as soon as cfq returns from cfq_dispatch_requests.
> They will usually be identical, but that may not be true for requeues > for instance.
For our purpose, it is sufficient that in cfq_may_dispatch, they are either both 0 or both non-0. Since we have sync_flight >= rq_in_driver[1], the only question is: can the number of requests in the driver drop to 0 with requests still in flight?
I'm asking because to drain async requests, we are using the rq_in_driver counter instead. Maybe they need the same treatment.
Thanks Corrado
> > -- > Jens Axboe > >
| |