mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
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>
This commit is contained in:
1 parent
16c22751fa
commit
ffa84dc13b
3 files changed
+11
-6
No files matched your search
@@ -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):
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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"
|
||||
|
||||