qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 03/12] block: Add "has_single_child" field fo


From: Benoît Canet
Subject: Re: [Qemu-devel] [PATCH v2 03/12] block: Add "has_single_child" field for drivers
Date: Sun, 9 Mar 2014 13:15:24 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

The Friday 07 Mar 2014 à 23:55:47 (+0100), Max Reitz wrote :
> This field should be used by block drivers acting as filters which have
> only a single child BDS which is referenced through the "file" field of
> the BDS.
> 
> Setting this field allows other block functions to "access" the child
> BDS, for instance in bdrv_recurse_is_first_non_filter(). Therefore, it
> should not be set if the block layer should not have access to the child
> through the filter.
> 
> Signed-off-by: Max Reitz <address@hidden>
> ---
>  block.c                   | 4 ++++
>  include/block/block_int.h | 7 +++++++
>  2 files changed, 11 insertions(+)
> 
> diff --git a/block.c b/block.c
> index 06fbc0a..aec325f 100644
> --- a/block.c
> +++ b/block.c
> @@ -5418,6 +5418,10 @@ bool bdrv_recurse_is_first_non_filter(BlockDriverState 
> *bs,
>          return bs->drv->bdrv_recurse_is_first_non_filter(bs, candidate);
>      }
>  
> +    if (bs->drv->has_single_child) {
> +        return bdrv_recurse_is_first_non_filter(bs->file, candidate);
> +    }
> +
>      /* the driver is a block filter but don't allow to recurse -> return 
> false
>       */
>      return false;
> diff --git a/include/block/block_int.h b/include/block/block_int.h
> index 4fc5ea8..7815587 100644
> --- a/include/block/block_int.h
> +++ b/include/block/block_int.h
> @@ -78,6 +78,13 @@ struct BlockDriver {
>  
>      /* set to true if the BlockDriver is a block filter */
>      bool is_filter;
> +    /* Set to true if the BlockDriver is a filter with a single child 
> referenced
> +     * through the "file" field in the BDS. This allows the block layer to
> +     * access that child through the filter (e.g., for
> +     * bdrv_recurse_is_first_non_filter()); if this is not desired, set it to
> +     * false (the "file" field should not have been used in this case anyway,
> +     * though). */
> +    bool has_single_child;
>      /* for snapshots block filter like Quorum can implement the
>       * following recursive callback.
>       * It's purpose is to recurse on the filter children while calling
> -- 
> 1.9.0
> 
> 
Reviewed-by: Benoit Canet <address@hidden>



reply via email to

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