From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark McLoughlin Subject: [PATCH] [RESEND] Don't mount raw blktap disks for pygrub Date: Wed, 07 Mar 2007 16:29:15 +0000 Message-ID: <1173284955.19604.2.camel@blaa> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-up5Mn84HQSdPhlArn/r+" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel List-Id: xen-devel@lists.xenproject.org --=-up5Mn84HQSdPhlArn/r+ Content-Type: text/plain Content-Transfer-Encoding: 7bit (Doesn't seem to be in the staging tree; re-sending just in case it slipped through the cracks) Hi, Currently, we mount all blktap disks for pygrub so that it can boot from e.g. QCOW images. However, since pygrub will handle a raw image just fine without mounting through blktap, we shouldn't bother in that case. Also, it looks like XendDomainInfo.create_vbd() takes the full disk uname rather than the image path. Signed-off-by: Mark McLoughlin Cheers, Mark. --=-up5Mn84HQSdPhlArn/r+ Content-Disposition: inline; filename=xen-boot-tap-aio-disk.patch Content-Type: text/x-patch; name=xen-boot-tap-aio-disk.patch; charset=UTF-8 Content-Transfer-Encoding: 7bit diff -r 3ac19fda0bc2 tools/python/xen/util/blkif.py --- a/tools/python/xen/util/blkif.py Fri Mar 02 12:11:52 2007 +0000 +++ b/tools/python/xen/util/blkif.py Mon Mar 05 10:06:00 2007 +0000 @@ -66,16 +66,23 @@ def blkdev_segment(name): 'type' : 'Disk' } return val -def blkdev_uname_to_file(uname): - """Take a blkdev uname and return the corresponding filename.""" - fn = None +def _parse_uname(uname): + fn = taptype = None if uname.find(":") != -1: (typ, fn) = uname.split(":", 1) if typ == "phy" and not fn.startswith("/"): fn = "/dev/%s" %(fn,) if typ == "tap": - (typ, fn) = fn.split(":", 1) - return fn + (taptype, fn) = fn.split(":", 1) + return (fn, taptype) + +def blkdev_uname_to_file(uname): + """Take a blkdev uname and return the corresponding filename.""" + 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] def mount_mode(name): mode = None diff -r 3ac19fda0bc2 tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Fri Mar 02 12:11:52 2007 +0000 +++ b/tools/python/xen/xend/XendDomainInfo.py Mon Mar 05 10:30:06 2007 +0000 @@ -34,7 +34,7 @@ from types import StringTypes import xen.lowlevel.xc from xen.util import asserts -from xen.util.blkif import blkdev_uname_to_file +from xen.util.blkif import blkdev_uname_to_file, blkdev_uname_to_taptype from xen.util import security from xen.xend import balloon, sxp, uuid, image, arch, osdep @@ -1768,7 +1768,8 @@ class XendDomainInfo: disk = devinfo[1]['uname'] fn = blkdev_uname_to_file(disk) - mounted = devtype == 'tap' and not os.stat(fn).st_rdev + taptype = blkdev_uname_to_taptype(disk) + mounted = devtype == 'tap' and taptype != 'aio' and taptype != 'sync' and not os.stat(fn).st_rdev if mounted: # This is a file, not a device. pygrub can cope with a # file if it's raw, but if it's QCOW or other such formats @@ -1784,7 +1785,7 @@ class XendDomainInfo: from xen.xend import XendDomain dom0 = XendDomain.instance().privilegedDomain() - dom0._waitForDeviceUUID(dom0.create_vbd(vbd, fn)) + dom0._waitForDeviceUUID(dom0.create_vbd(vbd, disk)) fn = BOOTLOADER_LOOPBACK_DEVICE try: --=-up5Mn84HQSdPhlArn/r+ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --=-up5Mn84HQSdPhlArn/r+--