On Sat, Dec 12, 2020 at 11:57:15AM +0100, Peter Krempa wrote:
On Fri, Dec 11, 2020 at 20:58:48 -0500, Masayoshi Mizuma wrote:
> Hello,
>
> I would like to start multiple KVM guests from one qcow2 image, and
> discard the changes which the KVM guests done.
>
> transient disk option is useful for discarding the changes, however,
> we cannot start multiple KVM guest from one qcow2 image because the
> image is write-locked by the first guest to be started.
>
> I suppose the disk which transient option is enabled don't need to
> get the write lock because any changes go to the overlay image, and
> the overlay image is removed when the guest shutdown.
>
> qemu has 'locking' option and the write lock is disabled when locking=off.
> To implement that, I have two ideas. I would appreciate it if you could
> give me the ideas which way is better (or another way).
There are two aspects of this.
1) Controlling the locking property of qemu may be worth in many cases,
so by itself this would be a worthwhile patchset to add control of
qemu locking for a per-backing store basis.
2) Disabling locking to achieve this is wrong though. The qemu image
locking infrastructure is justified and prevents many problems which
users might get into by wrong configuration.
For <transient/> disks, we should rather instantiate the top level
format node as 'readonly' and then put a read-write overlay on top of
it. This still prevents from using the file which became a backing file
in read-write mode in another VM.
Thank you for the idea!
I just tried to change the original image to read-only (changed the
"read-only":false
to "read-only":true) simply, then created a read-write overlay.
qemu stopped with following assertion:
qemu-system-x86_64: ../block/io.c:1874: bdrv_co_write_req_prepare: Assertion
`child->perm & BLK_PERM_WRITE' failed.
It looks like the qemu hit the assertion because the permission of the overlay image
is same as the original image.
Probably I'm missing something... I'll dive into that...
You are welcome to propose the locking control as a proper patchset
(with proper splitting of patches) but it can't be described as a way to
share the backing image of <transient/> disks since that needs a
systemic fix.
Thanks. I understand the locking option is different topic from sharing
disks with <transient/> option.
Thanks!
Masa