[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 04/20] stream: Switch stream_run() to byte-ba
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH v3 04/20] stream: Switch stream_run() to byte-based |
Date: |
Tue, 4 Jul 2017 17:00:57 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 27.06.2017 um 21:24 hat Eric Blake geschrieben:
> We are gradually converting to byte-based interfaces, as they are
> easier to reason about than sector-based. Change the internal
> loop iteration of streaming to track by bytes instead of sectors
> (although we are still guaranteed that we iterate by steps that
> are sector-aligned).
>
> Signed-off-by: Eric Blake <address@hidden>
> Reviewed-by: John Snow <address@hidden>
>
> ---
> v2: no change
> ---
> block/stream.c | 24 ++++++++++--------------
> 1 file changed, 10 insertions(+), 14 deletions(-)
>
> diff --git a/block/stream.c b/block/stream.c
> index 746d525..2f9618b 100644
> --- a/block/stream.c
> +++ b/block/stream.c
> @@ -108,12 +108,11 @@ static void coroutine_fn stream_run(void *opaque)
> BlockBackend *blk = s->common.blk;
> BlockDriverState *bs = blk_bs(blk);
> BlockDriverState *base = s->base;
> - int64_t sector_num = 0;
> - int64_t end = -1;
Here, end was initialised to -1. This made a differnce for early 'goto
out' paths because otherwise data->reached_end would incorrectly be true
in stream_complete.
Because we also check data->ret, I think the only case where it actually
makes a difference is for the !bs->backing case: This used to result in
data->reached_end == false, but now it ends up as true. This is because
s->common.len hasn't been set yet, so it is still 0.
Kevin
- Re: [Qemu-devel] [PATCH v3 04/20] stream: Switch stream_run() to byte-based,
Kevin Wolf <=