[libvirt] [PATCH v2 0/9] Add function that raises error if domain is not active

This is my GSOC patch contribution. This change was suggested on BiteSizedTasks in the libvirt wiki[1]. in libvirt there is lots of occurences of this same pattern: if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is not running")); goto out; } This series replace these calls with a new function that check if the domain is active and log directly the error. This allows to remove almost 300 lines of code in the code base. [1] https://wiki.libvirt.org/page/BiteSizedTasks#Add_function_that_raises_error_... Changes since v2: * renamed virDomainObjCheckIsActive into virDomainObjCheckActive * add the remaining occurences Clementine Hayat (9): Add function that raises error if domain is not active qemu: start using virDomainObjCheckActive test: start using virDomainObjCheckActive libxl: start using virDomainObjCheckActive bhyve: start using virDomainObjCheckActive lxc: start using virDomainObjCheckActive openvz: start using virDomainObjCheckActive uml: start using virDomainObjCheckActive vz: start using virDomainObjCheckActive src/bhyve/bhyve_driver.c | 20 +-- src/conf/domain_conf.c | 11 ++ src/conf/domain_conf.h | 2 + src/libvirt_private.syms | 1 + src/libxl/libxl_driver.c | 97 +++---------- src/lxc/lxc_driver.c | 60 ++------ src/openvz/openvz_driver.c | 20 +-- src/qemu/qemu_domain.c | 5 +- src/qemu/qemu_driver.c | 271 ++++++++----------------------------- src/test/test_driver.c | 35 +---- src/uml/uml_driver.c | 5 +- src/vz/vz_driver.c | 5 +- 12 files changed, 120 insertions(+), 412 deletions(-) -- 2.17.0

