]> xenbits.xensource.com Git - libvirt.git/commitdiff
setmem: add VIR_DOMAIN_MEM_CURRENT support to qemu
authorTaku Izumi <izumi.taku@jp.fujitsu.com>
Wed, 23 Mar 2011 05:48:24 +0000 (14:48 +0900)
committerEric Blake <eblake@redhat.com>
Thu, 7 Apr 2011 23:13:56 +0000 (17:13 -0600)
This patch adds virDomainSetMemoryFlags(,,VIR_DOMAIN_MEM_CURRENT) support
code to qemu driver.

Also, change virDomainObjIsActive to return bool, given its usage.

Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com>
src/conf/domain_conf.h
src/qemu/qemu_driver.c

index 10e73cbc1953a95a93f1a010cdb00fc9b3cc2b68..95bd11e8066ba13386797e17f789c33639d7b476 100644 (file)
@@ -1172,7 +1172,7 @@ struct _virDomainObjList {
     virHashTable *objs;
 };
 
-static inline int
+static inline bool
 virDomainObjIsActive(virDomainObjPtr dom)
 {
     return dom->def->id != -1;
index a84780b33df86959d831a8b7ba74d04e67896cbe..6a0bf2422bb9a5698c365ccc3c4a4ba712c09d68 100644 (file)
@@ -1577,15 +1577,11 @@ static int qemudDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem,
     virDomainObjPtr vm;
     virDomainDefPtr persistentDef = NULL;
     int ret = -1, r;
+    bool isActive;
 
     virCheckFlags(VIR_DOMAIN_MEM_LIVE |
                   VIR_DOMAIN_MEM_CONFIG, -1);
 
-    if ((flags & (VIR_DOMAIN_MEM_LIVE | VIR_DOMAIN_MEM_CONFIG)) == 0) {
-        qemuReportError(VIR_ERR_INVALID_ARG,
-                        _("invalid flag combination: (0x%x)"), flags);
-    }
-
     qemuDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
     qemuDriverUnlock(driver);
@@ -1606,7 +1602,16 @@ static int qemudDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem,
     if (qemuDomainObjBeginJob(vm) < 0)
         goto cleanup;
 
-    if (!virDomainObjIsActive(vm) && (flags & VIR_DOMAIN_MEM_LIVE)) {
+    isActive = virDomainObjIsActive(vm);
+
+    if (flags == VIR_DOMAIN_MEM_CURRENT) {
+        if (isActive)
+            flags = VIR_DOMAIN_MEM_LIVE;
+        else
+            flags = VIR_DOMAIN_MEM_CONFIG;
+    }
+
+    if (!isActive && (flags & VIR_DOMAIN_MEM_LIVE)) {
         qemuReportError(VIR_ERR_OPERATION_INVALID,
                         "%s", _("domain is not running"));
         goto endjob;