[libvirt] [PATCH 2/3] setmem: add virDomainSetMemroyFlags(, , VIR_DOMAIN_MEM_CURRENT) support to qemu driver

Eric Blake eblake at redhat.com
Thu Apr 7 23:23:45 UTC 2011


Long subject line.  'git shortlog -20' should give you a feel for how to
shorten this; I went with:

setmem: add VIR_DOMAIN_MEM_CURRENT support to qemu

On 03/22/2011 11:48 PM, Taku Izumi wrote:
> 
> This patch adds virDomainSetMemroyFlags(,,VIR_DOMAIN_MEM_CURRENT) support

s/Memroy/Memory/

> code to qemu driver.
> 
> Signed-off-by: Taku Izumi <izumi.taku at jp.fujitsu.com>
> ---
>  src/qemu/qemu_driver.c |   18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
> 
> Index: libvirt/src/qemu/qemu_driver.c
> ===================================================================
> --- libvirt.orig/src/qemu/qemu_driver.c
> +++ libvirt/src/qemu/qemu_driver.c
> @@ -1575,16 +1575,11 @@ static int qemudDomainSetMemoryFlags(vir
>      qemuDomainObjPrivatePtr priv;
>      virDomainObjPtr vm;
>      virDomainDefPtr persistentDef = NULL;
> -    int ret = -1, r;
> +    int ret = -1, r, isActive;

Hmm, based on the name, I would have guessed isActive is better as a bool.

> 
>      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);
> @@ -1605,7 +1600,16 @@ static int qemudDomainSetMemoryFlags(vir
>      if (qemuDomainObjBeginJob(vm) < 0)
>          goto cleanup;
> 
> -    if (!virDomainObjIsActive(vm) && (flags & VIR_DOMAIN_MEM_LIVE)) {
> +    isActive = virDomainObjIsActive(vm);

Surprisingly, virDomainObjIsActive returns int instead of bool.  Well,
no longer :)

> +
> +    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;

I squashed this in, then pushed:

diff --git i/src/conf/domain_conf.h w/src/conf/domain_conf.h
index 10e73cb..95bd11e 100644
--- i/src/conf/domain_conf.h
+++ w/src/conf/domain_conf.h
@@ -1172,7 +1172,7 @@ struct _virDomainObjList {
     virHashTable *objs;
 };

-static inline int
+static inline bool
 virDomainObjIsActive(virDomainObjPtr dom)
 {
     return dom->def->id != -1;
diff --git i/src/qemu/qemu_driver.c w/src/qemu/qemu_driver.c
index c0e706c..6a0bf24 100644
--- i/src/qemu/qemu_driver.c
+++ w/src/qemu/qemu_driver.c
@@ -1576,7 +1576,8 @@ static int qemudDomainSetMemoryFlags(virDomainPtr
dom, unsigned long newmem,
     qemuDomainObjPrivatePtr priv;
     virDomainObjPtr vm;
     virDomainDefPtr persistentDef = NULL;
-    int ret = -1, r, isActive;
+    int ret = -1, r;
+    bool isActive;

     virCheckFlags(VIR_DOMAIN_MEM_LIVE |
                   VIR_DOMAIN_MEM_CONFIG, -1);


-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110407/e1f5f516/attachment-0001.sig>


More information about the libvir-list mailing list