qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Anthony Liguori <aliguori@us.ibm.com>
Subject: [Qemu-devel] [RFC PATCH 0/8] QED image streaming
Date: Wed, 27 Apr 2011 14:27:27 +0100	[thread overview]
Message-ID: <1303910855-28999-1-git-send-email-stefanha@linux.vnet.ibm.com> (raw)

This patch series adds image streaming support for QED image files.  Other
image formats can 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 contents of the backing file are written
to the unallocated regions of the image 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 it will
drop its reference.

Example invocation:

$ # my_fedora.qed is a tiny file initially but will be streamed when the guest starts
$ ./qemu-img create -f qed -o backing_file=fedora-14.img,copy_on_read=on,stream=on my_fedora.qed
Formatting 'my_fedora.qed', fmt=qed size=10737418240 backing_file='fedora-14.img' cluster_size=0 table_size=0 copy_on_read=on stream=on

$ # run the guest and stream fedora-14.img into my_fedora.qed
$ x86_64-softmmu/qemu-system-x86_64 -m 512 -enable-kvm -drive if=virtio,file=my_fedora.qed,cache=none

This patch series is structured as follows and is based on work that Adam
Litke, Anthony Liguori, and I have done:

[PATCH 1/8] block: add bdrv_aio_stream

  Introduce the .bdrv_aio_stream() BlockDriver interface.

[PATCH 2/8] qmp: Add QMP support for stream commands

  Introduce monitor commands to start/stop image streaming as well as querying
  the state of image streaming.

[PATCH 3/8] qed: add support for Copy-on-Read
[PATCH 4/8] qed: intelligent streaming implementation
[PATCH 5/8] qed: detect zero writes and skip them when to an unalloc

  Implement QED support for .bdrv_aio_stream().

[PATCH 6/8] blockdev: Allow image files to auto-enable streaming
[PATCH 7/8] qed: Add QED_CF_STREAM flag to auto-enable streaming
[PATCH 8/8] qed: Add -o stream=on image creation option

  Introduce a flag that auto-starts image streaming when the image file is opened.

TODO
 * Settle on monitor interfaces and libvirt interaction
 * Streaming background I/O throttling
 * Additional testing

             reply	other threads:[~2011-04-27 13:27 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-27 13:27 Stefan Hajnoczi [this message]
2011-04-27 13:27 ` [Qemu-devel] [PATCH 1/8] block: add bdrv_aio_stream Stefan Hajnoczi
2011-04-29 11:56   ` Kevin Wolf
2011-05-06 13:21     ` Stefan Hajnoczi
2011-05-06 13:36       ` Kevin Wolf
2011-05-06 15:47         ` Stefan Hajnoczi
2011-04-27 13:27 ` [Qemu-devel] [PATCH 2/8] qmp: Add QMP support for stream commands Stefan Hajnoczi
2011-04-29 12:09   ` Kevin Wolf
2011-05-06 13:23     ` Stefan Hajnoczi
2011-04-27 13:27 ` [Qemu-devel] [PATCH 3/8] qed: add support for Copy-on-Read Stefan Hajnoczi
2011-04-27 14:29   ` Paolo Bonzini
2011-04-29 12:14   ` Kevin Wolf
2011-05-06 13:24     ` Stefan Hajnoczi
2011-04-27 13:27 ` [Qemu-devel] [PATCH 4/8] qed: intelligent streaming implementation Stefan Hajnoczi
2011-04-27 13:27 ` [Qemu-devel] [PATCH 5/8] qed: detect zero writes and skip them when to an unalloc cluster Stefan Hajnoczi
2011-04-27 13:27 ` [Qemu-devel] [PATCH 6/8] blockdev: Allow image files to auto-enable streaming Stefan Hajnoczi
2011-04-29 12:20   ` Kevin Wolf
2011-04-27 13:27 ` [Qemu-devel] [PATCH 7/8] qed: Add QED_CF_STREAM flag " Stefan Hajnoczi
2011-04-27 13:27 ` [Qemu-devel] [PATCH 8/8] qed: Add -o stream=on image creation option Stefan Hajnoczi
2011-04-27 13:41 ` [Qemu-devel] [RFC PATCH 0/8] QED image streaming Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1303910855-28999-1-git-send-email-stefanha@linux.vnet.ibm.com \
    --to=stefanha@linux.vnet.ibm.com \
    --cc=aliguori@us.ibm.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).