WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] destroy stubdoms synchronously

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] destroy stubdoms synchronously
From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Date: Wed, 14 Oct 2009 16:24:27 +0100
Delivery-date: Wed, 14 Oct 2009 08:24:26 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Alpine 2.00 (DEB 1167 2008-08-23)
Hi all,
this patch makes the destruction of stubdoms a synchronous event,
therefore it is no longer possible to run out of memory when rebooting a
guest because the stubdom of the old guest is always destroyed before
the creation of the new guest.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>


---



diff -r a5d1420fe4af stubdom/stubdom-dm
--- a/stubdom/stubdom-dm        Wed Oct 14 15:29:36 2009 +0100
+++ b/stubdom/stubdom-dm        Wed Oct 14 16:15:09 2009 +0100
@@ -81,12 +81,8 @@
 
 term() {
     kill %1
-    (
-       [ -n "$vncpid" ] && kill -9 $vncpid
-       rm ${stubdom_configdir}/$domname-dm
-       xm destroy $domname-dm
-    ) &
-    # We need to exit immediately so as to let xend do the commands above
+    [ -n "$vncpid" ] && kill -9 $vncpid
+    rm ${stubdom_configdir}/$domname-dm
     exit 0
 }
 
diff -r a5d1420fe4af tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Wed Oct 14 15:29:36 2009 +0100
+++ b/tools/python/xen/xend/XendDomainInfo.py   Wed Oct 14 16:15:09 2009 +0100
@@ -855,12 +855,10 @@
         dev_config = pci_convert_sxp_to_dict(dev_sxp)
         dev = dev_config['devs'][0]
 
-        dom_list = xstransact.List('/local/domain')
-        for d in dom_list:
-            target = xstransact.Read('/local/domain/' + d + '/target')
-            if target is not None and int(target) is self.domid :
-                from xen.xend import XendDomain
-                
XendDomain.instance().domain_lookup(int(d)).pci_device_configure(dev_sxp[:])
+        stubdomid = self.getStubdomDomid()
+        if stubdomid is not None :
+            from xen.xend import XendDomain
+            
XendDomain.instance().domain_lookup(stubdomid).pci_device_configure(dev_sxp[:])
 
         # Do HVM specific processing
         if self.info.is_hvm():
@@ -1810,6 +1808,14 @@
     def getDomid(self):
         return self.domid
 
+    def getStubdomDomid(self):
+        dom_list = xstransact.List('/local/domain')
+        for d in dom_list:
+            target = xstransact.Read('/local/domain/' + d + '/target')
+            if target is not None and int(target) is self.domid :
+                return int(d)
+        return None
+
     def setName(self, name, to_store = True):
         self._checkName(name)
         self.info['name_label'] = name
diff -r a5d1420fe4af tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py    Wed Oct 14 15:29:36 2009 +0100
+++ b/tools/python/xen/xend/image.py    Wed Oct 14 16:15:09 2009 +0100
@@ -591,7 +591,11 @@
             return
         self.sentinel_lock.acquire()
         try:
-            if self.pid:
+            stubdomid = self.vm.getStubdomDomid()
+            if stubdomid is not None :
+                from xen.xend import XendDomain
+                XendDomain.instance().domain_destroy(stubdomid)
+            elif self.pid:
                 try:
                     os.kill(self.pid, signal.SIGHUP)
                 except OSError, exn:

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] destroy stubdoms synchronously, Stefano Stabellini <=