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] xend: improve psudeo-bootloader support f

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] xend: improve psudeo-bootloader support for external block scripts
From: Xen patchbot-unstable <patchbot@xxxxxxx>
Date: Wed, 19 Jan 2011 02:20:23 -0800
Delivery-date: Wed, 19 Jan 2011 02:21:49 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/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 Jim Fehlig <jfehlig@xxxxxxxxxx>
# Date 1295371404 0
# Node ID d1631540bcc4d369d7e7ec1d87e54e1a8f5d5f78
# Parent  d2a1e1e126672b5e10e5d20aa229937d4845db96
xend: improve psudeo-bootloader support for external block scripts

Userspace tools support external block scripts (e.g. block-drbd
provided by drbd project).  The psuedo-bootloader setup code in
xend has a few limitations wrt external block scripts, which this
patch addresses.

blkif.py: parse_uname() utility function should be able to parse a
disk specifier understood by the rest of the tools.

XendDomainInfo.py: Block devices using external block scripts must
be attached to dom0 before running the psuedo-bootloader.

Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxxxx>
Tested-by: Shriram Rajagopalan <rshriram@xxxxxxxxx>
Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
 tools/python/xen/util/blkif.py          |   13 ++++++++-----
 tools/python/xen/xend/XendDomainInfo.py |   17 +++++++++++++----
 2 files changed, 21 insertions(+), 9 deletions(-)

diff -r d2a1e1e12667 -r d1631540bcc4 tools/python/xen/util/blkif.py
--- a/tools/python/xen/util/blkif.py    Tue Jan 18 17:20:55 2011 +0000
+++ b/tools/python/xen/util/blkif.py    Tue Jan 18 17:23:24 2011 +0000
@@ -66,8 +66,8 @@ def blkdev_segment(name):
                 'type'         : 'Disk' }
     return val
 
-def _parse_uname(uname):
-    fn = taptype = None
+def parse_uname(uname):
+    fn = typ = taptype = None
     if uname.find(":") != -1:
         (typ, fn) = uname.split(":", 1)
 
@@ -76,15 +76,18 @@ def _parse_uname(uname):
                
         if typ in ("tap", "tap2"):
             (taptype, fn) = fn.split(":", 1)
-    return (fn, taptype)
+            if taptype in ("tapdisk", "ioemu"):
+                (taptype, fn) = fn.split(":", 1)
+    return (fn, (typ,taptype))
+
 
 def blkdev_uname_to_file(uname):
     """Take a blkdev uname and return the corresponding filename."""
-    return _parse_uname(uname)[0]
+    return parse_uname(uname)[0]
 
 def blkdev_uname_to_taptype(uname):
     """Take a blkdev uname and return the blktap type."""
-    return _parse_uname(uname)[1]
+    return parse_uname(uname)[1]
 
 def mount_mode(name):
     mode = None
diff -r d2a1e1e12667 -r d1631540bcc4 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Tue Jan 18 17:20:55 2011 +0000
+++ b/tools/python/xen/xend/XendDomainInfo.py   Tue Jan 18 17:23:24 2011 +0000
@@ -38,7 +38,7 @@ from types import StringTypes
 
 import xen.lowlevel.xc
 from xen.util import asserts, auxbin, mkdir
-from xen.util.blkif import blkdev_uname_to_file, blkdev_uname_to_taptype
+from xen.util.blkif import parse_uname
 import xen.util.xsm.xsm as security
 from xen.util import xsconstants
 from xen.util import mkdir
@@ -3248,9 +3248,18 @@ class XendDomainInfo:
             devtype = devinfo[0]
             disk = devinfo[1]['uname']
 
-            fn = blkdev_uname_to_file(disk)
-            taptype = blkdev_uname_to_taptype(disk)
-            mounted = devtype in ['tap', 'tap2'] and taptype != 'aio' and 
taptype != 'sync' and not os.stat(fn).st_rdev
+            (fn, types) = parse_uname(disk)
+            def _shouldMount(types):
+                if types[0] in ('file', 'phy'):
+                    return False
+                if types[0] in ('tap', 'tap2'):
+                    if types[1] in ('aio', 'sync'):
+                        return False
+                    else:
+                        return True
+                return os.access('/etc/xen/scripts/block-%s' % types[0], 
os.X_OK)
+
+            mounted = _shouldMount(types)
             mounted_vbd_uuid = 0
             if mounted:
                 # This is a file, not a device.  pygrub can cope with a

_______________________________________________
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] xend: improve psudeo-bootloader support for external block scripts, Xen patchbot-unstable <=