
Am 07.09.2010 17:30, schrieb Anthony Liguori:
On 09/07/2010 10:20 AM, Kevin Wolf wrote:
Am 07.09.2010 17:11, schrieb Anthony Liguori:
Copy-on-read is, in many cases, a property of the backing file because it suggests that the backing file is either very slow or potentially volatile.
The simple copy-on-read without actively streaming the rest of the image is not enough anyway for volatile backing files.
But as a web site owner, it's extremely useful for me to associate copy-on-read with an image because it significantly reduces my bandwidth.
I have a hard time believing this isn't a valuable use-case and not one that's actually pretty common.
As a web site user, I don't necessarily want you to control the behaviour of my qemu. :-) But I do see your point there.
You really can't do as good of a job in the block layer because you have very little info about the characteristics of the disk image.
I'm not saying that the generic block layer should implement copy-on-read. I just think that it should pass a run-time option to the driver - maybe just a BDRV_O_COPY_ON_READ flag - instead of having the information in the image file. From a user perspective it should look the same for qed, qcow2 and whatever else (like copy-on-write today)
Okay, the only place I'm disagreeing slightly is that I think an image format should be able to request copy_on_read such that the default behavior if an explicit flag isn't specified is to do what the image suggests we do.
Maybe we can agree on that. I'm not completely decided yet if allowing the image to contain such a hint is a good or a bad thing. Kevin