[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Image streaming and live block copy (was: [PATCH 00/13] QED
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] Image streaming and live block copy (was: [PATCH 00/13] QED image streaming) |
Date: |
Thu, 16 Jun 2011 14:35:37 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc15 Thunderbird/3.1.10 |
Am 14.06.2011 20:18, schrieb Stefan Hajnoczi:
> Overview
> --------
>
> This patch series adds image streaming support for QED image files. Other
> image formats can also be supported in the future.
>
> Image streaming populates the file in the background while the guest is
> running. This makes it possible to start the guest before its image file has
> been fully provisioned.
>
> Example use cases include:
> * Providing small virtual appliances for download that can be launched
> immediately but provision themselves in the background.
> * Reducing guest provisioning time by creating local image files but backing
> them with shared master images which will be streamed.
>
> When image streaming is enabled, the unallocated regions of the image file are
> populated with the data from the backing file. This occurs in the background
> and the guest can perform regular I/O in the meantime. Once the entire
> backing
> file has been streamed, the image no longer requires a backing file and will
> drop its reference
Long CC list and Kevin wearing his upstream hat - this might be an
unpleasant email. :-)
So yesterday I had separate discussions with Stefan about image
streaming and Marcelo, Avi and some other folks about live block copy.
The conclusion was in both cases that, yes, both things are pretty
similar and, yes, the current implementation don't reflect that but
duplicate everything.
To summarise what both things are about:
* Image streaming is a normal image file plus copy-on-read plus a
background task that copies data from the source image
* Live block copy is a block-mirror of two normal image files plus a
background task that copies data from the source image
The right solution is probably to implement COR and the background task
in generic block layer code (no reason to restrict it to QED) and use it
for both image streaming and live block copy. (This is a bit more
complicated than it may sound here because guest writes must always take
precedence over a copy - but doing complicated things is an even better
reason to do it in a common place instead of duplicating)
People seem to agree on this, and the reason that I've heard why we
should merge the existing code instead is downstream time pressure. That
may be a valid reason for downstreams to add such code, but is taking
such code really the best option for upstream (and therefore long-term
for downstreams)?
If we take these patches as they are, I doubt that we'll ever get a
rewrite to implement the code as it should have been done in the first
place.
So I'm tempted to reject the current versions of both the image
streaming and live block copy series and leave it to downstreams to use
these as temporary solutions if the time pressure is too high. I know
that maintaining things downstream is painful, but that's the whole
point: I want to see the real implementation one day, and I'm afraid
this might be the only way to get it.
Kevin
- [Qemu-devel] [PATCH 05/13] qed: make qed_aio_write_alloc() reusable, (continued)
- [Qemu-devel] [PATCH 05/13] qed: make qed_aio_write_alloc() reusable, Stefan Hajnoczi, 2011/06/14
- [Qemu-devel] [PATCH 12/13] qed: intelligent streaming implementation, Stefan Hajnoczi, 2011/06/14
- [Qemu-devel] [PATCH 08/13] qerror: add qerror_from_args() to create qerror objects, Stefan Hajnoczi, 2011/06/14
- [Qemu-devel] [PATCH 10/13] qmp: add QMP support for stream commands, Stefan Hajnoczi, 2011/06/14
- [Qemu-devel] [PATCH 11/13] block: add -drive stream=on|off, Stefan Hajnoczi, 2011/06/14
- [Qemu-devel] [PATCH 03/13] qed: replace is_write with flags field, Stefan Hajnoczi, 2011/06/14
- [Qemu-devel] [PATCH 01/13] qemu-config: }, { -> }, { to please checkpatch.pl, Stefan Hajnoczi, 2011/06/14
- [Qemu-devel] [PATCH 02/13] block: add -drive copy-on-read=on|off, Stefan Hajnoczi, 2011/06/14
- Re: [Qemu-devel] [PATCH 00/13] QED image streaming, Philipp Hahn, 2011/06/15
- [Qemu-devel] Image streaming and live block copy (was: [PATCH 00/13] QED image streaming),
Kevin Wolf <=
- Re: [Qemu-devel] Image streaming and live block copy, Anthony Liguori, 2011/06/16
- Re: [Qemu-devel] Image streaming and live block copy, Avi Kivity, 2011/06/16
- Re: [Qemu-devel] Image streaming and live block copy, Kevin Wolf, 2011/06/16
- Re: [Qemu-devel] Image streaming and live block copy, Avi Kivity, 2011/06/16
- Re: [Qemu-devel] Image streaming and live block copy, Marcelo Tosatti, 2011/06/16
- Re: [Qemu-devel] Image streaming and live block copy, Stefan Hajnoczi, 2011/06/16
- Re: [Qemu-devel] Image streaming and live block copy, Marcelo Tosatti, 2011/06/17
- Re: [Qemu-devel] Image streaming and live block copy, Marcelo Tosatti, 2011/06/17
- Re: [Qemu-devel] Image streaming and live block copy, Stefan Hajnoczi, 2011/06/18