On 25.05.2016 14:29, 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 <kw...@redhat.com> > Reviewed-by: Eric Blake <ebl...@redhat.com> > Reviewed-by: Alberto Garcia <be...@igalia.com> > --- > block/mirror.c | 3 +++ > blockjob.c | 37 ++++++++++++++++++++----------------- > include/block/blockjob.h | 3 ++- > 3 files changed, 25 insertions(+), 18 deletions(-)
Reviewed-by: Max Reitz <mre...@redhat.com>
signature.asc
Description: OpenPGP digital signature