blktap does not support the insert / eject commands, and so is not
suitable for cd-roms.
This fixes the bug where libxl uses tapdisk as a cdrom back-end, causing
subsequent eject / insert commands to fail.
Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
CC: Fabio Fantoni <fabio.fantoni@heliman.it>
CC: Ian Jackson <ian.jackson@citrix.com>
CC: Stefano Stabellini <stefano.stabellini@citrix.com>
CC: Ian Campbell <ian.campbell@citrix.com>
---
tools/libxl/libxl_device.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
index a826ece..a5cf446 100644
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -178,6 +178,12 @@ static int disk_try_backend(disk_try_backend_args *a,
case LIBXL_DISK_BACKEND_TAP:
if (a->disk->script) goto bad_script;
+ if (a->disk->is_cdrom) {
+ LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Disk vdev=%s, backend
tap"
+ " unsuitable for cdroms",
+ a->disk->vdev);
+ return 0;
+ }
if (!libxl__blktap_enabled(a->gc)) {
LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Disk vdev=%s, backend
tap"
" unsuitable because blktap not available",
--
1.7.9.5
On 02/05/13 12:03, George Dunlap wrote:> blktap does not support the insert / eject commands, and so is not > suitable for cd-roms. > > This fixes the bug where libxl uses tapdisk as a cdrom back-end, causing > subsequent eject / insert commands to fail.This is also a candidate for backport to 4.2, as the same issue is present there. -George
Il 02/05/2013 13:03, George Dunlap ha scritto:> blktap does not support the insert / eject commands, and so is not > suitable for cd-roms. > > This fixes the bug where libxl uses tapdisk as a cdrom back-end, causing > subsequent eject / insert commands to fail. > > Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>Tested-by: Fabio Fantoni <fabio.fantoni@m2r.biz>> CC: Fabio Fantoni <fabio.fantoni@heliman.it> > CC: Ian Jackson <ian.jackson@citrix.com> > CC: Stefano Stabellini <stefano.stabellini@citrix.com> > CC: Ian Campbell <ian.campbell@citrix.com> > --- > tools/libxl/libxl_device.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c > index a826ece..a5cf446 100644 > --- a/tools/libxl/libxl_device.c > +++ b/tools/libxl/libxl_device.c > @@ -178,6 +178,12 @@ static int disk_try_backend(disk_try_backend_args *a, > case LIBXL_DISK_BACKEND_TAP: > if (a->disk->script) goto bad_script; > > + if (a->disk->is_cdrom) { > + LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Disk vdev=%s, backend tap" > + " unsuitable for cdroms", > + a->disk->vdev); > + return 0; > + } > if (!libxl__blktap_enabled(a->gc)) { > LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Disk vdev=%s, backend tap" > " unsuitable because blktap not available",Tested with xen unstable and qemu upstream, domU windows 7 pro 64 bit with GPLPV and it is working! :-) Thanks! I waited cd hotswap working for a long time. The only thing to fix it seems the help that actually shows: xl cd-insert --help Usage: xl [-vfN] cd-insert <Domain> <VirtualDevice> <type:path> While the command is working removing "type:", for example: xl cd-insert W7 hdb /mnt/vm/iso/Clonezilla.iso is working.
George Dunlap writes ("[PATCH] Don''t use tapdisk for
cd-roms"):> blktap does not support the insert / eject commands, and so is not
> suitable for cd-roms.
>
> This fixes the bug where libxl uses tapdisk as a cdrom back-end, causing
> subsequent eject / insert commands to fail.
>
> Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
> CC: Fabio Fantoni <fabio.fantoni@heliman.it>
> CC: Ian Jackson <ian.jackson@citrix.com>
> CC: Stefano Stabellini <stefano.stabellini@citrix.com>
> CC: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>