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

[Xen-changelog] [xen-unstable] Do not update the PV_ variables with the

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Do not update the PV_ variables with the values outputted by the bootloader --
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 29 Dec 2006 14:20:14 -0800
Delivery-date: Fri, 29 Dec 2006 14:21:18 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Ewan Mellor <ewan@xxxxxxxxxxxxx>
# Date 1167319579 0
# Node ID 5c268a24e44bddc1c21a8a47598b78c076f99178
# Parent  51ea6202c4f28dca1528f82f4e4e7e45f611bb19
Do not update the PV_ variables with the values outputted by the bootloader --
this gets us into all sorts of trouble when Xend is restarted and then the
domain is rebooted, because we expect to be able to handle the PV_kernel == ''
case by defaulting to pygrub.

Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx>
---
 tools/python/xen/xend/XendConfig.py     |   23 ++++++++++++-----------
 tools/python/xen/xend/XendDomainInfo.py |    2 +-
 tools/python/xen/xend/image.py          |   15 ++++++++++-----
 3 files changed, 23 insertions(+), 17 deletions(-)

diff -r 51ea6202c4f2 -r 5c268a24e44b tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py       Thu Dec 28 15:23:31 2006 +0000
+++ b/tools/python/xen/xend/XendConfig.py       Thu Dec 28 15:26:19 2006 +0000
@@ -1099,21 +1099,13 @@ class XendConfig(dict):
 
         return image
 
-    def update_with_image_sxp(self, image_sxp):
+    def update_with_image_sxp(self, image_sxp, bootloader = False):
         # Convert Legacy "image" config to Xen API PV_*
         # configuration
         log.debug("update_with_image_sxp(%s)" % scrub_password(image_sxp))
 
-        self['PV_kernel'] = sxp.child_value(image_sxp, 'kernel','')
-        self['PV_ramdisk'] = sxp.child_value(image_sxp, 'ramdisk','')
-        if not self['PV_bootloader'] \
-               and sxp.child_value(image_sxp, 'kernel', ''):
-            # We've set PV_kernel using the call above, so now we need to set
-            # PV_bootloader as well, otherwise we're going to do the wrong
-            # thing on reboot.
-            self['PV_bootloader'] = 'pygrub'
         kernel_args = sxp.child_value(image_sxp, 'args', '')
-        
+
         # attempt to extract extra arguments from SXP config
         arg_ip = sxp.child_value(image_sxp, 'ip')
         if arg_ip and not re.search(r'ip=[^ ]+', kernel_args):
@@ -1121,7 +1113,16 @@ class XendConfig(dict):
         arg_root = sxp.child_value(image_sxp, 'root')
         if arg_root and not re.search(r'root=', kernel_args):
             kernel_args += ' root=%s' % arg_root
-        self['PV_args'] = kernel_args
+
+        if bootloader:
+            self['_temp_using_bootloader'] = '1'
+            self['_temp_kernel'] = sxp.child_value(image_sxp, 'kernel','')
+            self['_temp_ramdisk'] = sxp.child_value(image_sxp, 'ramdisk','')
+            self['_temp_args'] = kernel_args
+        else:
+            self['PV_kernel'] = sxp.child_value(image_sxp, 'kernel','')
+            self['PV_ramdisk'] = sxp.child_value(image_sxp, 'ramdisk','')
+            self['PV_args'] = kernel_args
 
         # Store image SXP in python dictionary format
         image = {}
diff -r 51ea6202c4f2 -r 5c268a24e44b tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Thu Dec 28 15:23:31 2006 +0000
+++ b/tools/python/xen/xend/XendDomainInfo.py   Thu Dec 28 15:26:19 2006 +0000
@@ -1616,7 +1616,7 @@ class XendDomainInfo:
                 log.error(msg)
                 raise VmError(msg)
         
-            self.info.update_with_image_sxp(blcfg)
+            self.info.update_with_image_sxp(blcfg, True)
 
 
     # 
diff -r 51ea6202c4f2 -r 5c268a24e44b tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py    Thu Dec 28 15:23:31 2006 +0000
+++ b/tools/python/xen/xend/image.py    Thu Dec 28 15:26:19 2006 +0000
@@ -68,7 +68,7 @@ class ImageHandler:
     def __init__(self, vm, vmConfig, imageConfig, deviceConfig):
         self.vm = vm
 
-        self.bootloader = None
+        self.bootloader = False
         self.kernel = None
         self.ramdisk = None
         self.cmdline = None
@@ -77,10 +77,15 @@ class ImageHandler:
 
     def configure(self, vmConfig, imageConfig, _):
         """Config actions common to all unix-like domains."""
-        self.bootloader = vmConfig['PV_bootloader']
-        self.kernel = vmConfig['PV_kernel']
-        self.cmdline = vmConfig['PV_args']
-        self.ramdisk = vmConfig['PV_ramdisk']
+        if '_temp_using_bootloader' in vmConfig:
+            self.bootloader = True
+            self.kernel = vmConfig['_temp_kernel']
+            self.cmdline = vmConfig['_temp_args']
+            self.ramdisk = vmConfig['_temp_ramdisk']
+        else:
+            self.kernel = vmConfig['PV_kernel']
+            self.cmdline = vmConfig['PV_args']
+            self.ramdisk = vmConfig['PV_ramdisk']
         self.vm.storeVm(("image/ostype", self.ostype),
                         ("image/kernel", self.kernel),
                         ("image/cmdline", self.cmdline),

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Do not update the PV_ variables with the values outputted by the bootloader --, Xen patchbot-unstable <=