[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [RFC PATCH 0/2] Enhance block status when crossing EOF
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-block] [RFC PATCH 0/2] Enhance block status when crossing EOF |
Date: |
Mon, 15 May 2017 13:54:43 +0100 |
User-agent: |
Mutt/1.8.0 (2017-02-23) |
On Thu, May 04, 2017 at 09:14:58PM -0500, Eric Blake wrote:
> As mentioned in my 'qcow2 zero-cluster tweaks' cover letter
> https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg00722.html
> I hit a case where we were not fully optimizing a write-zeroes
> operation when we have a backing file that is shorter than the
> active layer, and where the request crosses that boundary. I don't
> know that the situation will be all that common (most qcow2 files
> happen to be cluster-aligned in size; and most backing chains use
> the same length at each layer of the chain), but for RFC purposes,
> I wanted to explore how easy it would be to optimize the case
> anyways, and to see if we can think of any other cases where
> knowing that a block status crossed an end-of-file boundary can
> be exploited for less work.
>
> Thus, this is a followup to that series, but I'm also okay if we
> think it is too much maintenance compared to the potential gains,
> and decide to drop it after all.
>
> Another potential use that I thought of: we may someday want to
> track BDS length by bytes. Right now, bdrv_getlength() returns a
> value in bytes, but which is sector-aligned, by adding padding;
> but raw-format.c is able to see the transition between data up to
> EOF followed by a hole after EOF. Because of that, my series to
> convert bdrv_get_block_status() into a byte-based interface has to
> fudge things - any time we see a mid-sector hole being reported,
> we know it is because we hit EOF, and can round the result up to
> the next sector boundary. Having the BDRV_BLOCK_EOF flag set in
> that case may alert clients that the rounding took place, or help
> us when we quit doing the rounding and actually start tracking BDS
> lengths by bytes even where it is not sector-aligned.
>
> Eric Blake (2):
> block: Add BDRV_BLOCK_EOF to bdrv_get_block_status()
> block: Exploit BDRV_BLOCK_EOF for larger zero blocks
>
> include/block/block.h | 2 ++
> block/io.c | 42 +++++++++++++++++++++++++++++++++---------
> tests/qemu-iotests/154 | 4 ----
> tests/qemu-iotests/154.out | 12 ++++++------
> 4 files changed, 41 insertions(+), 19 deletions(-)
>
> --
> 2.9.3
>
>
Reviewed-by: Stefan Hajnoczi <address@hidden>
signature.asc
Description: PGP signature