On Fri, Dec 20, 2013 at 11:30:21AM +0100, Stefan Hajnoczi wrote: > 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()?
Looks simpler. I'll try this. > > 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