[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] virtio-blk: Allow startup of empty cdroms
From: |
Michal Privoznik |
Subject: |
[Qemu-devel] [PATCH] virtio-blk: Allow startup of empty cdroms |
Date: |
Wed, 6 Jan 2016 11:35:43 +0100 |
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 <address@hidden>
---
hw/block/virtio-blk.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 51f867b..2f687d2 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -893,6 +893,7 @@ static void virtio_blk_device_realize(DeviceState *dev,
Error **errp)
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
VirtIOBlock *s = VIRTIO_BLK(dev);
VirtIOBlkConf *conf = &s->conf;
+ DriveInfo *dinfo;
Error *err = NULL;
static int virtio_blk_id;
@@ -900,7 +901,10 @@ static void virtio_blk_device_realize(DeviceState *dev,
Error **errp)
error_setg(errp, "drive property not set");
return;
}
- if (!blk_is_inserted(conf->conf.blk)) {
+
+ dinfo = blk_legacy_dinfo(conf->conf.blk);
+ if (!((dinfo && dinfo->media_cd) ||
+ blk_is_inserted(conf->conf.blk))) {
error_setg(errp, "Device needs media, but drive is empty");
return;
}
--
2.4.10
- [Qemu-devel] [PATCH] virtio-blk: Allow startup of empty cdroms,
Michal Privoznik <=