aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-06-10 09:50:02 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-06-10 09:50:02 +0100
commitbc9428767c717bba9eabd06a2620712a9b9689c2 (patch)
tree688643137e404de5ea148df77790afe07c2f606c
parent2223a8c9fe2a028e2e4ba3e715d2cbbe2c947580 (diff)
downloadxen-bc9428767c717bba9eabd06a2620712a9b9689c2.tar.gz
xen-bc9428767c717bba9eabd06a2620712a9b9689c2.tar.bz2
xen-bc9428767c717bba9eabd06a2620712a9b9689c2.zip
xend: A few blktap2 fixes
1. Bug fix for error: "Error: Device /dev/xvdp (51952, tap2) is already connected." (xenstore does not clean after DomU stoped) 2. Bug fix for error: "File 'vhd:/path/.../disk.img' doesn't exist." (not correct parsing) 3. Bug fix for error: "Error: Device 51952 not connected" (in config file for DomU we should be use prefix "tap2:tapdisk:xxx" for devices from (aio, ram, qcow, vhd, remus) or "tap:tapdisk:xxx" for devices from (sync, vmdk, qcow2, ioemu)) 4. Bug fix for error: "Disk is not accessible" (if use 'tap2'-device type, then '/dev/xpvd' may not be accessible immediately after its creation) Signed-off-by: eXeC001er <execooler@gmail.com> xen-unstable changeset: 21541:7ff0e885b5c3 xen-unstable date: Mon Jun 07 07:19:43 2010 +0100
-rw-r--r--tools/python/xen/util/blkif.py2
-rw-r--r--tools/python/xen/xend/XendBootloader.py13
-rw-r--r--tools/python/xen/xend/XendDomainInfo.py2
3 files changed, 11 insertions, 6 deletions
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 a60342c668..15595ab536 100644
--- a/tools/python/xen/xend/XendDomainInfo.py
+++ b/tools/python/xen/xend/XendDomainInfo.py
@@ -3269,7 +3269,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"