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

[Xen-changelog] [xen-unstable] Fix xm vcpu-pin for inactive managed domains



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1204542573 0
# Node ID a142ddb40b1c77d6b8726a2b57ac324ab74c6d06
# Parent  990eb630033a53d5c319376c022283b192890882
Fix xm vcpu-pin for inactive managed domains

We cannot currently change cpu affinity definitions of inactive
managed domains by xm vcpu-pin command. This patch enables changing
cpu affinity definitions of inactive managed domains. However, we
cannot change cpu affinity definitions to each vcpu because we cannot
currently define cpu affinity definitions to each vcpu to domain
configuration definitions.  Therefore, we need to specify 'all' to
VCPU argument of xm vcpu-pin command.

Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
---
 tools/python/xen/xend/XendDomain.py     |   24 +++++++++++++++++-------
 tools/python/xen/xend/XendDomainInfo.py |    6 ++++++
 2 files changed, 23 insertions(+), 7 deletions(-)

diff -r 990eb630033a -r a142ddb40b1c tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Mon Mar 03 11:08:10 2008 +0000
+++ b/tools/python/xen/xend/XendDomain.py       Mon Mar 03 11:09:33 2008 +0000
@@ -1364,13 +1364,23 @@ class XendDomain:
        
         # set the same cpumask for all vcpus
         rc = 0
-        for v in vcpus:
-            try:
-                rc = xc.vcpu_setaffinity(dominfo.getDomid(), int(v), cpumap)
-            except Exception, ex:
-                log.exception(ex)
-                raise XendError("Cannot pin vcpu: %s to cpu: %s - %s" % \
-                                (v, cpumap, str(ex)))
+        if dominfo._stateGet() in (DOM_STATE_RUNNING, DOM_STATE_PAUSED):
+            for v in vcpus:
+                try:
+                    rc = xc.vcpu_setaffinity(dominfo.getDomid(), int(v), 
cpumap)
+                except Exception, ex:
+                    log.exception(ex)
+                    raise XendError("Cannot pin vcpu: %s to cpu: %s - %s" % \
+                                    (v, cpumap, str(ex)))
+        else:
+            # FIXME: if we could define cpu affinity definitions to
+            #        each vcpu, reprogram the following processing.
+            if str(vcpu).lower() != "all":
+                raise XendError("Must specify 'all' to VCPU "
+                                "for inactive managed domains")
+            dominfo.setCpus(cpumap)
+            self.managed_config_save(dominfo)
+
         return rc
 
     def domain_cpu_sedf_set(self, domid, period, slice_, latency, extratime,
diff -r 990eb630033a -r a142ddb40b1c tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Mon Mar 03 11:08:10 2008 +0000
+++ b/tools/python/xen/xend/XendDomainInfo.py   Mon Mar 03 11:09:33 2008 +0000
@@ -1394,6 +1394,12 @@ class XendDomainInfo:
     def setResume(self, isresume):
         self._resume = isresume
 
+    def getCpus(self):
+        return self.info['cpus']
+
+    def setCpus(self, cpumap):
+        self.info['cpus'] = cpumap
+
     def getCap(self):
         return self.info['vcpus_params']['cap']
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.