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>