On Mon, Dec 17, 2018 at 1:28 PM Dennis Zhou <dennis@xxxxxxxxxx> wrote: > > On Mon, Dec 17, 2018 at 11:42:28AM -0800, Liu Bo wrote: > > On Mon, Dec 17, 2018 at 8:04 AM Dennis Zhou <dennis@xxxxxxxxxx> wrote: > > > > > > The blk-iolatency controller measures the time from rq_qos_throttle() to > > > rq_qos_done_bio() and attributes this time to the first bio that needs > > > to create the request. This means if a bio is plug-mergeable or > > > bio-mergeable, it gets to bypass the blk-iolatency controller. > > > > > > > Hi, > > > > I have a question about merging in plug list, since plug merges are > > done before rq_qos_throttle(), why would plug-mergeable bios bypass > > the controller? > > > > thanks, > > liubo > > > > Hi Liubo, > > BIO_TRACKED is tagging the bio that is responsible for allocating a new > request, so that rq_qos controllers can decide whether or not they want > to process the bio any part of the way. I should have phrased that a > little better in the commit message. It's not that the bio itself is > bypassing the blk-iolatency controller, but the blk-iolatency controller > deciding to not do anything based on the BIO_TRACKED flag. This doesn't > change any of the function calls made on a bio/request. > Thanks for the explanation. I see it now, so the mentioned series had associated all bios with a blkg if possible so that done_bio() bumps up inflight counter even in case a bio has been merged in a previous request. BIO_TRACKED seems to be too generic to use, but otherwise it makes sense to me, Reviewed-by: Liu Bo <bo.liu@xxxxxxxxxxxxxxxxx> thanks, liubo > Thanks, > Dennis