Add a function named virDomainObjCheckIsActive in src/conf/domain_conf.c. It calls virDomainObjIsActive, raises error if necessary and returns. There is a lot of occurence of this pattern and it will save 3 lines on each call. Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/conf/domain_conf.c | 11 +++++++++++ src/conf/domain_conf.h | 2 ++ src/libvirt_private.syms | 1 + 3 files changed, 14 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index d23182f18..dadb63360 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6003,6 +6003,17 @@ virDomainDefValidate(virDomainDefPtr def, return 0; } +int +virDomainObjCheckActive(virDomainObjPtr dom) +{ + if (!virDomainObjIsActive(dom)) { + virReportError(VIR_ERR_OPERATION_INVALID, + "%s", _("domain is not running")); + return -1; + } + return 0; +} + /** * virDomainDeviceLoadparmIsValid diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index bbaa24137..122a051b2 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2722,6 +2722,8 @@ virDomainObjIsActive(virDomainObjPtr dom) return dom->def->id != -1; } +int virDomainObjCheckActive(virDomainObjPtr dom); + int virDomainDefSetVcpusMax(virDomainDefPtr def, unsigned int vcpus, virDomainXMLOptionPtr xmlopt); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index cab324c4d..99b5a0235 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -474,6 +474,7 @@ virDomainNostateReasonTypeFromString; virDomainNostateReasonTypeToString; virDomainObjAssignDef; virDomainObjBroadcast; +virDomainObjCheckActive; virDomainObjCopyPersistentDef; virDomainObjEndAPI; virDomainObjFormat; -- 2.17.0

On Tue, Apr 17, 2018 at 10:13:26PM +0000, Clementine Hayat wrote:
Add a function named virDomainObjCheckIsActive in src/conf/domain_conf.c. It calls virDomainObjIsActive, raises error if necessary and returns.
There is a lot of occurence of this pattern and it will save 3 lines on each call.
Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/conf/domain_conf.c | 11 +++++++++++ src/conf/domain_conf.h | 2 ++ src/libvirt_private.syms | 1 + 3 files changed, 14 insertions(+)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/qemu/qemu_domain.c | 5 +- src/qemu/qemu_driver.c | 271 +++++++++-------------------------------- 2 files changed, 56 insertions(+), 220 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7000de6a9..decbdb004 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -8678,11 +8678,8 @@ qemuDomainUpdateCurrentMemorySize(virQEMUDriverPtr driver, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) return -1; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } qemuDomainObjEnterMonitor(driver, vm); ret = qemuMonitorGetBalloonInfo(priv->mon, &balloon); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fcd79bd71..a3c806271 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1837,11 +1837,8 @@ static int qemuDomainSuspend(virDomainPtr dom) if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_SUSPEND) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (priv->job.asyncJob == QEMU_ASYNC_JOB_MIGRATION_OUT) { reason = VIR_DOMAIN_PAUSED_MIGRATION; @@ -1906,11 +1903,8 @@ static int qemuDomainResume(virDomainPtr dom) if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } state = virDomainObjGetState(vm, &reason); if (state == VIR_DOMAIN_PMSUSPENDED) { @@ -2090,11 +2084,8 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags) useAgent = false; } - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (useAgent) { qemuAgentPtr agent; @@ -2157,11 +2148,8 @@ qemuDomainReset(virDomainPtr dom, unsigned int flags) if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; qemuDomainObjEnterMonitor(driver, vm); @@ -2222,11 +2210,8 @@ qemuDomainDestroyFlags(virDomainPtr dom, if (virDomainDestroyFlagsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } state = virDomainObjGetState(vm, &reason); starting = (state == VIR_DOMAIN_PAUSED && @@ -2541,11 +2526,8 @@ static int qemuDomainInjectNMI(virDomainPtr domain, unsigned int flags) if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } qemuDomainObjEnterMonitor(driver, vm); ret = qemuMonitorInjectNMI(priv->mon); @@ -2604,11 +2586,8 @@ static int qemuDomainSendKey(virDomainPtr domain, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } qemuDomainObjEnterMonitor(driver, vm); ret = qemuMonitorSendKey(priv->mon, holdtime, keycodes, nkeycodes); @@ -2721,11 +2700,8 @@ qemuDomainGetControlInfo(virDomainPtr dom, if (virDomainGetControlInfoEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } priv = vm->privateData; @@ -3537,11 +3513,8 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *path, const char *dxml, if (virDomainSaveFlagsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } ret = qemuDomainSaveInternal(driver, vm, path, compressed, compressedpath, dxml, flags); @@ -3595,11 +3568,9 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int flags) if (virDomainManagedSaveEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } + if (!vm->persistent) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("cannot do managed save for transient domain")); @@ -3939,11 +3910,8 @@ qemuDomainCoreDumpWithFormat(virDomainPtr dom, VIR_DOMAIN_JOB_OPERATION_DUMP) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; priv->job.current->statsType = QEMU_DOMAIN_JOB_STATS_TYPE_SAVEDUMP; @@ -4054,11 +4022,8 @@ qemuDomainScreenshot(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } /* Well, even if qemu allows multiple graphic cards, heads, whatever, * screenshot command does not */ @@ -4165,11 +4130,8 @@ processWatchdogEvent(virQEMUDriverPtr driver, goto cleanup; } - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } flags |= cfg->autoDumpBypassCache ? VIR_DUMP_BYPASS_CACHE: 0; if ((ret = doCoreDump(driver, vm, dumpfile, flags, @@ -10841,11 +10803,8 @@ qemuDomainBlockResize(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!(disk = virDomainDiskByName(vm->def, path, false))) { virReportError(VIR_ERR_INVALID_ARG, @@ -11001,11 +10960,8 @@ qemuDomainBlockStats(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (qemuDomainBlocksStatsGather(driver, vm, path, &blockstats) < 0) goto endjob; @@ -11058,11 +11014,8 @@ qemuDomainBlockStatsFlags(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if ((nstats = qemuDomainBlocksStatsGather(driver, vm, path, &blockstats)) < 0) @@ -11128,11 +11081,8 @@ qemuDomainInterfaceStats(virDomainPtr dom, if (virDomainInterfaceStatsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (!(net = virDomainNetFind(vm->def, device))) goto cleanup; @@ -11484,11 +11434,8 @@ qemuDomainMemoryStatsInternal(virQEMUDriverPtr driver, int ret = -1; long rss; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) return -1; - } if (vm->def->memballoon && vm->def->memballoon->model == VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO) { @@ -11638,11 +11585,8 @@ qemuDomainMemoryPeek(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (virAsprintf(&tmp, "%s/qemu.mem.XXXXXX", cfg->cacheDir) < 0) goto endjob; @@ -13294,11 +13238,8 @@ qemuDomainGetJobStatsInternal(virQEMUDriverPtr driver, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) return -1; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (!priv->job.current) { jobInfo->status = QEMU_DOMAIN_JOB_STATUS_NONE; @@ -13426,11 +13367,8 @@ static int qemuDomainAbortJob(virDomainPtr dom) if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_ABORT) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; @@ -13493,11 +13431,8 @@ qemuDomainMigrateSetMaxDowntime(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MIGRATION_OP) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; @@ -13538,11 +13473,8 @@ qemuDomainMigrateGetMaxDowntime(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; qemuDomainObjEnterMonitor(driver, vm); @@ -13591,11 +13523,8 @@ qemuDomainMigrateGetCompressionCache(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; @@ -13642,11 +13571,8 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MIGRATION_OP) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; @@ -13704,11 +13630,8 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MIGRATION_OP) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } VIR_DEBUG("Setting migration bandwidth to %luMbs", bandwidth); qemuDomainObjEnterMonitor(driver, vm); @@ -13779,11 +13702,8 @@ qemuDomainMigrateStartPostCopy(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MIGRATION_OP) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; @@ -14746,11 +14666,8 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver, qemuDomainSnapshotDiskDataPtr diskdata = NULL; virErrorPtr orig_err = NULL; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) return -1; - } if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_TRANSACTION)) { if (!(actions = virJSONValueNewArray())) @@ -16298,11 +16215,8 @@ static int qemuDomainQemuMonitorCommand(virDomainPtr domain, const char *cmd, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; @@ -16437,11 +16351,8 @@ qemuDomainOpenConsole(virDomainPtr dom, if (virDomainOpenConsoleEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } priv = vm->privateData; @@ -16517,11 +16428,8 @@ qemuDomainOpenChannel(virDomainPtr dom, if (virDomainOpenChannelEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } priv = vm->privateData; @@ -16718,11 +16626,8 @@ qemuDomainBlockPullCommon(virQEMUDriverPtr driver, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (qemuDomainSupportsBlockJobs(vm) < 0) goto endjob; @@ -16834,11 +16739,8 @@ qemuDomainBlockJobAbort(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (qemuDomainSupportsBlockJobs(vm) < 0) goto endjob; @@ -16985,11 +16887,8 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (qemuDomainSupportsBlockJobs(vm) < 0) goto endjob; @@ -17072,11 +16971,8 @@ qemuDomainBlockJobSetSpeed(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (qemuDomainSupportsBlockJobs(vm) < 0) goto endjob; @@ -17210,11 +17106,8 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!(disk = qemuDomainDiskByName(vm->def, path))) goto endjob; @@ -17574,11 +17467,8 @@ qemuDomainBlockCommit(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } /* Ensure that no one backports commit to RHEL 6.2, where cancel * behaved differently */ if (!(virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCK_COMMIT) && @@ -17794,11 +17684,8 @@ qemuDomainOpenGraphics(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; @@ -17865,11 +17752,8 @@ qemuDomainOpenGraphicsFD(virDomainPtr dom, if (virDomainOpenGraphicsFdEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } priv = vm->privateData; @@ -18536,11 +18420,8 @@ qemuDomainGetDiskErrors(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!errors) { ret = vm->def->ndisks; @@ -18681,11 +18562,8 @@ qemuDomainGetCPUStats(virDomainPtr domain, if (virDomainGetCPUStatsEnsureACL(domain->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPUACCT)) { virReportError(VIR_ERR_OPERATION_INVALID, @@ -18749,11 +18627,8 @@ qemuDomainPMSuspendForDuration(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_WAKEUP) && (target == VIR_NODE_SUSPEND_TARGET_MEM || @@ -18816,11 +18691,8 @@ qemuDomainPMWakeup(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; @@ -18887,11 +18759,8 @@ qemuDomainQemuAgentCommand(virDomainPtr domain, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!qemuDomainAgentAvailable(vm, true)) goto endjob; @@ -18993,11 +18862,8 @@ qemuDomainFSTrim(virDomainPtr dom, if (!qemuDomainAgentAvailable(vm, true)) goto endjob; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } agent = qemuDomainObjEnterAgent(vm); ret = qemuAgentFSTrim(agent, minimum); @@ -19175,11 +19041,8 @@ qemuDomainGetTime(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!qemuDomainAgentAvailable(vm, true)) goto endjob; @@ -19228,11 +19091,8 @@ qemuDomainSetTime(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } /* On x86, the rtc-reset-reinjection QMP command must be called after * setting the time to avoid trouble down the line. If the command is @@ -19256,11 +19116,8 @@ qemuDomainSetTime(virDomainPtr dom, if (rv < 0) goto endjob; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } /* Don't try to call rtc-reset-reinjection if it's not available */ if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_RTC_RESET_REINJECTION)) { @@ -19305,11 +19162,8 @@ qemuDomainFSFreeze(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } ret = qemuDomainSnapshotFSFreeze(driver, vm, mountpoints, nmountpoints); @@ -19349,11 +19203,8 @@ qemuDomainFSThaw(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } ret = qemuDomainSnapshotFSThaw(driver, vm, true); @@ -20440,11 +20291,8 @@ qemuDomainGetFSInfo(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!qemuDomainAgentAvailable(vm, true)) goto endjob; @@ -20488,11 +20336,8 @@ qemuDomainInterfaceAddresses(virDomainPtr dom, if (virDomainInterfaceAddressesEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } switch (source) { case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE: @@ -20715,11 +20560,8 @@ qemuDomainSetUserPassword(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!qemuDomainAgentAvailable(vm, true)) goto endjob; @@ -21185,11 +21027,8 @@ qemuDomainSetBlockThreshold(virDomainPtr dom, if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCK_WRITE_THRESHOLD)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", -- 2.17.0

On Tue, Apr 17, 2018 at 10:13:27PM +0000, Clementine Hayat wrote:
Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/qemu/qemu_domain.c | 5 +- src/qemu/qemu_driver.c | 271 +++++++++-------------------------------- 2 files changed, 56 insertions(+), 220 deletions(-)
More occurrences in qemuMigrationSrcBegin: src/qemu/qemu_migration.c-2000- src/qemu/qemu_migration.c:2001: if (!virDomainObjIsActive(vm) && !(flags & VIR_MIGRATE_OFFLINE)) { src/qemu/qemu_migration.c-2002- virReportError(VIR_ERR_OPERATION_INVALID, src/qemu/qemu_migration.c-2003- "%s", _("domain is not running")); src/qemu/qemu_migration.c-2004- goto endjob; src/qemu/qemu_migration.c-2005- } and qemuMigrationSrcPerformJob too. Jano

Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/test/test_driver.c | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index eec7a8292..43221e547 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1779,11 +1779,8 @@ static int testDomainDestroyFlags(virDomainPtr domain, if (!(privdom = testDomObjFromDomain(domain))) goto cleanup; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(privdom) < 0) goto cleanup; - } testDomainShutdownState(domain, privdom, VIR_DOMAIN_SHUTOFF_DESTROYED); event = virDomainEventLifecycleNewFromObj(privdom, @@ -1921,11 +1918,8 @@ static int testDomainReboot(virDomainPtr domain, if (!(privdom = testDomObjFromDomain(domain))) goto cleanup; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(privdom) < 0) goto cleanup; - } virDomainObjSetState(privdom, VIR_DOMAIN_SHUTDOWN, VIR_DOMAIN_SHUTDOWN_USER); @@ -2049,11 +2043,8 @@ testDomainSaveFlags(virDomainPtr domain, const char *path, if (!(privdom = testDomObjFromDomain(domain))) goto cleanup; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(privdom) < 0) goto cleanup; - } xml = virDomainDefFormat(privdom->def, privconn->caps, VIR_DOMAIN_DEF_FORMAT_SECURE); @@ -2255,11 +2246,8 @@ static int testDomainCoreDumpWithFormat(virDomainPtr domain, if (!(privdom = testDomObjFromDomain(domain))) goto cleanup; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(privdom) < 0) goto cleanup; - } if ((fd = open(to, O_CREAT|O_TRUNC|O_WRONLY, S_IRUSR|S_IWUSR)) < 0) { virReportSystemError(errno, @@ -3231,11 +3219,8 @@ static int testDomainBlockStats(virDomainPtr domain, if (!(privdom = testDomObjFromDomain(domain))) return ret; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(privdom) < 0) goto error; - } if (virDomainDiskIndexByName(privdom->def, path, false) < 0) { virReportError(VIR_ERR_INVALID_ARG, @@ -3278,11 +3263,8 @@ testDomainInterfaceStats(virDomainPtr domain, if (!(privdom = testDomObjFromDomain(domain))) return -1; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(privdom) < 0) goto error; - } if (!(net = virDomainNetFind(privdom->def, device))) goto error; @@ -5962,11 +5944,8 @@ testDomainManagedSave(virDomainPtr dom, unsigned int flags) if (!(vm = testDomObjFromDomain(dom))) return -1; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (!vm->persistent) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", -- 2.17.0

On Tue, Apr 17, 2018 at 10:13:28PM +0000, Clementine Hayat wrote:
Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/test/test_driver.c | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/libxl/libxl_driver.c | 97 +++++++++------------------------------- 1 file changed, 21 insertions(+), 76 deletions(-) diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 8808da8db..b66a1de5f 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -1164,10 +1164,8 @@ libxlDomainSuspend(virDomainPtr dom) if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (virDomainObjGetState(vm, NULL) != VIR_DOMAIN_PAUSED) { if (libxl_domain_pause(cfg->ctx, vm->def->id) != 0) { @@ -1220,10 +1218,8 @@ libxlDomainResume(virDomainPtr dom) if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_PAUSED) { if (libxl_domain_unpause(cfg->ctx, vm->def->id) != 0) { @@ -1278,11 +1274,8 @@ libxlDomainShutdownFlags(virDomainPtr dom, unsigned int flags) if (virDomainShutdownFlagsEnsureACL(dom->conn, vm->def, flags) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (flags & VIR_DOMAIN_SHUTDOWN_PARAVIRT) { ret = libxl_domain_shutdown(cfg->ctx, vm->def->id); @@ -1344,11 +1337,8 @@ libxlDomainReboot(virDomainPtr dom, unsigned int flags) if (virDomainRebootEnsureACL(dom->conn, vm->def, flags) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (flags & VIR_DOMAIN_REBOOT_PARAVIRT) { ret = libxl_domain_reboot(cfg->ctx, vm->def->id); @@ -1390,11 +1380,8 @@ libxlDomainDestroyFlags(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (libxlDomainDestroyInternal(driver, vm) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -1797,10 +1784,8 @@ libxlDomainSaveFlags(virDomainPtr dom, const char *to, const char *dxml, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (libxlDoDomainSave(driver, vm, to) < 0) goto endjob; @@ -1925,10 +1910,8 @@ libxlDomainCoreDump(virDomainPtr dom, const char *to, unsigned int flags) if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!(flags & VIR_DUMP_LIVE) && virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) { @@ -2022,10 +2005,8 @@ libxlDomainManagedSave(virDomainPtr dom, unsigned int flags) if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!vm->persistent) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("cannot do managed save for transient domain")); @@ -2493,10 +2474,8 @@ libxlDomainGetVcpus(virDomainPtr dom, virVcpuInfoPtr info, int maxinfo, if (virDomainGetVcpusEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if ((vcpuinfo = libxl_list_vcpu(cfg->ctx, vm->def->id, &maxcpu, &hostcpus)) == NULL) { @@ -4466,10 +4445,8 @@ libxlDomainGetSchedulerType(virDomainPtr dom, int *nparams) if (virDomainGetSchedulerTypeEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } sched_id = libxl_get_scheduler(cfg->ctx); @@ -4529,11 +4506,8 @@ libxlDomainGetSchedulerParametersFlags(virDomainPtr dom, if (virDomainGetSchedulerParametersFlagsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } sched_id = libxl_get_scheduler(cfg->ctx); @@ -4609,10 +4583,8 @@ libxlDomainSetSchedulerParametersFlags(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } sched_id = libxl_get_scheduler(cfg->ctx); @@ -4678,11 +4650,8 @@ libxlDomainOpenConsole(virDomainPtr dom, if (virDomainOpenConsoleEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } priv = vm->privateData; if (dev_name) { @@ -4777,11 +4746,8 @@ libxlDomainGetNumaParameters(virDomainPtr dom, if (virDomainGetNumaParametersEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if ((*nparams) == 0) { *nparams = LIBXL_NUMA_NPARAM; @@ -4944,11 +4910,8 @@ libxlDomainInterfaceStats(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!(net = virDomainNetFind(vm->def, device))) goto endjob; @@ -5066,11 +5029,8 @@ libxlDomainGetCPUStats(virDomainPtr dom, if (virDomainGetCPUStatsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (start_cpu == -1) ret = libxlDomainGetTotalCPUStats(driver, vm, params, nparams); @@ -5118,11 +5078,8 @@ libxlDomainMemoryStats(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (libxl_domain_info(cfg->ctx, &d_info, vm->def->id) != 0) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -5480,11 +5437,8 @@ libxlDomainBlockStats(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } memset(&blkstats, 0, sizeof(libxlBlockStats)); if ((ret = libxlDomainBlockStatsGather(vm, path, &blkstats)) < 0) @@ -5533,11 +5487,8 @@ libxlDomainBlockStatsFlags(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } /* return count of supported stats */ if (*nparams == 0) { @@ -5884,11 +5835,8 @@ libxlDomainMigrateBegin3Params(virDomainPtr domain, if (virDomainMigrateBegin3ParamsEnsureACL(domain->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } xmlout = libxlDomainMigrationSrcBegin(domain->conn, vm, xmlin, cookieout, cookieoutlen); @@ -6297,11 +6245,8 @@ libxlDomainInterfaceAddresses(virDomainPtr dom, if (virDomainInterfaceAddressesEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } switch (source) { case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE: -- 2.17.0

On Tue, Apr 17, 2018 at 10:13:29PM +0000, Clementine Hayat wrote:
Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/libxl/libxl_driver.c | 97 +++++++++------------------------------- 1 file changed, 21 insertions(+), 76 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/bhyve/bhyve_driver.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 24c4a9c80..8aff0c65c 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -883,11 +883,8 @@ bhyveDomainCreateWithFlags(virDomainPtr dom, if (virDomainCreateWithFlagsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is already running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } ret = virBhyveProcessStart(dom->conn, privconn, vm, VIR_DOMAIN_RUNNING_BOOTED, @@ -996,11 +993,8 @@ bhyveDomainDestroy(virDomainPtr dom) if (virDomainDestroyEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } ret = virBhyveProcessStop(privconn, vm, VIR_DOMAIN_SHUTOFF_DESTROYED); event = virDomainEventLifecycleNewFromObj(vm, @@ -1031,11 +1025,8 @@ bhyveDomainShutdown(virDomainPtr dom) if (virDomainShutdownEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } ret = virBhyveProcessShutdown(vm); @@ -1062,11 +1053,8 @@ bhyveDomainOpenConsole(virDomainPtr dom, if (virDomainOpenConsoleEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (!vm->def->nserials) { virReportError(VIR_ERR_INTERNAL_ERROR, -- 2.17.0

On Tue, Apr 17, 2018 at 10:13:30PM +0000, Clementine Hayat wrote:
Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/bhyve/bhyve_driver.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-)
diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 24c4a9c80..8aff0c65c 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -883,11 +883,8 @@ bhyveDomainCreateWithFlags(virDomainPtr dom, if (virDomainCreateWithFlagsEnsureACL(dom->conn, vm->def) < 0) goto cleanup;
- if (virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is already running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - }
ret = virBhyveProcessStart(dom->conn, privconn, vm, VIR_DOMAIN_RUNNING_BOOTED,
This hunk is incorrect - it would reverse the logic. Jano

Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/lxc/lxc_driver.c | 60 +++++++++----------------------------------- 1 file changed, 12 insertions(+), 48 deletions(-) diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 4097cef93..008e41bda 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1508,11 +1508,8 @@ lxcDomainDestroyFlags(virDomainPtr dom, if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } priv = vm->privateData; ret = virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_DESTROYED); @@ -2382,11 +2379,8 @@ lxcDomainBlockStats(virDomainPtr dom, if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_BLKIO)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", @@ -2468,11 +2462,8 @@ lxcDomainBlockStatsFlags(virDomainPtr dom, if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_BLKIO)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", @@ -2876,11 +2867,8 @@ lxcDomainInterfaceStats(virDomainPtr dom, if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!(net = virDomainNetFind(vm->def, device))) goto endjob; @@ -3100,11 +3088,8 @@ static int lxcDomainSuspend(virDomainPtr dom) if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (virDomainObjGetState(vm, NULL) != VIR_DOMAIN_PAUSED) { if (lxcFreezeContainer(vm) < 0) { @@ -3155,11 +3140,8 @@ static int lxcDomainResume(virDomainPtr dom) if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } state = virDomainObjGetState(vm, NULL); if (state == VIR_DOMAIN_RUNNING) { @@ -3214,11 +3196,8 @@ lxcDomainOpenConsole(virDomainPtr dom, if (virDomainOpenConsoleEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (dev_name) { for (i = 0; i < vm->def->nconsoles; i++) { @@ -3292,11 +3271,8 @@ lxcDomainSendProcessSignal(virDomainPtr dom, if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } /* * XXX if the kernel has /proc/$PID/ns/pid we can @@ -3391,11 +3367,8 @@ lxcDomainShutdownFlags(virDomainPtr dom, if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (priv->initpid == 0) { virReportError(VIR_ERR_OPERATION_INVALID, @@ -3474,11 +3447,8 @@ lxcDomainReboot(virDomainPtr dom, if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (priv->initpid == 0) { virReportError(VIR_ERR_OPERATION_INVALID, @@ -5111,11 +5081,8 @@ static int lxcDomainLxcOpenNamespace(virDomainPtr dom, if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto endjob; - } if (!priv->initpid) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", @@ -5441,11 +5408,8 @@ lxcDomainGetCPUStats(virDomainPtr dom, if (virDomainGetCPUStatsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPUACCT)) { virReportError(VIR_ERR_OPERATION_INVALID, -- 2.17.0

On Tue, Apr 17, 2018 at 10:13:31PM +0000, Clementine Hayat wrote:
Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/lxc/lxc_driver.c | 60 +++++++++----------------------------------- 1 file changed, 12 insertions(+), 48 deletions(-)
lxcDomainMemoryStats can also use it: src/lxc/lxc_driver.c:5169: if (!virDomainObjIsActive(vm)) { src/lxc/lxc_driver.c-5170- virReportError(VIR_ERR_OPERATION_INVALID, "%s", src/lxc/lxc_driver.c-5171- _("domain is not active")); src/lxc/lxc_driver.c-5172- goto endjob; src/lxc/lxc_driver.c-5173- } It's not a one-to-one replacement, but 'active' and 'running' are close enough. Jano

Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/openvz/openvz_driver.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index 9900e8bab..66e589313 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -575,11 +575,8 @@ static int openvzDomainSuspend(virDomainPtr dom) if (!(vm = openvzDomObjFromDomain(driver, dom->uuid))) return -1; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (virDomainObjGetState(vm, NULL) != VIR_DOMAIN_PAUSED) { openvzSetProgramSentinal(prog, vm->def->name); @@ -605,11 +602,8 @@ static int openvzDomainResume(virDomainPtr dom) if (!(vm = openvzDomObjFromDomain(driver, dom->uuid))) return -1; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("Domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_PAUSED) { openvzSetProgramSentinal(prog, vm->def->name); @@ -1895,11 +1889,8 @@ openvzDomainInterfaceStats(virDomainPtr dom, if (!(vm = openvzDomObjFromDomain(driver, dom->uuid))) return -1; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (!(net = virDomainNetFind(vm->def, device))) goto cleanup; @@ -2135,11 +2126,8 @@ openvzDomainMigrateBegin3Params(virDomainPtr domain, if (!(vm = openvzDomObjFromDomain(driver, domain->uuid))) return NULL; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (openvzGetVEStatus(vm, &status, NULL) == -1) goto cleanup; -- 2.17.0

On Tue, Apr 17, 2018 at 10:13:32PM +0000, Clementine Hayat wrote:
Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/openvz/openvz_driver.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/uml/uml_driver.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c index ac168ce77..56dfd7b58 100644 --- a/src/uml/uml_driver.c +++ b/src/uml/uml_driver.c @@ -2584,11 +2584,8 @@ umlDomainOpenConsole(virDomainPtr dom, if (virDomainOpenConsoleEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(vm) < 0) goto cleanup; - } if (dev_name) { for (i = 0; i < vm->def->nconsoles; i++) { -- 2.17.0

On Tue, Apr 17, 2018 at 10:13:33PM +0000, Clementine Hayat wrote:
Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/uml/uml_driver.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/vz/vz_driver.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index e51d968f2..3094afccb 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -3998,11 +3998,8 @@ vzDomainBlockResize(virDomainPtr domain, if (vzEnsureDomainExists(dom) < 0) goto cleanup; - if (!virDomainObjIsActive(dom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckActive(dom) < 0) goto cleanup; - } if (!(disk = virDomainDiskByName(dom->def, path, false))) { virReportError(VIR_ERR_INVALID_ARG, -- 2.17.0

On Tue, Apr 17, 2018 at 10:13:34PM +0000, Clementine Hayat wrote:
Signed-off-by: Clementine Hayat <clem@lse.epita.fr> --- src/vz/vz_driver.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

On Tue, Apr 17, 2018 at 10:13:25PM +0000, Clementine Hayat wrote:
This is my GSOC patch contribution.
This change was suggested on BiteSizedTasks in the libvirt wiki[1].
in libvirt there is lots of occurences of this same pattern:
if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("domain is not running")); goto out; }
This series replace these calls with a new function that check if the domain is active and log directly the error. This allows to remove almost 300 lines of code in the code base.
[1] https://wiki.libvirt.org/page/BiteSizedTasks#Add_function_that_raises_error_...
Changes since v2: * renamed virDomainObjCheckIsActive into virDomainObjCheckActive * add the remaining occurences
Clementine Hayat (9): Add function that raises error if domain is not active qemu: start using virDomainObjCheckActive test: start using virDomainObjCheckActive libxl: start using virDomainObjCheckActive bhyve: start using virDomainObjCheckActive lxc: start using virDomainObjCheckActive openvz: start using virDomainObjCheckActive uml: start using virDomainObjCheckActive vz: start using virDomainObjCheckActive
src/bhyve/bhyve_driver.c | 20 +-- src/conf/domain_conf.c | 11 ++ src/conf/domain_conf.h | 2 + src/libvirt_private.syms | 1 + src/libxl/libxl_driver.c | 97 +++---------- src/lxc/lxc_driver.c | 60 ++------ src/openvz/openvz_driver.c | 20 +-- src/qemu/qemu_domain.c | 5 +- src/qemu/qemu_driver.c | 271 ++++++++----------------------------- src/test/test_driver.c | 35 +---- src/uml/uml_driver.c | 5 +- src/vz/vz_driver.c | 5 +- 12 files changed, 120 insertions(+), 412 deletions(-)
I have pushed most of the patches, except for qemu, lxc and bhyve. On top of that, some APIs like GetVcpus or GetIOThreads use unnecessarily specific error messages: src/qemu/qemu_driver.c:5517: if (!virDomainObjIsActive(vm)) { src/qemu/qemu_driver.c-5518- virReportError(VIR_ERR_OPERATION_INVALID, "%s", src/qemu/qemu_driver.c-5519- _("cannot list IOThreads for an inactive domain")); src/qemu/qemu_driver.c-5520- goto endjob; which essentially repeat the API name in the error message, but those can be cleaned up separately. Jano
participants (2)
-
Clementine Hayat
-
Ján Tomko