[PATCH 7/8] cputune: support cputune for xend driver

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

 



Not sure if it's the correct way to add cputune xml for xend driver,
and besides, seems "xm driver" and "xen hypervisor" also support
vcpu affinity, do we need to add support for them too?
---
 src/xen/xend_internal.c |   30 ++++++++++++++++++++++++++----
 1 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
index bfaed65..8859373 100644
--- a/src/xen/xend_internal.c
+++ b/src/xen/xend_internal.c
@@ -2233,11 +2233,12 @@ xenDaemonDomainSetVcpusFlags(virDomainPtr domain, unsigned int vcpus,
  */
 int
 xenDaemonDomainPinVcpu(virDomainPtr domain, unsigned int vcpu,
-                     unsigned char *cpumap, int maplen)
+                       unsigned char *cpumap, int maplen)
 {
     char buf[VIR_UUID_BUFLEN], mapstr[sizeof(cpumap_t) * 64];
-    int i, j;
+    int i, j, ret;
     xenUnifiedPrivatePtr priv;
+    virDomainDefPtr def = NULL;

     if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL)
      || (cpumap == NULL) || (maplen < 1) || (maplen > (int)sizeof(cpumap_t))) {
@@ -2265,8 +2266,29 @@ xenDaemonDomainPinVcpu(virDomainPtr domain, unsigned int vcpu,
         mapstr[strlen(mapstr) - 1] = 0;

     snprintf(buf, sizeof(buf), "%d", vcpu);
-    return(xend_op(domain->conn, domain->name, "op", "pincpu", "vcpu", buf,
-                  "cpumap", mapstr, NULL));
+
+    ret = xend_op(domain->conn, domain->name, "op", "pincpu", "vcpu", buf,
+                  "cpumap", mapstr, NULL);
+
+    if (!(def = xenDaemonDomainFetch(domain->conn,
+                                     domain->id,
+                                     domain->name,
+                                     NULL)))
+        goto cleanup;
+
+    if (ret == 0) {
+        if (virDomainVcpupinAdd(def, cpumap, maplen, vcpu) < 0) {
+            virXendError(VIR_ERR_INTERNAL_ERROR,
+                         "%s", _("failed to add vcpupin xml entry"));
+            return (-1);
+        }
+    }
+
+    return ret;
+
+cleanup:
+    virDomainDefFree(def);
+    return -1;
 }

 /**
--
1.7.4

--
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]