[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [RFC] block-backend: fix double inc/dec inflight reques
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-block] [RFC] block-backend: fix double inc/dec inflight requests number |
Date: |
Mon, 29 Jan 2018 16:30:17 +0100 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
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