diff options
author | Andrey Shinkevich <andrey.shinkevich@virtuozzo.com> | 2019-04-05 17:24:04 +0300 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2019-05-10 10:53:21 +0100 |
commit | 118f99442d3a8ce47836978cddd9206ac2d2b001 (patch) | |
tree | aefb09d2f47cd533a1a4efd2bd6871c5e5b3a378 | |
parent | 66a5bdf3096cf8bc8c41eb7adcc9d10edef07a9d (diff) | |
download | qemu-118f99442d3a8ce47836978cddd9206ac2d2b001.zip qemu-118f99442d3a8ce47836978cddd9206ac2d2b001.tar.gz qemu-118f99442d3a8ce47836978cddd9206ac2d2b001.tar.bz2 |
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 <den@openvz.org>
Signed-off-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
Reviewed-by: John Snow <jsnow@redhat.com>
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 <stefanha@redhat.com>
-rw-r--r-- | block/io.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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; |