Flag expansion is the same as in virDomainObjUpdateModificationImpact
which virDomainLiveConfigHelperMethod calls internally. The difference
is merely in implementation. Original code don't use mask
and handle case when VIR_DOMAIN_MEM_MAXIMUM is set explicitly.
Other parts are no different.
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy(a)virtuozzo.com>
---
src/libxl/libxl_driver.c | 34 ++--------------------------------
1 file changed, 2 insertions(+), 32 deletions(-)
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 404016e..06feea5 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -1444,7 +1444,6 @@ libxlDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem,
libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
virDomainObjPtr vm;
virDomainDefPtr persistentDef = NULL;
- bool isActive;
int ret = -1;
virCheckFlags(VIR_DOMAIN_MEM_LIVE |
@@ -1460,38 +1459,9 @@ libxlDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem,
if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0)
goto cleanup;
- isActive = virDomainObjIsActive(vm);
-
- if (flags == VIR_DOMAIN_MEM_CURRENT) {
- if (isActive)
- flags = VIR_DOMAIN_MEM_LIVE;
- else
- flags = VIR_DOMAIN_MEM_CONFIG;
- }
- if (flags == VIR_DOMAIN_MEM_MAXIMUM) {
- if (isActive)
- flags = VIR_DOMAIN_MEM_LIVE | VIR_DOMAIN_MEM_MAXIMUM;
- else
- flags = VIR_DOMAIN_MEM_CONFIG | VIR_DOMAIN_MEM_MAXIMUM;
- }
-
- if (!isActive && (flags & VIR_DOMAIN_MEM_LIVE)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("cannot set memory on an inactive domain"));
+ if (virDomainLiveConfigHelperMethod(cfg->caps, driver->xmlopt, vm, &flags,
+ &persistentDef) < 0)
goto endjob;
- }
-
- if (flags & VIR_DOMAIN_MEM_CONFIG) {
- if (!vm->persistent) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("cannot change persistent config of a transient
domain"));
- goto endjob;
- }
- if (!(persistentDef = virDomainObjGetPersistentDef(cfg->caps,
- driver->xmlopt,
- vm)))
- goto endjob;
- }
if (flags & VIR_DOMAIN_MEM_MAXIMUM) {
/* resize the maximum memory */
--
1.8.3.1