qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v3 0/7] Implement reference count for BlockDrive


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH v3 0/7] Implement reference count for BlockDriverState
Date: Thu, 1 Aug 2013 14:28:22 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Jul 31, 2013 at 06:13:53PM +0800, Fam Zheng wrote:
> BlockDriverState lifecycle management is needed by future features such as
> image fleecing and blockdev-add. This series adds reference count to
> BlockDriverState.
> 
> The first two patches clean up two odd BlockDriverState use cases, so all code
> uses bdrv_new() to create BlockDriverState instance.
> 
> Then implemented bdrv_ref() and bdrv_unref() to operate on refcnt: Initially,
> refcnt is 1, which means bdrv_unref is effectively a bdrv_delete() here. So
> patch 04 has a search and replace to convert bdrv_delete to bdrv_unref, before
> bdrv_ref is used anywhere. 05~08 patches calls bdrv_ref for device attach,
> block-migration and nbd.
> 
> The rule is: Either bdrv_ref() or bdrv_new() must have a matching
> bdrv_unref() call, and the last matching bdrv_unref deletes the bs.
> 
> v3:
>     03: Removed unnecessary bdrv_close() call.
> 
> v2:
>     05: Removed: "block: use BlockDriverState refcnt for device attach/detach"
>     07: Fix xen_disk blk_disconnect() as it depended on device attach refcnt.
> 
> Fam Zheng (7):
>   vvfat: use bdrv_new() to allocate BlockDriverState
>   iscsi: use bdrv_new() instead of stack structure
>   block: implement reference count for BlockDriverState
>   block: make bdrv_delete() static
>   migration: omit drive ref as we have bdrv_ref now
>   xen_disk: simplify blk_disconnect with refcnt
>   nbd: use BlockDriverState refcnt

Follow-up question:

Did you look at using bdrv_ref() for the BDS <- BlockJob relationship
too?

blockdev.c block job code still uses the DriveInfo refcount after your
series.  The BDS reference would be sufficient since the DriveInfo
fields are not used by block jobs.

Stefan



reply via email to

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