Hi,
Assume I'm running a VM with the qemu driver in libvirt, with multiple disks, with no
guest agent.
Now if I take a disks-only snapshot of that active VM.
I see that under the hood, libvirt is issuing a qmp transaction with blockdev-snapshot
command per each disk.
I also see that qmp_transaction in qemu is draining all disks IO before performing the
transaction (calling bdrv_drain_all).
But once the transaction has started, is it possible that any incoming guest disk IO will
be processed before the transaction completes?
Assuming that's not possible, how is this "block disk IO while running the
transaction" is enforced? Is it the call to GLOBAL_STATE_CODE() at the beginning of
qemu's qmp_transaction(...)?
Thanks,
Or
I