mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 07:59:00 +00:00
qemu: blockjob: Turn struct qemuBlockJobData into a virObject
Reference counting will simplify semantics of the lifecycle of the object. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
466b78acb7
commit
4479bd4611
@ -42,14 +42,37 @@
|
||||
VIR_LOG_INIT("qemu.qemu_blockjob");
|
||||
|
||||
|
||||
void
|
||||
qemuBlockJobDataFree(qemuBlockJobDataPtr job)
|
||||
static virClassPtr qemuBlockJobDataClass;
|
||||
|
||||
|
||||
static void
|
||||
qemuBlockJobDataDispose(void *obj)
|
||||
{
|
||||
if (!job)
|
||||
return;
|
||||
qemuBlockJobDataPtr job = obj;
|
||||
|
||||
VIR_FREE(job->errmsg);
|
||||
VIR_FREE(job);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
qemuBlockJobDataOnceInit(void)
|
||||
{
|
||||
if (!VIR_CLASS_NEW(qemuBlockJobData, virClassForObject()))
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
VIR_ONCE_GLOBAL_INIT(qemuBlockJobData)
|
||||
|
||||
qemuBlockJobDataPtr
|
||||
qemuBlockJobDataNew(void)
|
||||
{
|
||||
if (qemuBlockJobDataInitialize() < 0)
|
||||
return NULL;
|
||||
|
||||
return virObjectNew(qemuBlockJobDataClass);
|
||||
}
|
||||
|
||||
|
||||
|
@ -30,6 +30,8 @@ typedef struct _qemuBlockJobData qemuBlockJobData;
|
||||
typedef qemuBlockJobData *qemuBlockJobDataPtr;
|
||||
|
||||
struct _qemuBlockJobData {
|
||||
virObject parent;
|
||||
|
||||
bool started;
|
||||
int type;
|
||||
int status;
|
||||
@ -37,8 +39,7 @@ struct _qemuBlockJobData {
|
||||
bool synchronous; /* API call is waiting for this job */
|
||||
};
|
||||
|
||||
void
|
||||
qemuBlockJobDataFree(qemuBlockJobDataPtr job);
|
||||
qemuBlockJobDataPtr qemuBlockJobDataNew(void);
|
||||
|
||||
int qemuBlockJobUpdateDisk(virDomainObjPtr vm,
|
||||
int asyncJob,
|
||||
|
@ -1063,7 +1063,7 @@ qemuDomainDiskPrivateNew(void)
|
||||
if (!(priv = virObjectNew(qemuDomainDiskPrivateClass)))
|
||||
return NULL;
|
||||
|
||||
if (VIR_ALLOC(priv->blockjob) < 0) {
|
||||
if (!(priv->blockjob = qemuBlockJobDataNew())) {
|
||||
virObjectUnref(priv);
|
||||
priv = NULL;
|
||||
}
|
||||
@ -1079,7 +1079,7 @@ qemuDomainDiskPrivateDispose(void *obj)
|
||||
virStorageSourceFree(priv->migrSource);
|
||||
VIR_FREE(priv->qomName);
|
||||
VIR_FREE(priv->nodeCopyOnRead);
|
||||
qemuBlockJobDataFree(priv->blockjob);
|
||||
virObjectUnref(priv->blockjob);
|
||||
}
|
||||
|
||||
static virClassPtr qemuDomainStorageSourcePrivateClass;
|
||||
|
Loading…
x
Reference in New Issue
Block a user