On 03/14/2016 09:44 AM, Kevin Wolf wrote:
> Ever since we first introduced bdrv_append() in commit 8802d1fd ('qapi:
> Introduce blockdev-group-snapshot-sync command'), the copy-on-read flag
> was moved to the new top layer when taking a snapshot. The only problem
> is that it doesn't make a whole lot of sense.
>
> The use case for manually enabled CoR is to avoid reading data twice
> from a slow remote image, so we want to save it to a local overlay, say
> an ISO image accessed via HTTP to a local qcow2 overlay. When taking a
> snapshot, we end up with a backing chain like this:
>
> http <- local.qcow2 <- snap_overlay.qcow2
>
> There is no point in doing CoR from local.qcow2 into snap_overlay.qcow2,
> we just want to keep copying data from the remote source into
> local.qcow2.
>
> The other use case of CoR is in the context of streaming, which isn't
> very interesting for bdrv_move_feature_fields() because op blockers
> prevent this combination.Your arguments make sense. > > This patch makes the copy-on-read flag stay on the image for which it > was originally set and prevents it from being propagated to the new > overlay. It is no longer intended to move CoR to the BlockBackend level. > In order for this to make sense, we also need to keep the respective > image read-write. > > As a side effect of these changes, creating a live snapshot image (as > opposed to using an existing externally created one) on top of a COR > block device works now. It used to fail because it tried to open its > backing file both read-only and with COR. > > Signed-off-by: Kevin Wolf <[email protected]> > --- > block.c | 2 -- > blockdev.c | 7 +++++-- > 2 files changed, 5 insertions(+), 4 deletions(-) Reviewed-by: Eric Blake <[email protected]> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
