On Fri, Dec 27, 2013 at 11:05:50AM +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.
v4: - remove bdrv_preallocate and make preallocation a bdrv_create_file
option
- prealloc_mode - PreallocMode and add it to QAPI
- fix return value in raw_preallocate2
Hu Tao (4):
qapi: introduce PreallocMode
raw,qcow2: don't convert file size to sector size
raw-posix: Add full image preallocation option
qcow2: Add full image preallocation option
block/qcow2.c | 64
+--
block/raw-posix.c | 50 +--
qapi-schema.json | 12 +++
3 files changed, 113 insertions(+), 13 deletions(-)
I've thought more about the lack of progress information during
posix_fallocate(3). Users creating 10s or 100s of GB images may have to
wait for a long time if posix_fallocate(3) is implemented in userspace
(effectively dd if=/dev/zero of=vm.img).
But I think adding preallocate=full is a good starting point. Modern
file systems implement it efficiently so the wait time should be
negligible. If creating images takes too long we could consider a
fancier interface later.
I left comments on specific patches.