diff --git a/tools/python/xen/util/blkif.py b/tools/python/xen/util/blkif.py index cbe76b613f..ca5a3081b5 100644 --- a/tools/python/xen/util/blkif.py +++ b/tools/python/xen/util/blkif.py @@ -87,7 +87,7 @@ def _parse_uname(uname): fn = "/dev/%s" %(fn,) if typ in ("tap", "tap2"): - (taptype, fn) = fn.split(":", 1) + (taptype, fn) = fn.split(":", 2)[1:3] return (fn, taptype) def blkdev_uname_to_file(uname): diff --git a/tools/python/xen/xend/XendBootloader.py b/tools/python/xen/xend/XendBootloader.py index 0cef917358..3824d5ac17 100644 --- a/tools/python/xen/xend/XendBootloader.py +++ b/tools/python/xen/xend/XendBootloader.py @@ -38,10 +38,15 @@ def bootloader(blexec, disk, dom, quiet = False, blargs = '', kernel = '', msg = "Bootloader isn't executable" log.error(msg) raise VmError(msg) - if not os.access(disk, os.R_OK): - msg = "Disk isn't accessible" - log.error(msg) - raise VmError(msg) + attempt = 0 + while True: + if not os.access(disk, os.R_OK) and attempt > 3: + msg = "Disk isn't accessible" + log.error(msg) + raise VmError(msg) + else: + break + attempt = attempt + 1 if os.uname()[0] == "NetBSD" and disk.startswith('/dev/'): disk = disk.replace("/dev/", "/dev/r") diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py index 0c01e7779e..0c9f2e70c5 100644 --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -3299,7 +3299,7 @@ class XendDomainInfo: log.info("Unmounting %s from %s." % (fn, BOOTLOADER_LOOPBACK_DEVICE)) - dom0.destroyDevice('tap', BOOTLOADER_LOOPBACK_DEVICE) + dom0.destroyDevice(devtype, BOOTLOADER_LOOPBACK_DEVICE, force = True) if blcfg is None: msg = "Had a bootloader specified, but can't find disk"