qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 7/7] block: Add backing_blocker in BlockDriverSt


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH 7/7] block: Add backing_blocker in BlockDriverState
Date: Fri, 23 May 2014 14:46:31 +0200
User-agent: Mutt/1.5.23 (2014-03-12)

On Fri, May 23, 2014 at 11:23:23AM +0800, Fam Zheng wrote:
> This makes use of op_blocker and blocks all the operations except for
> commit target, on each BlockDriverState->backing_hd.
> 
> The asserts for op_blocker in bdrv_swap are removed because with this
> change, the target of block commit has at least the backing blocker of
> its child, so the assertion is not true. Callers should do their check.
> 
> Signed-off-by: Fam Zheng <address@hidden>
> ---
>  block.c                   | 22 ++++++++++++++++++----
>  block/mirror.c            |  2 +-
>  include/block/block_int.h |  3 +++
>  3 files changed, 22 insertions(+), 5 deletions(-)
> 
> diff --git a/block.c b/block.c
> index 91c866c..b5aeca2 100644
> --- a/block.c
> +++ b/block.c
> @@ -1097,14 +1097,29 @@ fail:
>  void bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd)
>  {
>  
> +    if (bs->backing_hd) {
> +        assert(bs->backing_blocker);
> +        bdrv_op_unblock_all(bs->backing_hd, bs->backing_blocker);
> +    } else if (backing_hd) {
> +        error_setg(&bs->backing_blocker,
> +                   "device is used as backing hd of '%s'",
> +                   bs->device_name);
> +    }
> +
>      bs->backing_hd = backing_hd;
>      if (!backing_hd) {
> +        error_free(bs->backing_blocker);

bs->backing_block = NULL;

...to make the assert(bs->backing_blocker) above more useful.



reply via email to

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