qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-block] [PATCH] block/mirror: enable detect zeroes


From: Kevin Wolf
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH] block/mirror: enable detect zeroes when driving mirror
Date: Tue, 22 Nov 2016 11:09:15 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

Am 22.11.2016 um 04:45 hat wyang geschrieben:
> On 2016年11月21日 19:34, Kevin Wolf wrote:
> >Am 21.11.2016 um 02:24 hat Yang Wei geschrieben:
> >>In order to preserve sparse disk image, detect_zeroes
> >>should also be enabled when bdrv_get_block_status_above()
> >>returns BDRV_BLOCK_DATA
> >>
> >>Signed-off-by: Yang Wei <address@hidden>
> >Just preserving sparseness is exactly why bdrv_get_block_status_above()
> >is checked, and this happens always.
> 
> I have a sparse qcow2 image(virtual size: 20G disk size: 12G),
> # qemu-img info 20G.img
> image: 20G.img
> file format: qcow2
> virtual size: 20G (21474836480 bytes)
> disk size: 12G
> cluster_size: 65536
> Format specific information:
>     compat: 1.1
>     lazy refcounts: false
>     refcount bits: 16
>     corrupt: false
> 
> and  I tried to qemu-img map --output json xxxx.img, as you can see,
> the field of data always is true.

Did you use metadata preallocation? If so, you explicitly requested all
clusters to be allocated.

> >detect_zeroes does not preserve sparseness, but detect zeroes in parts
> >of the source image that are not sparse, and make them sparse in the
> >target image. This means that it has higher overhead (because all
> >sectors need to be processed before copying them) and doesn't result in
> >an exact copy. There may be cases where this is wanted, but in the
> >common case, it's probably not the right mode of operation.
> To be frank, customers are more concerned about sparseness than overhead.

All generalisations are wrong.

We could be talking about the majority of users (the QEMU project
doesn't have customers), but even then I doubt you're right, especially
when using preallocation which is a tool for giving up sparseness in
favour of improved performance of the first write to a cluster.

> >If you really want to detect zeroes, create the target block driver node
> >manually (with detect-zeroes=on) and use the blockdev-mirror QMP command
> >to mirror to it.
> the target block is created by **bdrv_img_create** and opened by
> **bdrv_open** inside qmp_drive_mirror, it also mean than we only
> enable detect-zeroes while
> its opened, i don't find qmp cmd to only enable it, if I understand
> correctly.

That's why I said you use blockdev-mirror instead drive-mirror.

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]