|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [PATCH] destroy stubdoms synchronously
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 <=
|
|
|
|
|