[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/2] block: resize backing image during active l
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH 2/2] block: resize backing image during active layer commit, if needed |
Date: |
Wed, 15 Jan 2014 13:58:29 +0800 |
User-agent: |
Mutt/1.5.22 (2013-10-16) |
On Mon, 01/13 15:18, Jeff Cody wrote:
> If the top image to commit is the active layer, and also larger than
> the base image, then an I/O error will likely be returned during
> block-commit.
>
> For instance, if we have a base image with a virtual size 10G, and a
> active layer image of size 20G, then committing the snapshot via
> 'block-commit' will likely fail.
>
> This will automatically attempt to resize the base image, if the
> active layer image to be committed is larger.
>
> Signed-off-by: Jeff Cody <address@hidden>
> ---
> block/mirror.c | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/block/mirror.c b/block/mirror.c
> index 2932bab..c4e42fa 100644
> --- a/block/mirror.c
> +++ b/block/mirror.c
> @@ -630,9 +630,22 @@ void commit_active_start(BlockDriverState *bs,
> BlockDriverState *base,
> BlockDriverCompletionFunc *cb,
> void *opaque, Error **errp)
> {
> + int64_t length;
> if (bdrv_reopen(base, bs->open_flags, errp)) {
> return;
> }
"base" is already reopened here.
> +
> + length = bdrv_getlength(bs);
> +
> + if (length > bdrv_getlength(base)) {
> + if (bdrv_truncate(base, length) < 0) {
> + error_setg(errp, "Top image %s is larger than base image %s, and
> "
> + "resize of base image failed.",
> + bs->filename, base->filename);
> + return;
Should we restore open flags for base?
Thanks,
Fam
> + }
> + }
> +
> bdrv_ref(base);
> mirror_start_job(bs, base, speed, 0, 0,
> on_error, on_error, cb, opaque, errp,
> --
> 1.8.3.1
>
- [Qemu-devel] [PATCH 0/2] block: commits of snapshots larger than backing files, Jeff Cody, 2014/01/13
- [Qemu-devel] [PATCH 1/2] block: resize backing file image during offline commit, if necessary, Jeff Cody, 2014/01/13
- [Qemu-devel] [PATCH 2/2] block: resize backing image during active layer commit, if needed, Jeff Cody, 2014/01/13
- Re: [Qemu-devel] [PATCH 2/2] block: resize backing image during active layer commit, if needed,
Fam Zheng <=
- Re: [Qemu-devel] [PATCH 0/2] block: commits of snapshots larger than backing files, Stefan Hajnoczi, 2014/01/17