[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v3 0/4] qemu-img: Fix preallocation with -S 0 for co

From: Max Reitz
Subject: [Qemu-devel] [PATCH v3 0/4] qemu-img: Fix preallocation with -S 0 for convert
Date: Tue, 29 Mar 2016 17:03:39 +0200

Using -S 0 is supposed to allocate everything in the output image; or at
least it is supposed to always explicitly write zeros even if the area
in question is known to only contain zeros. That doesn't always work
right now, so this series fixes it (patch 1, to be specific).

I only noticed after I had written the test added by patch 4 that we
already had an -S 0 test case which is included in the iotest 122.
However, the test added here works for all image formats and is maybe
more of a direct test (instead of querying the format whether it thinks
it allocated all of the data we directly ask du whether everything has
been allocated) so maybe it reflects better what users expect -S 0 to
do. Maybe.

Patches 2 and 3 are required for the test. I could have written the test
without doing a convert with null-co as the source, but that would have
been boring, so I did not.

If you want to argue that in light of the existence of test 122 the new
test added here is unnecessary and we therefore do not need patches 2, 3
and 4, please go ahead. I won't put up too much of a fight.

- The test added in patch 4 isn't as stable as I would've liked it to
  be. There are probably a hundred qemu-unrelated reasons why an image
  filled with zeros may take up a different amount of disk space than
  one that has been created with -S 0, ranging from XFS's speculative
  preallocation to maybe not-so-deterministic zero detection on the
  So instead it now just invokes qemu-img map and hopes that the
  “mappee” address listed there is allocated. Also, let's limit it to
  qcow2 and raw (vhdx doesn't like qemu-img map a lot and vmdk may give
  us some trouble with its different subformats).

git-backport-diff against v2:

[----] : patches are identical
[####] : number of functional differences between upstream/downstream patch
[down] : patch is downstream-only
The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively

001/4:[----] [--] 'qemu-img: Fix preallocation with -S 0 for convert'
002/4:[----] [--] 'block/null-{co,aio}: Allow reading zeroes'
003/4:[----] [--] 'block/null-{co,aio}: Implement get_block_status()'
004/4:[0054] [FC] 'iotests: Test qemu-img convert -S 0 behavior'

Max Reitz (4):
  qemu-img: Fix preallocation with -S 0 for convert
  block/null-{co,aio}: Allow reading zeroes
  block/null-{co,aio}: Implement get_block_status()
  iotests: Test qemu-img convert -S 0 behavior

 block/null.c               | 42 ++++++++++++++++++++++++++
 qemu-img.c                 | 26 +++++++++-------
 tests/qemu-iotests/122.out |  6 ++--
 tests/qemu-iotests/150     | 74 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/150.out | 11 +++++++
 tests/qemu-iotests/group   |  1 +
 6 files changed, 145 insertions(+), 15 deletions(-)
 create mode 100755 tests/qemu-iotests/150
 create mode 100644 tests/qemu-iotests/150.out


reply via email to

[Prev in Thread] Current Thread [Next in Thread]