Am 25.01.2018 um 12:37 hat Stefan Hajnoczi geschrieben:
> On Mon, Jan 22, 2018 at 05:45:49PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> > Is it a bug or a feature? Why do we call inc/dec twice for read/write?
> > We don't do this for flush and discard..
>
> It's non-obvious and I asked Paolo the same question previously.
>
> > - bdrv_inc_in_flight(bs);
> > -
> > /* throttling disk I/O */
> > if (blk->public.throttle_group_member.throttle_state) {
> >
> > throttle_group_co_io_limits_intercept(&blk->public.throttle_group_member,
> > bytes, false);
> > }
>
> ^^^ HINT HINT HINT ^^^
>
> >
> > - ret = bdrv_co_preadv(blk->root, offset, bytes, qiov, flags);
> > - bdrv_dec_in_flight(bs);
> > - return ret;
> > + return bdrv_co_preadv(blk->root, offset, bytes, qiov, flags);
>
> The problem is what happens if the request is throttled?
>
> Even throttled requests must be counted so that bdrv_drain() and friends
> work.
>
> It may be possible to eliminate this now that throttling is a BDS node.
> It used to be implemented as a completely separate API outside the BDS
> node graph. Now there is a throttling node in the graph, so maybe we
> can stop taking the extra reference but some refactoring may be
> necessary.The patches to use a throttling node even when the legacy options are used have not been merged yet. Kevin
signature.asc
Description: PGP signature
