On Mon, Jan 07, 2019 at 14:35:08 +0100, Ján Tomko wrote: > On Wed, Dec 12, 2018 at 06:08:34PM +0100, Peter Krempa wrote: > > Rather than direclty modifying fields in the qemuBlockJobDataPtr > > directly > > > structure add a bunch of fields which allow to do the transitions. > > > > This will help later when adding more complexity to the job handing. > > handling > > > > > APIs introduced in this patch are: > > > > qemuBlockJobDiskNew - prepare for starting a new blockjob on a disk > > qemuBlockJobDiskGetJob - get the block job data structure for a disk > > > > For individual job state manipulation the following APIs are added: > > qemuBlockJobStarted - Sets the job as started with qemu. Until that > > the job can be cancelled without asking qemu. > > > > qemuBlockJobStartupFinalize - finalize job startup. If the job was > > started in qemu already, just releases > > reference to the job object. Otherwise > > clears everything as if the job was never > > started. > > > > Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> > > --- > > src/qemu/qemu_blockjob.c | 81 +++++++++++++++++++++++++++++++++++++++ > > src/qemu/qemu_blockjob.h | 19 +++++++++ > > src/qemu/qemu_driver.c | 31 ++++++++++++--- > > src/qemu/qemu_migration.c | 7 +++- > > src/qemu/qemu_process.c | 17 ++++---- > > 5 files changed, 141 insertions(+), 14 deletions(-) > > > > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > > index 637307806b..9e5171744e 100644 > > --- a/src/qemu/qemu_driver.c > > +++ b/src/qemu/qemu_driver.c > > @@ -4716,7 +4716,7 @@ processBlockJobEvent(virQEMUDriverPtr driver, > > int status) > > { > > virDomainDiskDefPtr disk; > > - qemuBlockJobDataPtr job; > > + qemuBlockJobDataPtr job = NULL; > > > > if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) > > return; > > @@ -4731,7 +4731,11 @@ processBlockJobEvent(virQEMUDriverPtr driver, > > goto endjob; > > } > > > > - job = QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob; > > + if (!(job = qemuBlockJobDiskGetJob(disk))) { > > Can qemuBlockJobDiskGetJob really return NULL here? Not at this point in the series. In patch 29 though the block job data struct is allocated only when there's a job. I don't remember whether this originates from the forethought that such a change will happen or I've reorganized it, but I'd prefer to keep the checks here.
Attachment:
signature.asc
Description: PGP signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list