On 05/24/2016 07:47 AM, Kevin Wolf wrote: > This adds a new BlockBackend field to the BlockJob struct, which > coexists with the BlockDriverState while converting the individual jobs. > > When creating a block job, a new BlockBackend is created on top of the > given BlockDriverState, and it is destroyed when the BlockJob ends. The > reference to the BDS is now held by the BlockBackend instead of calling > bdrv_ref/unref manually. > > We have to be careful when we use bdrv_replace_in_backing_chain() in > block jobs because this changes the BDS that job->blk points to. At the > moment block jobs are too tightly coupled with their BDS, so that moving > a job to another BDS isn't easily possible; therefore, we need to just > manually undo this change afterwards. > > Signed-off-by: Kevin Wolf <[email protected]> > --- > block/mirror.c | 3 +++ > blockjob.c | 37 ++++++++++++++++++++----------------- > include/block/blockjob.h | 3 ++- > 3 files changed, 25 insertions(+), 18 deletions(-) >
Reviewed-by: Eric Blake <[email protected]> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
