On Thu, Jan 07, 2021 at 09:05:42AM +0100, Peter Krempa wrote: > On Tue, Jan 05, 2021 at 15:12:55 +0100, Peter Krempa wrote: > > On Mon, Jan 04, 2021 at 15:30:19 -0500, Masayoshi Mizuma wrote: > > > On Sat, Dec 19, 2020 at 11:30:39PM -0500, Masayoshi Mizuma wrote: > > [...] > > > {"execute":"cont"} > > > > So that is a no-go. Some disk bus-es such as IDE don't support hotplug: > > > > https://gitlab.com/libvirt/libvirt/-/blob/master/src/qemu/qemu_hotplug.c#L1074 > > > > You could try to just instantiate the backend of the disk as read-only, > > and then create a writable overlay. You just need to make sure that the > > disk will be writable and that it works even for IDE/SATA which doesn't > > support read-only: > > > > https://gitlab.com/libvirt/libvirt/-/blob/master/src/qemu/qemu_validate.c#L2634 > > Okay, I've actually tried implementing my suggestion and that doesn't > work. With scsi disks qemu crashes on an assertion failure when I try > writing to the disk after setting it up as suggested and virtio disk > returns an I/O error as it remembers that it was read-only when > starting. > > I'm considering whether it's worth implementing this via hotplug then. > > Arguably simple deployments don't need it and complex ones have some > kind of orchestration which can do it externally. > > This specifically comes with a caveat of the above, as currently the > overlay used to discard writes is created under the same path as the > image and can't be controlled, which might be a problem for complex > deployments. > > Also the above algorithm with a constant suffix added to the image > prevents to use it with multiple VMs anyways, since the overlay file > name will collide (since it's generated based on the same rules). > > Didn't you run into the collision? Yes, I needed to set the different filename for each guests with blockdev-add QMP command. Is it good idea to add the guest name as the suffix to the filename? Like as: Guest0 QMP: {"execute":"blockdev-add","arguments":{"driver":"file","filename":"/var/lib/libvirt/images/guest.TRANSIENT-Guest0","node-name":"storage2","auto-read-only":true,"discard":"unmap"}} Guest1 QMP: {"execute":"blockdev-add","arguments":{"driver":"file","filename":"/var/lib/libvirt/images/guest.TRANSIENT-Guest1","node-name":"storage2","auto-read-only":true,"discard":"unmap"}} Thanks, Masa