qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 3/3] block: update block commit documentation


From: Fam Zheng
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
User-agent: Mutt/1.5.22 (2013-10-16)

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 <address@hidden>
> ---
>  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 <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]