other: 0.882 KVM: 0.877 files: 0.870 graphic: 0.864 device: 0.860 vnc: 0.858 PID: 0.858 boot: 0.856 performance: 0.854 semantic: 0.848 network: 0.841 permissions: 0.841 socket: 0.840 debug: 0.838 Domain fails to start when 'readonly' device not writable This issue is introduced in QEMU 4.2.0 (4.1.0 is working fine) My root disk is a LVM2 volume thin snapshot that is marked as read-only But when I try to start the domain (using virt-manager) I get the following error: Error starting domain: internal error: process exited while connecting to monitor: 2020-04-26T06:55:06.342700Z qemu-system-x86_64: -blockdev {"driver":"host_device","filename":"/dev/vg/vmroot-20200425","aio":"native","node-name":"libvirt-3-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"} The device is not writable: Permission denied Changing the lvm snapshot to writeable allows me to start the domain. (Making it changes possible during domain is running) I don't think QEMU should fail when it can't open a (block) device when the read-only option is set. (why is write access needed?) Reproduce steps: * Create LVM read-only volume (I don't think any data is needed) * Create domain with read-only volume as block device * Try to start the domain Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 75, in cb_wrapper callback(asyncjob, *args, **kwargs) File "/usr/share/virt-manager/virtManager/asyncjob.py", line 111, in tmpcb callback(*args, **kwargs) File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 66, in newfn ret = fn(self, *args, **kwargs) File "/usr/share/virt-manager/virtManager/object/domain.py", line 1279, in startup self._backend.create() File "/usr/lib/python3.7/site-packages/libvirt.py", line 1152, in create if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self) libvirt.libvirtError: internal error: process exited while connecting to monitor: 2020-04-26T07:29:47.463835Z qemu-system-x86_64: -blockdev {"driver":"host_device","filename":"/var/lib/libvirt/vmportage/rootdisk","aio":"native","node-name":"libvirt-3-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"}: The device is not writable: Permission denied Can you provide the full guest XML for this - "/etc/libvirt/qemu/$GUESTNAME.xml", and also the full QEMU command line - "/var/log/libvirt/qemu/$GUESTNAME.xml". We need to see whether the disk is considered read-only from libvirt's POV. > This issue is introduced in QEMU 4.2.0 (4.1.0 is working fine) That's not neccessarily the case - with QEMU 4.2.0, libvirt switched over to using the new -blockdev command line syntax. When you were testing with 4.1.0, it would have been using the legacy -drive syntax. So the change in behaviour is more likely related to the usage of -blockdev, than any bug introduced in QEMU. The domain.xml: rotest b4aa0288-8886-42df-abfd-4c8f729e1330 2048000 2048000 2 hvm /var/lib/libvirt/pink/kernel root=/dev/sda ro panic=300 systemd.show_status=1 systemd.unit=graphical.target quiet qemu64 destroy restart destroy /usr/bin/qemu-system-x86_64