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 <kw...@redhat.com> > --- > block.c | 2 -- > blockdev.c | 7 +++++-- > 2 files changed, 5 insertions(+), 4 deletions(-) Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature