mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: Drop forward declarations in migration code
Signed-off-by: Jiri Denemark <jdenemar@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
7c36e5004c
commit
96db9dcfe9
@ -81,35 +81,97 @@ VIR_ENUM_IMPL(qemuMigrationJobPhase,
|
|||||||
"finish3",
|
"finish3",
|
||||||
);
|
);
|
||||||
|
|
||||||
static int
|
|
||||||
|
static int ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RESULT
|
||||||
qemuMigrationJobStart(virQEMUDriver *driver,
|
qemuMigrationJobStart(virQEMUDriver *driver,
|
||||||
virDomainObj *vm,
|
virDomainObj *vm,
|
||||||
virDomainAsyncJob job,
|
virDomainAsyncJob job,
|
||||||
unsigned long apiFlags)
|
unsigned long apiFlags)
|
||||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RESULT;
|
{
|
||||||
|
qemuDomainObjPrivate *priv = vm->privateData;
|
||||||
|
virDomainJobOperation op;
|
||||||
|
unsigned long long mask;
|
||||||
|
|
||||||
static void
|
if (job == VIR_ASYNC_JOB_MIGRATION_IN) {
|
||||||
|
op = VIR_DOMAIN_JOB_OPERATION_MIGRATION_IN;
|
||||||
|
mask = VIR_JOB_NONE;
|
||||||
|
} else {
|
||||||
|
op = VIR_DOMAIN_JOB_OPERATION_MIGRATION_OUT;
|
||||||
|
mask = VIR_JOB_DEFAULT_MASK |
|
||||||
|
JOB_MASK(VIR_JOB_SUSPEND) |
|
||||||
|
JOB_MASK(VIR_JOB_MIGRATION_OP);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qemuDomainObjBeginAsyncJob(driver, vm, job, op, apiFlags) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
qemuDomainJobSetStatsType(priv->job.current,
|
||||||
|
QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION);
|
||||||
|
|
||||||
|
qemuDomainObjSetAsyncJobMask(vm, mask);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void ATTRIBUTE_NONNULL(1)
|
||||||
qemuMigrationJobSetPhase(virDomainObj *vm,
|
qemuMigrationJobSetPhase(virDomainObj *vm,
|
||||||
qemuMigrationJobPhase phase)
|
qemuMigrationJobPhase phase)
|
||||||
ATTRIBUTE_NONNULL(1);
|
{
|
||||||
|
qemuDomainObjPrivate *priv = vm->privateData;
|
||||||
|
|
||||||
static void
|
if (phase < priv->job.phase) {
|
||||||
|
VIR_ERROR(_("migration protocol going backwards %s => %s"),
|
||||||
|
qemuMigrationJobPhaseTypeToString(priv->job.phase),
|
||||||
|
qemuMigrationJobPhaseTypeToString(phase));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
qemuDomainObjSetJobPhase(vm, phase);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void ATTRIBUTE_NONNULL(1)
|
||||||
qemuMigrationJobStartPhase(virDomainObj *vm,
|
qemuMigrationJobStartPhase(virDomainObj *vm,
|
||||||
qemuMigrationJobPhase phase)
|
qemuMigrationJobPhase phase)
|
||||||
ATTRIBUTE_NONNULL(1);
|
{
|
||||||
|
qemuMigrationJobSetPhase(vm, phase);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
qemuMigrationJobContinue(virDomainObj *obj)
|
|
||||||
ATTRIBUTE_NONNULL(1);
|
|
||||||
|
|
||||||
static bool
|
static void ATTRIBUTE_NONNULL(1)
|
||||||
|
qemuMigrationJobContinue(virDomainObj *vm)
|
||||||
|
{
|
||||||
|
qemuDomainObjReleaseAsyncJob(vm);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool ATTRIBUTE_NONNULL(1)
|
||||||
qemuMigrationJobIsActive(virDomainObj *vm,
|
qemuMigrationJobIsActive(virDomainObj *vm,
|
||||||
virDomainAsyncJob job)
|
virDomainAsyncJob job)
|
||||||
ATTRIBUTE_NONNULL(1);
|
{
|
||||||
|
qemuDomainObjPrivate *priv = vm->privateData;
|
||||||
|
|
||||||
|
if (priv->job.asyncJob != job) {
|
||||||
|
const char *msg;
|
||||||
|
|
||||||
|
if (job == VIR_ASYNC_JOB_MIGRATION_IN)
|
||||||
|
msg = _("domain '%s' is not processing incoming migration");
|
||||||
|
else
|
||||||
|
msg = _("domain '%s' is not being migrated");
|
||||||
|
|
||||||
|
virReportError(VIR_ERR_OPERATION_INVALID, msg, vm->def->name);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void ATTRIBUTE_NONNULL(1)
|
||||||
|
qemuMigrationJobFinish(virDomainObj *vm)
|
||||||
|
{
|
||||||
|
qemuDomainObjEndAsyncJob(vm);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
qemuMigrationJobFinish(virDomainObj *obj)
|
|
||||||
ATTRIBUTE_NONNULL(1);
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
qemuMigrationSrcStoreDomainState(virDomainObj *vm)
|
qemuMigrationSrcStoreDomainState(virDomainObj *vm)
|
||||||
@ -6149,92 +6211,6 @@ qemuMigrationSrcCancel(virQEMUDriver *driver,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
qemuMigrationJobStart(virQEMUDriver *driver,
|
|
||||||
virDomainObj *vm,
|
|
||||||
virDomainAsyncJob job,
|
|
||||||
unsigned long apiFlags)
|
|
||||||
{
|
|
||||||
qemuDomainObjPrivate *priv = vm->privateData;
|
|
||||||
virDomainJobOperation op;
|
|
||||||
unsigned long long mask;
|
|
||||||
|
|
||||||
if (job == VIR_ASYNC_JOB_MIGRATION_IN) {
|
|
||||||
op = VIR_DOMAIN_JOB_OPERATION_MIGRATION_IN;
|
|
||||||
mask = VIR_JOB_NONE;
|
|
||||||
} else {
|
|
||||||
op = VIR_DOMAIN_JOB_OPERATION_MIGRATION_OUT;
|
|
||||||
mask = VIR_JOB_DEFAULT_MASK |
|
|
||||||
JOB_MASK(VIR_JOB_SUSPEND) |
|
|
||||||
JOB_MASK(VIR_JOB_MIGRATION_OP);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qemuDomainObjBeginAsyncJob(driver, vm, job, op, apiFlags) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
qemuDomainJobSetStatsType(priv->job.current,
|
|
||||||
QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION);
|
|
||||||
|
|
||||||
qemuDomainObjSetAsyncJobMask(vm, mask);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
qemuMigrationJobSetPhase(virDomainObj *vm,
|
|
||||||
qemuMigrationJobPhase phase)
|
|
||||||
{
|
|
||||||
qemuDomainObjPrivate *priv = vm->privateData;
|
|
||||||
|
|
||||||
if (phase < priv->job.phase) {
|
|
||||||
VIR_ERROR(_("migration protocol going backwards %s => %s"),
|
|
||||||
qemuMigrationJobPhaseTypeToString(priv->job.phase),
|
|
||||||
qemuMigrationJobPhaseTypeToString(phase));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
qemuDomainObjSetJobPhase(vm, phase);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
qemuMigrationJobStartPhase(virDomainObj *vm,
|
|
||||||
qemuMigrationJobPhase phase)
|
|
||||||
{
|
|
||||||
qemuMigrationJobSetPhase(vm, phase);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
qemuMigrationJobContinue(virDomainObj *vm)
|
|
||||||
{
|
|
||||||
qemuDomainObjReleaseAsyncJob(vm);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool
|
|
||||||
qemuMigrationJobIsActive(virDomainObj *vm,
|
|
||||||
virDomainAsyncJob job)
|
|
||||||
{
|
|
||||||
qemuDomainObjPrivate *priv = vm->privateData;
|
|
||||||
|
|
||||||
if (priv->job.asyncJob != job) {
|
|
||||||
const char *msg;
|
|
||||||
|
|
||||||
if (job == VIR_ASYNC_JOB_MIGRATION_IN)
|
|
||||||
msg = _("domain '%s' is not processing incoming migration");
|
|
||||||
else
|
|
||||||
msg = _("domain '%s' is not being migrated");
|
|
||||||
|
|
||||||
virReportError(VIR_ERR_OPERATION_INVALID, msg, vm->def->name);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
qemuMigrationJobFinish(virDomainObj *vm)
|
|
||||||
{
|
|
||||||
qemuDomainObjEndAsyncJob(vm);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
qemuMigrationDstErrorFree(void *data)
|
qemuMigrationDstErrorFree(void *data)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user