From: Andrey Shinkevich Date: Fri, 5 Apr 2019 14:24:04 +0000 (+0300) Subject: block/io.c: fix for the allocation failure X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=118f99442d;p=people%2Fpauldu%2Fqemu.git block/io.c: fix for the allocation failure On a file system used by the customer, fallocate() returns an error if the block is not properly aligned. So, bdrv_co_pwrite_zeroes() fails. We can handle that case the same way as it is done for the unsupported cases, namely, call to bdrv_driver_pwritev() that writes zeroes to an image for the unaligned chunk of the block. Suggested-by: Denis V. Lunev Signed-off-by: Andrey Shinkevich Reviewed-by: John Snow Message-id: 1554474244-553661-1-git-send-email-andrey.shinkevich@virtuozzo.com Message-Id: <1554474244-553661-1-git-send-email-andrey.shinkevich@virtuozzo.com> Signed-off-by: Stefan Hajnoczi --- diff --git a/block/io.c b/block/io.c index dfc153b8d8..0412a51314 100644 --- a/block/io.c +++ b/block/io.c @@ -1516,7 +1516,7 @@ static int coroutine_fn bdrv_co_do_pwrite_zeroes(BlockDriverState *bs, assert(!bs->supported_zero_flags); } - if (ret == -ENOTSUP && !(flags & BDRV_REQ_NO_FALLBACK)) { + if (ret < 0 && !(flags & BDRV_REQ_NO_FALLBACK)) { /* Fall back to bounce buffer if write zeroes is unsupported */ BdrvRequestFlags write_flags = flags & ~BDRV_REQ_ZERO_WRITE;