On Thu, Dec 19, 2013 at 10:27:35AM +0800, Hu Tao wrote: > This series implements full image preallocation to create a non-sparse image > file at creation time, both for raw and qcow2 format. The purpose is to avoid > performance deterioration of the guest cause by sparse image.
I'm not sure the new bdrv_preallocate() interface is necessary. Can qcow2_create() simply pass a preallocate=full option to bdrv_create_file()? It's simpler if we avoid bdrv_preallocate(), just keep it a .bdrv_create() option. That way we also avoid the question of how exactly preallocate functions on an image file that already has blocks allocated. So what I imagine is: 1. Add preallocation=full support to raw-posix.c 2. Add preallocation=full support to qcow2.c, calculate image file size including metadata for bdrv_create_file(). CCing Eric Blake so libvirt can consider how full preallocation interacts with their safezero() preallocation. If QEMU handles preallocation can we skip safezero()? Is there a concern about full preallocation in QEMU taking a long time without progress report? Stefan