qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] block: Fix -incoming with snapshot=on


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH] block: Fix -incoming with snapshot=on
Date: Fri, 19 Feb 2016 17:12:25 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0


On 19/02/2016 16:52, Kevin Wolf wrote:
> The BDRV_O_INACTIVE flag should only be set for images explicitly opened
> by the user. snapshot=on needs to create a new qcow2 image and write
> some metadata to it. This is not a problem because it can't come from
> the source, so there's no reason to mark it as BDRV_O_INACTIVE, even
> though it is opened while waiting for the migration to complete.
> 
> This fixes an assertion failure when -incoming and snapshot=on are
> combined.
> 
> Signed-off-by: Kevin Wolf <address@hidden>

Does this also fix "migrate -b"?

Paolo

> ---
>  block.c                    |  4 ----
>  blockdev.c                 |  8 +++++++
>  tests/qemu-iotests/145     | 52 
> ++++++++++++++++++++++++++++++++++++++++++++++
>  tests/qemu-iotests/145.out |  5 +++++
>  tests/qemu-iotests/group   |  1 +
>  5 files changed, 66 insertions(+), 4 deletions(-)
>  create mode 100755 tests/qemu-iotests/145
>  create mode 100644 tests/qemu-iotests/145.out
> 
> diff --git a/block.c b/block.c
> index efc3c43..ba24b8e 100644
> --- a/block.c
> +++ b/block.c
> @@ -1191,10 +1191,6 @@ static int bdrv_fill_options(QDict **options, const 
> char *filename,
>          }
>      }
>  
> -    if (runstate_check(RUN_STATE_INMIGRATE)) {
> -        *flags |= BDRV_O_INACTIVE;
> -    }
> -
>      return 0;
>  }
>  
> diff --git a/blockdev.c b/blockdev.c
> index 1f73478..ed97d8a 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -610,6 +610,10 @@ static BlockBackend *blockdev_init(const char *file, 
> QDict *bs_opts,
>              qdict_put(bs_opts, BDRV_OPT_CACHE_NO_FLUSH, 
> qstring_from_str("on"));
>          }
>  
> +        if (runstate_check(RUN_STATE_INMIGRATE)) {
> +            bdrv_flags |= BDRV_O_INACTIVE;
> +        }
> +
>          blk = blk_new_open(qemu_opts_id(opts), file, NULL, bs_opts, 
> bdrv_flags,
>                             errp);
>          if (!blk) {
> @@ -688,6 +692,10 @@ static BlockDriverState *bds_tree_init(QDict *bs_opts, 
> Error **errp)
>          goto fail;
>      }
>  
> +    if (runstate_check(RUN_STATE_INMIGRATE)) {
> +        bdrv_flags |= BDRV_O_INACTIVE;
> +    }
> +
>      bs = NULL;
>      ret = bdrv_open(&bs, NULL, NULL, bs_opts, bdrv_flags, errp);
>      if (ret < 0) {
> diff --git a/tests/qemu-iotests/145 b/tests/qemu-iotests/145
> new file mode 100755
> index 0000000..7d8febb
> --- /dev/null
> +++ b/tests/qemu-iotests/145
> @@ -0,0 +1,52 @@
> +#!/bin/bash
> +#
> +# Test the combination of -incoming and snapshot=on
> +#
> +# Copyright (C) 2016 Red Hat, Inc.
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +#
> +
> +# creator
> address@hidden
> +
> +seq=`basename $0`
> +echo "QA output created by $seq"
> +
> +here=`pwd`
> +tmp=/tmp/$$
> +status=1     # failure is the default!
> +
> +_cleanup()
> +{
> +     _cleanup_test_img
> +     true
> +}
> +trap "_cleanup; exit \$status" 0 1 2 3 15
> +
> +# get standard environment, filters and checks
> +. ./common.rc
> +. ./common.filter
> +
> +_supported_fmt generic
> +_supported_proto generic
> +_supported_os Linux
> +
> +_make_test_img 1M
> +echo quit | $QEMU -nographic -hda "$TEST_IMG" -incoming 'exec:true' 
> -snapshot -serial none -monitor stdio | _filter_qemu
> +
> +# success, all done
> +echo "*** done"
> +rm -f $seq.full
> +status=0
> diff --git a/tests/qemu-iotests/145.out b/tests/qemu-iotests/145.out
> new file mode 100644
> index 0000000..75b5c8a
> --- /dev/null
> +++ b/tests/qemu-iotests/145.out
> @@ -0,0 +1,5 @@
> +QA output created by 145
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
> +QEMU X.Y.Z monitor - type 'help' for more information
> +(qemu) qququiquit
> +*** done
> diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
> index 65df029..47fd40c 100644
> --- a/tests/qemu-iotests/group
> +++ b/tests/qemu-iotests/group
> @@ -147,3 +147,4 @@
>  142 auto
>  143 auto quick
>  144 rw auto quick
> +145 auto quick
> 



reply via email to

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