[libvirt] [patch] Add openvzDomainSetMemoryInternal

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

This patch is to set KMEMSIZE for OpenVZ.
This function is used for initializing the parameter of KMEMSIZE to start container. openvzDomainSetMemory should be left for another purpose so I added new one.

I think users should specify memory as kbyte ( or bigger ).

---
 src/openvz/openvz_driver.c |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c
index f64ad1e..5c1fefa 100644
--- a/src/openvz/openvz_driver.c
+++ b/src/openvz/openvz_driver.c
@@ -69,6 +69,7 @@ static int openvzGetMaxVCPUs(virConnectPtr conn, const char *type);
 static int openvzDomainGetMaxVcpus(virDomainPtr dom);
static int openvzDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus); static int openvzDomainSetVcpusInternal(virConnectPtr conn, virDomainObjPtr vm, unsigned int nvcpus); +static int openvzDomainSetMemoryInternal(virConnectPtr conn, virDomainObjPtr vm, unsigned long memory);

 static void openvzDriverLock(struct openvz_driver *driver)
 {
@@ -803,6 +804,14 @@ openvzDomainDefineXML(virConnectPtr conn, const char *xml)
         }
     }

+    if (vm->def->memory > 0) {
+ if (openvzDomainSetMemoryInternal(conn, vm, vm->def->memory) < 0) {
+            openvzError(conn, VIR_ERR_INTERNAL_ERROR,
+                     "%s", _("Could not set memory size"));
+             goto cleanup;
+        }
+    }
+
     dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
     if (dom)
         dom->id = -1;
@@ -1364,6 +1373,29 @@ static int openvzNumDefinedDomains (virConnectPtr conn) {
     return ninactive;
 }

+static int openvzDomainSetMemoryInternal(virConnectPtr conn, virDomainObjPtr vm,
+                                 unsigned long mem) {
+    struct openvz_driver *driver = conn->privateData;
+    char str_mem[16];
+    const char *prog[] = { VZCTL, "--quiet", "set", PROGRAM_SENTINAL,
+                           "--kmemsize", str_mem, "--save", NULL };
+
+    /* memory has to be changed its format from kbyte to byte */
+    snprintf( str_mem, sizeof(str_mem), "%lu", mem * 1024 );
+
+    openvzSetProgramSentinal(prog, vm->def->name);
+    if (virRun(conn, prog, NULL) < 0) {
+        openvzError(conn, VIR_ERR_INTERNAL_ERROR,
+               _("Could not exec %s"), VZCTL);
+        goto cleanup;
+    }
+
+    return 0;
+
+cleanup:
+    return -1;
+}
+
 static virDriver openvzDriver = {
     VIR_DRV_OPENVZ,
     "OPENVZ",
--
1.5.3.4


-----
Yuji Nishida
nishidy@xxxxxxxxxx

--
Libvir-list mailing list
Libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]