Hi,
On Mon, Aug 24, 2015 at 01:27:42PM +0200, Martin Kletzander wrote:
On Mon, Aug 24, 2015 at 12:55:22PM +0200, Guido Günther wrote:
>While a zero allocation in safezero should be fine it isn't when we use
>posix_fallocate which returns EINVAL on a zero allocation.
>
>While we could skip the zero allocation in safezero_posix_fallocate it's
>an optimization to do it for all allocations.
>
>This fixes vm installation via virtinst for me which otherwise aborts
>like:
>
> Starting install...
> Retrieving file linux... | 5.9 MB 00:01 ...
> Retrieving file initrd.gz... | 29 MB 00:07 ...
> ERROR Couldn't create storage volume 'virtinst-linux.sBgds4':
'cannot fill file '/var/lib/libvirt/boot/virtinst-linux.sBgds4': Invalid
argument'
>
>The error was introduced by e30297b0 as spotted by Chunyan Liu
>---
>Only the commit message got adjusted.
>
ACK, that's a possible one.
Pushed now. Thanks!
-- Guido
>src/storage/storage_backend.c | 2 +-
>1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
>index db49739..0418473 100644
>--- a/src/storage/storage_backend.c
>+++ b/src/storage/storage_backend.c
>@@ -455,7 +455,7 @@ createRawFile(int fd, virStorageVolDefPtr vol,
> pos = inputvol->target.capacity - remain;
> }
>
>- if (need_alloc) {
>+ if (need_alloc && (vol->target.allocation - pos > 0)) {
> if (safezero(fd, pos, vol->target.allocation - pos) < 0) {
> ret = -errno;
> virReportSystemError(errno, _("cannot fill file
'%s'"),
>--
>2.1.4