qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Fam Zheng <famz@redhat.com>
To: Jeff Cody <jcody@redhat.com>
Cc: kwolf@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 3/3] block: update block commit documentation regarding image truncation
Date: Wed, 22 Jan 2014 10:03:16 +0800	[thread overview]
Message-ID: <20140122020316.GF24604@T430.redhat.com> (raw)
In-Reply-To: <3dddeafeb7301de9cb3649cff023de74d28d1bab.1390321064.git.jcody@redhat.com>

On Tue, 01/21 11:31, Jeff Cody wrote:
> This updates the documentation for commiting snapshot images.
> Specifically, this highlights what happens when the base image
> is either smaller or larger than the snapshot image being committed.
> 
> In the case of the base image being smaller, it is resized to the
> larger size of the snapshot image.  In the case of the base image
> being larger, it is not resized automatically, but once the commit
> has completed it is safe for the user to truncate the base image.
> 
> Signed-off-by: Jeff Cody <jcody@redhat.com>
> ---
>  hmp-commands.hx  |  5 +++++
>  qapi-schema.json |  7 +++++++
>  qemu-img.texi    |  7 ++++++-
>  qmp-commands.hx  | 39 +++++++++++++++++++++++++++++++++++++++
>  4 files changed, 57 insertions(+), 1 deletion(-)
> 
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index feca084..f3fc514 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -35,6 +35,11 @@ STEXI
>  @item commit
>  @findex commit
>  Commit changes to the disk images (if -snapshot is used) or backing files.
> +If the backing file is smaller than the snapshot, then the backing file will be
> +resized to be the same size as the snapshot.  If the snapshot is smaller than
> +the backing file, the backing file will not be truncated.  If you want the
> +backing file to match the size of the smaller snapshot, you can safely truncate
> +it yourself once the commit operation successfully completes.
>  ETEXI
>  
>      {
> diff --git a/qapi-schema.json b/qapi-schema.json
> index f27c48a..1f83099 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -1973,6 +1973,13 @@
>  #                    user needs to complete the job with the block-job-complete
>  #                    command after getting the ready event. (Since 2.0)
>  #
> +#                    If the base image is smaller than top, then the base image
> +#                    will be resized to be the same size as top.  If top is
> +#                    smaller than the base image, the base  will not be
> +#                    truncated.  If you want the base image size to match the
> +#                    size of the smaller top, you can safely truncate it
> +#                    yourself once the commit operation successfully completes.
> +#
>  #
>  # @speed:  #optional the maximum speed, in bytes per second
>  #
> diff --git a/qemu-img.texi b/qemu-img.texi
> index 1bba91e..22556df 100644
> --- a/qemu-img.texi
> +++ b/qemu-img.texi
> @@ -140,7 +140,12 @@ it doesn't need to be specified separately in this case.
>  
>  @item commit [-f @var{fmt}] [-t @var{cache}] @var{filename}
>  
> -Commit the changes recorded in @var{filename} in its base image.
> +Commit the changes recorded in @var{filename} in its base image or backing file.
> +If the backing file is smaller than the snapshot, then the backing file will be
> +resized to be the same size as the snapshot.  If the snapshot is smaller than
> +the backing file, the backing file will not be truncated.  If you want the
> +backing file to match the size of the smaller snapshot, you can safely truncate
> +it yourself once the commit operation successfully completes.
>  
>  @item compare [-f @var{fmt}] [-F @var{fmt}] [-p] [-s] [-q] @var{filename1} @var{filename2}
>  
> diff --git a/qmp-commands.hx b/qmp-commands.hx
> index 02cc815..848f81c 100644
> --- a/qmp-commands.hx
> +++ b/qmp-commands.hx
> @@ -965,6 +965,45 @@ EQMP
>          .mhandler.cmd_new = qmp_marshal_input_block_commit,
>      },
>  
> +SQMP
> +block-commit
> +------------
> +
> +Live commit of data from overlay image nodes into backing nodes - i.e., writes
> +data between 'top' and 'base' into 'base'.
> +
> +Arguments:
> +
> +- "device": The device's ID, must be unique (json-string)
> +- "base": The file name of the backing image to write data into.
> +          If not specified, this is the deepest backing image
> +          (json-string, optional)
> +- "top":  The file name of the backing image within the image chain,
> +          which contains the topmost data to be committed down.
> +
> +          If top == base, that is an error.
> +          If top == active, the job will not be completed by itself,
> +          user needs to complete the job with the block-job-complete
> +          command after getting the ready event. (Since 2.0)
> +
> +          If the base image is smaller than top, then the base image
> +          will be resized to be the same size as top.  If top is
> +          smaller than the base image, the base  will not be
> +          truncated.  If you want the base image size to match the
> +          size of the smaller top, you can safely truncate it
> +          yourself once the commit operation successfully completes.
> +          (json-string)
> +- "speed":  the maximum speed, in bytes per second (json-int, optional)
> +
> +
> +Example:
> +
> +-> { "execute": "block-commit", "arguments": { "device": "virtio0",
> +                                              "top": "/tmp/snap1.qcow2" } }
> +<- { "return": {} }
> +
> +EQMP
> +
>      {
>          .name       = "drive-backup",
>          .args_type  = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
> -- 
> 1.8.3.1
> 

Reviewed-by: Fam Zheng <famz@redhat.com>

      parent reply	other threads:[~2014-01-22  2:03 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-21 16:31 [Qemu-devel] [PATCH v2 0/3] block: commits of snapshots larger than backing files Jeff Cody
2014-01-21 16:31 ` [Qemu-devel] [PATCH v2 1/3] block: resize backing file image during offline commit, if necessary Jeff Cody
2014-01-21 16:41   ` Eric Blake
2014-01-22  1:58   ` Fam Zheng
2014-01-21 16:31 ` [Qemu-devel] [PATCH v2 2/3] block: resize backing image during active layer commit, if needed Jeff Cody
2014-01-21 17:00   ` Eric Blake
2014-01-22  1:54   ` Fam Zheng
2014-01-22  4:28     ` Jeff Cody
2014-01-21 16:31 ` [Qemu-devel] [PATCH v2 3/3] block: update block commit documentation regarding image truncation Jeff Cody
2014-01-21 16:37   ` Eric Blake
2014-01-22  2:03   ` Fam Zheng [this message]

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=20140122020316.GF24604@T430.redhat.com \
    --to=famz@redhat.com \
    --cc=jcody@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /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).