[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v7 19/24] block: Add list of all Bl
From: |
Fam Zheng |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v7 19/24] block: Add list of all BlockDriverStates |
Date: |
Thu, 12 Nov 2015 15:12:06 +0800 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Mon, 11/09 23:39, Max Reitz wrote:
> We need this list so that bdrv_close_all() can keep track of which BDSs
> are still open after having removed the BDSs from all of the BBs and
> having released all monitor BDS references.
>
> Signed-off-by: Max Reitz <address@hidden>
> Reviewed-by: Kevin Wolf <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Is graph_bdrv_states becoming a subset of this list, just with non-empty
node_name?
> ---
> block.c | 7 +++++++
> include/block/block_int.h | 2 ++
> 2 files changed, 9 insertions(+)
>
> diff --git a/block.c b/block.c
> index b5874aa..b935dff 100644
> --- a/block.c
> +++ b/block.c
> @@ -78,6 +78,9 @@ struct BdrvStates bdrv_states =
> QTAILQ_HEAD_INITIALIZER(bdrv_states);
> static QTAILQ_HEAD(, BlockDriverState) graph_bdrv_states =
> QTAILQ_HEAD_INITIALIZER(graph_bdrv_states);
>
> +static QTAILQ_HEAD(, BlockDriverState) all_bdrv_states =
> + QTAILQ_HEAD_INITIALIZER(all_bdrv_states);
> +
> static QLIST_HEAD(, BlockDriver) bdrv_drivers =
> QLIST_HEAD_INITIALIZER(bdrv_drivers);
>
> @@ -266,6 +269,8 @@ BlockDriverState *bdrv_new(void)
> bs->refcnt = 1;
> bs->aio_context = qemu_get_aio_context();
>
> + QTAILQ_INSERT_TAIL(&all_bdrv_states, bs, bs_list);
> +
> return bs;
> }
>
> @@ -2128,6 +2133,8 @@ static void bdrv_delete(BlockDriverState *bs)
> /* remove from list, if necessary */
> bdrv_make_anon(bs);
>
> + QTAILQ_REMOVE(&all_bdrv_states, bs, bs_list);
> +
> g_free(bs);
> }
>
> diff --git a/include/block/block_int.h b/include/block/block_int.h
> index 617994d..8c82747 100644
> --- a/include/block/block_int.h
> +++ b/include/block/block_int.h
> @@ -422,6 +422,8 @@ struct BlockDriverState {
> QTAILQ_ENTRY(BlockDriverState) node_list;
> /* element of the list of "drives" the guest sees */
> QTAILQ_ENTRY(BlockDriverState) device_list;
> + /* element of the list of all BlockDriverStates (all_bdrv_states) */
> + QTAILQ_ENTRY(BlockDriverState) bs_list;
> QLIST_HEAD(, BdrvDirtyBitmap) dirty_bitmaps;
> int refcnt;
>
> --
> 2.6.2
>
>
- [Qemu-block] [PATCH v7 13/24] virtio-scsi: Catch BDS-BB removal/insertion, (continued)
- [Qemu-block] [PATCH v7 13/24] virtio-scsi: Catch BDS-BB removal/insertion, Max Reitz, 2015/11/09
- [Qemu-block] [PATCH v7 14/24] nbd: Switch from close to eject notifier, Max Reitz, 2015/11/09
- [Qemu-block] [PATCH v7 15/24] block: Remove BDS close notifier, Max Reitz, 2015/11/09
- [Qemu-block] [PATCH v7 16/24] block: Use blk_remove_bs() in blk_delete(), Max Reitz, 2015/11/09
- [Qemu-block] [PATCH v7 17/24] blockdev: Use blk_remove_bs() in do_drive_del(), Max Reitz, 2015/11/09
- [Qemu-block] [PATCH v7 18/24] block: Make bdrv_close() static, Max Reitz, 2015/11/09
- [Qemu-block] [PATCH v7 19/24] block: Add list of all BlockDriverStates, Max Reitz, 2015/11/09
- Re: [Qemu-block] [Qemu-devel] [PATCH v7 19/24] block: Add list of all BlockDriverStates,
Fam Zheng <=
- [Qemu-block] [PATCH v7 20/24] blockdev: Keep track of monitor-owned BDS, Max Reitz, 2015/11/09
- [Qemu-block] [PATCH v7 21/24] block: Add blk_remove_all_bs(), Max Reitz, 2015/11/09
- [Qemu-block] [PATCH v7 23/24] iotests: Add test for multiple BB on BDS tree, Max Reitz, 2015/11/09
- [Qemu-block] [PATCH v7 22/24] block: Rewrite bdrv_close_all(), Max Reitz, 2015/11/09
- [Qemu-block] [PATCH v7 24/24] iotests: Add test for block jobs and BDS ejection, Max Reitz, 2015/11/09