Re: Question: How do I discard any changes for the device which is set by blockdev option?

On 5/19/20 12:56 PM, Masayoshi Mizuma wrote:
Hello,
I would like to discard any changes while the qemu guest OS is done. I can do that with snapshot and drive option. However, snapshot option doesn't work for the device which set by blockdev option like as:
$QEMU --enable-kvm \ -m 1024 \ -nographic \ -serial mon:stdio \ -blockdev driver=file,node-name=mydisk,filename=/mnt/fedora.qcow2 \ -blockdev driver=qcow2,node-name=vda,file=mydisk \ -device virtio-blk-pci,drive=vda,bootindex=1 \ -snapshot
I would like to use blockdev option to set the device because libvirt uses blockdev option for disk element.
If there's no way to do so, does that make sense to get available snapshot option to blockdev as well? If that makes sense, I'll try to implement that.
As for qcow2, I think we can do such things to use qemu-img snapshot command, for example save the original image and restore the image after the qemu guest OS is shutdowned. However, it may be complecated for user. I would like the simple way like as snapshot/drive option...
If I'm missing something, let me know.
Sounds like a repeat of this thread: https://lists.gnu.org/archive/html/qemu-devel/2020-01/msg06144.html where the consensus is yes, -blockdev and -snapshot are incompatible, libvirt has plans to use the <transient/> tag to behave the same as what -snapshot does (but no one has implemented it yet), and in the meantime, it is possible to force libvirt to avoid -blockdev if you still need to supply -snapshot behind libvirt's back. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org

On Tue, May 19, 2020 at 01:41:08PM -0500, Eric Blake wrote:
On 5/19/20 12:56 PM, Masayoshi Mizuma wrote:
Hello,
I would like to discard any changes while the qemu guest OS is done. I can do that with snapshot and drive option. However, snapshot option doesn't work for the device which set by blockdev option like as:
$QEMU --enable-kvm \ -m 1024 \ -nographic \ -serial mon:stdio \ -blockdev driver=file,node-name=mydisk,filename=/mnt/fedora.qcow2 \ -blockdev driver=qcow2,node-name=vda,file=mydisk \ -device virtio-blk-pci,drive=vda,bootindex=1 \ -snapshot
I would like to use blockdev option to set the device because libvirt uses blockdev option for disk element.
If there's no way to do so, does that make sense to get available snapshot option to blockdev as well? If that makes sense, I'll try to implement that.
As for qcow2, I think we can do such things to use qemu-img snapshot command, for example save the original image and restore the image after the qemu guest OS is shutdowned. However, it may be complecated for user. I would like the simple way like as snapshot/drive option...
If I'm missing something, let me know.
Sounds like a repeat of this thread: https://lists.gnu.org/archive/html/qemu-devel/2020-01/msg06144.html
where the consensus is yes, -blockdev and -snapshot are incompatible, libvirt has plans to use the <transient/> tag to behave the same as what -snapshot does (but no one has implemented it yet), and in the meantime, it is possible to force libvirt to avoid -blockdev if you still need to supply -snapshot behind libvirt's back.
Thank you for the info! I didn't notice the thread. I got we should implement that feature for libvirt side, not qemu. Thanks! Masa
-- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
participants (2)
-
Eric Blake
-
Masayoshi Mizuma