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] xend: Fix block device type check

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] xend: Fix block device type check
From: Kevin Wolf <kwolf@xxxxxxx>
Date: Thu, 29 Jan 2009 14:01:12 +0100
Delivery-date: Thu, 29 Jan 2009 04:55:52 -0800
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: Thunderbird 2.0.0.17 (X11/20080922)
Since changeset 17617 the block device protocols are checked to be
either file or phy. This has later been fixed to also include tap. This
is still not a correct check as there can be arbitrary additional
protocols. Before this check was added you could have a block-xyz
hotplug script and xyz would work as a protocol, now it is refused. An
example for this mechanism is the block-nbd script which is included in
the tree.

This patch changes the check to allow file, phy, tap and all protocol
names for which a block-$protocol hotplug script exists. This should fix
the last regressions introduced by the check.

Signed-off-by: Kevin Wolf <kwolf@xxxxxxx>
Index: xen-unstable.hg/tools/python/xen/xend/server/blkif.py
===================================================================
--- xen-unstable.hg.orig/tools/python/xen/xend/server/blkif.py
+++ xen-unstable.hg/tools/python/xen/xend/server/blkif.py
@@ -18,6 +18,7 @@
 
 import re
 import string
+import os
 
 from xen.util import blkif
 import xen.util.xsm.xsm as security
@@ -35,6 +36,13 @@ class BlkifController(DevController):
         """
         DevController.__init__(self, vm)
 
+    def _isValidProtocol(self, protocol):
+        if protocol in ('phy', 'file', 'tap'):
+            return True
+
+        return os.access('/etc/xen/scripts/block-%s' % protocol, os.X_OK)
+
+
     def getDeviceDetails(self, config):
         """@see DevController.getDeviceDetails"""
         uname = config.get('uname', '')
@@ -56,10 +64,8 @@ class BlkifController(DevController):
         else:
             try:
                 (typ, params) = string.split(uname, ':', 1)
-                if typ not in ('phy', 'file', 'tap'):
-                    raise VmError(
-                        'Block device must have "phy", "file" or "tap" '
-                        'specified to type')
+                if not self._isValidProtocol(typ):
+                    raise VmError('Block device type "%s" is invalid.' % typ)
             except ValueError:
                 raise VmError(
                     'Block device must have physical details specified')
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] xend: Fix block device type check, Kevin Wolf <=