Ideally it should be possible to zero individual subclusters using this function, but this is currently not implemented.
Signed-off-by: Alberto Garcia <be...@igalia.com> --- block/qcow2.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/block/qcow2.c b/block/qcow2.c index 01322ca449..537569ce88 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -3704,6 +3704,12 @@ static coroutine_fn int qcow2_co_pwrite_zeroes(BlockDriverState *bs, bytes = s->cluster_size; nr = s->cluster_size; ret = qcow2_get_cluster_offset(bs, offset, &nr, &off); + /* TODO: allow zeroing separate subclusters, we only allow + * zeroing full clusters at the moment. */ + if (nr != bytes) { + qemu_co_mutex_unlock(&s->lock); + return -ENOTSUP; + } if (ret != QCOW2_CLUSTER_UNALLOCATED && ret != QCOW2_CLUSTER_UNALLOCATED_SUBCLUSTER && ret != QCOW2_CLUSTER_ZERO_PLAIN && -- 2.20.1