提交 4ab8447a 编写于 作者: P Peter Krempa

qemu: blockjob: Add job name into the data

Currently the job name corresponds to the disk the job belongs to. For
jobs which will not correspond to disks we'll need to track the name
separately.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 dfe11a70
......@@ -36,6 +36,7 @@
#include "virtime.h"
#include "locking/domain_lock.h"
#include "viralloc.h"
#include "virstring.h"
#define VIR_FROM_THIS VIR_FROM_QEMU
......@@ -50,6 +51,7 @@ qemuBlockJobDataDispose(void *obj)
{
qemuBlockJobDataPtr job = obj;
VIR_FREE(job->name);
VIR_FREE(job->errmsg);
}
......@@ -67,9 +69,11 @@ qemuBlockJobDataOnceInit(void)
VIR_ONCE_GLOBAL_INIT(qemuBlockJobData)
static qemuBlockJobDataPtr
qemuBlockJobDataNew(qemuBlockJobType type)
qemuBlockJobDataNew(qemuBlockJobType type,
const char *name)
{
qemuBlockJobDataPtr job = NULL;
qemuBlockJobDataPtr ret = NULL;
if (qemuBlockJobDataInitialize() < 0)
return NULL;
......@@ -77,11 +81,18 @@ qemuBlockJobDataNew(qemuBlockJobType type)
if (!(job = virObjectNew(qemuBlockJobDataClass)))
return NULL;
if (VIR_STRDUP(job->name, name) < 0)
goto cleanup;
job->state = QEMU_BLOCKJOB_STATE_NEW;
job->newstate = -1;
job->type = type;
return job;
VIR_STEAL_PTR(ret, job);
cleanup:
virObjectUnref(job);
return ret;
}
......@@ -95,11 +106,12 @@ qemuBlockJobDataNew(qemuBlockJobType type)
*/
qemuBlockJobDataPtr
qemuBlockJobDiskNew(virDomainDiskDefPtr disk,
qemuBlockJobType type)
qemuBlockJobType type,
const char *jobname)
{
qemuBlockJobDataPtr job = NULL;
if (!(job = qemuBlockJobDataNew(type)))
if (!(job = qemuBlockJobDataNew(type, jobname)))
return NULL;
job->disk = disk;
......
......@@ -63,6 +63,8 @@ typedef qemuBlockJobData *qemuBlockJobDataPtr;
struct _qemuBlockJobData {
virObject parent;
char *name;
virDomainDiskDefPtr disk; /* may be NULL, if blockjob does not correspond to any disk */
bool started;
......@@ -77,8 +79,9 @@ struct _qemuBlockJobData {
qemuBlockJobDataPtr
qemuBlockJobDiskNew(virDomainDiskDefPtr disk,
qemuBlockJobType type)
ATTRIBUTE_NONNULL(1);
qemuBlockJobType type,
const char *jobname)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3);
qemuBlockJobDataPtr
qemuBlockJobDiskGetJob(virDomainDiskDefPtr disk)
......
......@@ -4733,7 +4733,7 @@ processBlockJobEvent(virQEMUDriverPtr driver,
}
if (!(job = qemuBlockJobDiskGetJob(disk))) {
if (!(job = qemuBlockJobDiskNew(disk, type)))
if (!(job = qemuBlockJobDiskNew(disk, type, diskAlias)))
goto endjob;
qemuBlockJobStarted(job);
}
......@@ -17316,7 +17316,7 @@ qemuDomainBlockPullCommon(virQEMUDriverPtr driver,
speed <<= 20;
}
if (!(job = qemuBlockJobDiskNew(disk, QEMU_BLOCKJOB_TYPE_PULL)))
if (!(job = qemuBlockJobDiskNew(disk, QEMU_BLOCKJOB_TYPE_PULL, device)))
goto endjob;
qemuDomainObjEnterMonitor(driver, vm);
......@@ -17851,7 +17851,7 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm,
goto endjob;
}
if (!(job = qemuBlockJobDiskNew(disk, QEMU_BLOCKJOB_TYPE_COPY)))
if (!(job = qemuBlockJobDiskNew(disk, QEMU_BLOCKJOB_TYPE_COPY, device)))
goto endjob;
/* Actually start the mirroring */
......@@ -18265,7 +18265,7 @@ qemuDomainBlockCommit(virDomainPtr dom,
jobtype = QEMU_BLOCKJOB_TYPE_ACTIVE_COMMIT;
}
if (!(job = qemuBlockJobDiskNew(disk, jobtype)))
if (!(job = qemuBlockJobDiskNew(disk, jobtype, device)))
goto endjob;
qemuDomainObjEnterMonitor(driver, vm);
......
......@@ -916,7 +916,7 @@ qemuMigrationSrcNBDStorageCopyOne(virQEMUDriverPtr driver,
if (!(diskAlias = qemuAliasDiskDriveFromDisk(disk)))
goto cleanup;
if (!(job = qemuBlockJobDiskNew(disk, QEMU_BLOCKJOB_TYPE_COPY)))
if (!(job = qemuBlockJobDiskNew(disk, QEMU_BLOCKJOB_TYPE_COPY, diskAlias)))
goto cleanup;
qemuBlockJobSyncBegin(job);
......
......@@ -7839,7 +7839,7 @@ qemuProcessRefreshLegacyBlockjob(void *payload,
disk->mirrorJob == VIR_DOMAIN_BLOCK_JOB_TYPE_ACTIVE_COMMIT)
jobtype = disk->mirrorJob;
if (!(job = qemuBlockJobDiskNew(disk, jobtype)))
if (!(job = qemuBlockJobDiskNew(disk, jobtype, jobname)))
return -1;
qemuBlockJobStarted(job);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册