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

xen-devel

[Top] [All Lists]

[Xen-devel] [PATCH] make xm reboot work for vmx domain

To: <Xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] make xm reboot work for vmx domain
From: "Yu, Ke" <ke.yu@xxxxxxxxx>
Date: 2006年1月18日 16:43:26 +0800
Delivery-date: 2006年1月18日 08:51:03 +0000
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/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcYcCz+YExcwbwdsRZOkzFcQ3t7dGw==
Thread-topic: [PATCH] make xm reboot work for vmx domain
Hi Ewan, 
Would you please have a look on this patch? All the change is only
related to vmx domain. I have tested DomU and vmx domain reboot, both
work.
- Ke
# HG changeset patch
# User Yu Ke <ke.yu@xxxxxxxxx>
# Node ID 21bcf6e59fafb61e32521f54ff3890367cfc7e4d
# Parent 8d6edcf06f9b21cd7db68bdeb40c13ac3de60c12
This patch makes xm reboot/shutdown work for vmx doamin.
xm reboot failed due to two issues:
1. no mechanism to change XendDomainInfo.info to trigger domain reboot
2. ioemu blkif parameter is missing during reboot, thus device model
recreation will fail.
This patch fixes these issues by
1. introducing a xswatch to monitor the control/shutdown node. once
fired, it will change the XendDomainInfo.info to trigger domain reboot
2. saving the ioemu blkif parameter in xen store just like DomU does.
Signed-off-by: Yu Ke <ke.yu@xxxxxxxxx>
diff -r 8d6edcf06f9b -r 21bcf6e59faf tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py Tue Jan 17 16:09:03 2006 +0100
+++ b/tools/python/xen/xend/image.py Wed Jan 18 15:52:12 2006 +0800
@@ -25,6 +25,7 @@
 from xen.xend.XendError import VmError
 from xen.xend.XendLogging import log
 from xen.xend.server.netif import randomMAC
+from xen.xend.xenstore.xswatch import xswatch
 
 
 xc = xen.lowlevel.xc.xc()
@@ -228,6 +229,8 @@
 log.debug("vcpus = %d", self.vm.getVCpuCount())
 log.debug("acpi = %d", self.acpi)
 log.debug("apic = %d", self.apic)
+
+ self.register_shutdown_watch()
 
 return xc.vmx_build(dom = self.vm.getDomid(),
 image = self.kernel,
@@ -365,6 +368,7 @@
 return vncconnect
 
 def destroy(self):
+ self.unregister_shutdown_watch();
 import signal
 if not self.pid:
 return
@@ -398,6 +402,41 @@
 else:
 return 1 + ((mem_mb + 3) >> 2)
 
+ def register_shutdown_watch(self):
+ """ add xen store watch on control/shutdown """
+ self.shutdownWatch = xswatch(self.vm.dompath +
"/control/shutdown", \
+ self.vmx_shutdown)
+ log.debug("vmx shutdown watch registered")
+
+ def unregister_shutdown_watch(self):
+ """Remove the watch on the control/shutdown, if any. Nothrow
+ guarantee."""
+
+ try:
+ if self.shutdownWatch:
+ self.shutdownWatch.unwatch()
+ except:
+ log.exception("Unwatching vmx shutdown watch failed.")
+ self.shutdownWatch = None
+ log.debug("vmx shutdown watch unregistered")
+
+ def vmx_shutdown(self, _):
+ """ watch call back on node control/shutdown,
+ if node changed, this function will be called
+ """
+ from xen.xend.XendDomainInfo import shutdown_reasons
+ xd = xen.xend.XendDomain.instance()
+ vm = xd.domain_lookup( self.vm.getDomid() )
+
+ reason = vm.readDom('control/shutdown')
+ log.debug("vmx_shutdown fired, shutdown reason=%s", reason)
+ for x in shutdown_reasons.keys():
+ if shutdown_reasons[x] == reason:
+ vm.info['shutdown'] = 1
+ vm.info['shutdown_reason'] = x
+ vm.refreshShutdown(vm.info)
+
+ return 1 # Keep watching
 
 """Table of image handler classes for virtual machine images. Indexed
by
 image type.
diff -r 8d6edcf06f9b -r 21bcf6e59faf
tools/python/xen/xend/server/blkif.py
--- a/tools/python/xen/xend/server/blkif.py Tue Jan 17 16:09:03 2006
+0100
+++ b/tools/python/xen/xend/server/blkif.py Wed Jan 18 15:52:12 2006
+0800
@@ -42,10 +42,6 @@
 """@see DevController.getDeviceDetails"""
 
 dev = sxp.child_value(config, 'dev')
- if 'ioemu:' in dev:
- return (None,{},{})
-
- devid = blkif.blkdev_name_to_number(dev)
 
 (typ, params) = string.split(sxp.child_value(config, 'uname'),
':', 1)
 back = { 'dev' : dev,
@@ -54,7 +50,13 @@
 'mode' : sxp.child_value(config, 'mode', 'r')
 }
 
- front = { 'virtual-device' : "%i" % devid }
+ if 'ioemu:' in dev:
+ (dummy, dev1) = string.split(dev, ':', 1)
+ devid = blkif.blkdev_name_to_number(dev1)
+ front = {}
+ else:
+ devid = blkif.blkdev_name_to_number(dev)
+ front = { 'virtual-device' : "%i" % devid }
 
 return (devid, back, front)

Attachment: reboot4.patch
Description: reboot4.patch

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] make xm reboot work for vmx domain, Yu, Ke <=
Previous by Date: Re: [Xen-devel] sedf scheduler may cause a CPU fatal trap , Guillaume Thouvenin
Next by Date: [Xen-devel] Clean dirty code avoiding warning messages when compiling , Xue, Haifeng
Previous by Thread: [Xen-devel] Xen for Free BSD , Asam Bashir
Next by Thread: [Xen-devel] Clean dirty code avoiding warning messages when compiling , Xue, Haifeng
Indexes: [Date] [Thread] [Top] [All Lists]

Copyright ©, Citrix Systems Inc. All rights reserved. Legal and Privacy
Citrix This site is hosted by Citrix

AltStyle によって変換されたページ (->オリジナル) /