From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60825) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aH4HC-0003s4-Gq for qemu-devel@nongnu.org; Thu, 07 Jan 2016 01:42:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aH4H8-0003xZ-AU for qemu-devel@nongnu.org; Thu, 07 Jan 2016 01:42:26 -0500 Received: from mx1.redhat.com ([209.132.183.28]:53193) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aH4H8-0003xR-4y for qemu-devel@nongnu.org; Thu, 07 Jan 2016 01:42:22 -0500 References: <81110f82ab57277a4200d66da5c6d438f61aef93.1452076543.git.mprivozn@redhat.com> <20160107044858.GB12971@stefanha-x1.localdomain> From: Michal Privoznik Message-ID: <568E08CB.5050007@redhat.com> Date: Thu, 7 Jan 2016 07:42:19 +0100 MIME-Version: 1.0 In-Reply-To: <20160107044858.GB12971@stefanha-x1.localdomain> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] virtio-blk: Allow startup of empty cdroms List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: qemu-devel@nongnu.org On 07.01.2016 05:48, Stefan Hajnoczi wrote: > On Wed, Jan 06, 2016 at 11:35:43AM +0100, Michal Privoznik wrote: >> If you have an empty IDE cdrom we will start just fine: >> >> -drive if=none,id=drive-ide0-0-0,readonly=on >> -device ide-cd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 >> >> However, that's not the case with virtio disk: >> >> -drive if=none,media=cdrom,id=drive-virtio-disk1,readonly=on >> -device virtio-blk-pci,scsi=off,bus=pci.2,addr=0x2,drive=drive-virtio-disk1,id=virtio-disk1 >> >> One will get the following error: >> >> qemu-system-x86_64: -device virtio-blk-pci,scsi=off,bus=pci.2,addr=0x2,drive=drive-virtio-disk1,id=virtio-disk1: Device needs media, but drive is empty >> >> The error comes from virtio_blk_device_realize() where we check >> if virtio block device has a media inserted. This should, >> however, be not required for cdroms. >> >> Signed-off-by: Michal Privoznik >> --- >> hw/block/virtio-blk.c | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) > > virtio-blk doesn't do CD-ROM emulation but it supports read-only block > devices. The difference is that read-only block devices don't offer the > features that CD-ROMs support like media status and tray eject. > > Also, virtio-blk does not support media change. If we allow it to start > with an empty disk, is there an expectation that media can be changed > later? > > In order to support empty media that can later be inserted virtio-blk.c > needs to implement BlockDevOps->change_media_cb() to notify the guest. > You'd need to check guest whether existing guest drivers handle a virtio > configuration interrupt properly (i.e. by invalidating cached pages from > the block devices). > > Is this patch supposed to make virtio-blk support CD-ROMs? In that case > a lot more work is necessary and it's probably better to use virtio-scsi > instead. Yeah, I realized I was aiming at CD-ROMs. But I'm not that familiar with qemu to supply proper patch. It's just that after 39c4ae941ed992a3bb5 I had to fix libvirt, because it was passing format= even for sourceless devices. But while testing it I've noticed that virtio CD-ROMs still don't work. This was my attempt to fix it. Well, maybe one day :) Thanks! Michal