[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>
- [Qemu-devel] [PATCH v2 00/12] block/json: Add JSON protocol driver, Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 01/12] qdict: Add qdict_join(), Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 02/12] check-qdict: Add test for qdict_join(), Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 03/12] block: Add "has_single_child" field for drivers, Max Reitz, 2014/03/07
- Re: [Qemu-devel] [PATCH v2 03/12] block: Add "has_single_child" field for drivers,
Benoît Canet <=
- [Qemu-devel] [PATCH v2 04/12] block/json: Add JSON protocol driver, Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 05/12] block/json: Add functions for cache control, Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 06/12] block/json: Add functions for writing zeroes etc., Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 07/12] block/json: Add bdrv_co_get_block_status(), Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 08/12] block/json: Add ioctl etc., Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 09/12] block/json: Add bdrv_get_specific_info(), Max Reitz, 2014/03/07
- [Qemu-devel] [PATCH v2 10/12] block/raw_bsd: Add bdrv_get_specific_info(), Max Reitz, 2014/03/07