qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for-2.8 v2] qcow2: Don't strand clusters near 2G


From: John Snow
Subject: Re: [Qemu-devel] [PATCH for-2.8 v2] qcow2: Don't strand clusters near 2G intervals during commit
Date: Mon, 5 Dec 2016 14:52:56 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0


On 12/05/2016 10:49 AM, Eric Blake wrote:
> The qcow2_make_empty() function is reached during 'qemu-img commit',
> in order to clear out ALL clusters of an image.  However, if the
> image cannot use the fast code path (true if the image is format
> 0.10, or if the image contains a snapshot), the cluster size is
> larger than 512, and the image is larger than 2G in size, then our
> choice of sector_step causes problems.  Since it is not cluster
> aligned, but qcow2_discard_clusters() silently ignores an unaligned
> head or tail, we are leaving clusters allocated.
> 
> Enhance the testsuite to expose the flaw, and patch the problem by
> ensuring our step size is aligned.
> 
> Signed-off-by: Eric Blake <address@hidden>
> 
> ---
> v2: perform rounding correctly
> ---
>  block/qcow2.c              |   3 +-
>  tests/qemu-iotests/097     |  41 +++++---
>  tests/qemu-iotests/097.out | 249 
> +++++++++++++++++++++++++++++++++------------
>  3 files changed, 210 insertions(+), 83 deletions(-)
> 
> diff --git a/block/qcow2.c b/block/qcow2.c
> index ed9e0f3..96fb8a8 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -2808,7 +2808,8 @@ static int qcow2_make_empty(BlockDriverState *bs)
>  {
>      BDRVQcow2State *s = bs->opaque;
>      uint64_t start_sector;
> -    int sector_step = INT_MAX / BDRV_SECTOR_SIZE;
> +    int sector_step = (QEMU_ALIGN_DOWN(INT_MAX, s->cluster_size) /
> +                       BDRV_SECTOR_SIZE);
>      int l1_clusters, ret = 0;
> 
>      l1_clusters = DIV_ROUND_UP(s->l1_size, s->cluster_size / 
> sizeof(uint64_t));
> diff --git a/tests/qemu-iotests/097 b/tests/qemu-iotests/097
> index 01d8dd0..4c33e80 100755
> --- a/tests/qemu-iotests/097
> +++ b/tests/qemu-iotests/097
> @@ -46,7 +46,7 @@ _supported_proto file
>  _supported_os Linux
> 
> 
> -# Four passes:
> +# Four main passes:
>  #  0: Two-layer backing chain, commit to upper backing file (implicitly)
>  #     (in this case, the top image will be emptied)
>  #  1: Two-layer backing chain, commit to upper backing file (explicitly)
> @@ -56,22 +56,30 @@ _supported_os Linux
>  #  3: Two-layer backing chain, commit to lower backing file
>  #     (in this case, the top image will implicitly stay unchanged)
>  #
> +# Each pass is run twice, since qcow2 has different code paths for cleaning
> +# an image depending on whether it has a snapshot.
> +#
>  # 020 already tests committing, so this only tests whether image chains are
>  # working properly and that all images above the base are emptied; therefore,
> -# no complicated patterns are necessary
> +# no complicated patterns are necessary.  Check near the 2G mark, as qcow2
> +# has been buggy at that boundary in the past.
>  for i in 0 1 2 3; do
> +for j in 0 1; do
> 
>  echo
> -echo "=== Test pass $i ==="
> +echo "=== Test pass $i.$j ==="
>  echo
> 
> -TEST_IMG="$TEST_IMG.base" _make_test_img 64M
> -TEST_IMG="$TEST_IMG.itmd" _make_test_img -b "$TEST_IMG.base" 64M
> -_make_test_img -b "$TEST_IMG.itmd" 64M
> +TEST_IMG="$TEST_IMG.base" _make_test_img 2100M
> +TEST_IMG="$TEST_IMG.itmd" _make_test_img -b "$TEST_IMG.base" 2100M
> +_make_test_img -b "$TEST_IMG.itmd" 2100M
> +if [ $j -eq 0 ]; then
> +    $QEMU_IMG snapshot -c snap "$TEST_IMG"
> +fi
> 
> -$QEMU_IO -c 'write -P 1 0 192k' "$TEST_IMG.base" | _filter_qemu_io
> -$QEMU_IO -c 'write -P 2 64k 128k' "$TEST_IMG.itmd" | _filter_qemu_io
> -$QEMU_IO -c 'write -P 3 128k 64k' "$TEST_IMG" | _filter_qemu_io
> +$QEMU_IO -c 'write -P 1 0x7ffd0000 192k' "$TEST_IMG.base" | _filter_qemu_io
> +$QEMU_IO -c 'write -P 2 0x7ffe0000 128k' "$TEST_IMG.itmd" | _filter_qemu_io
> +$QEMU_IO -c 'write -P 3 0x7fff0000 64k' "$TEST_IMG" | _filter_qemu_io
> 
>  if [ $i -lt 3 ]; then
>      if [ $i == 0 ]; then
> @@ -88,12 +96,12 @@ if [ $i -lt 3 ]; then
>      fi
> 
>      # Bottom should be unchanged
> -    $QEMU_IO -c 'read -P 1 0 192k' "$TEST_IMG.base" | _filter_qemu_io
> +    $QEMU_IO -c 'read -P 1 0x7ffd0000 192k' "$TEST_IMG.base" | 
> _filter_qemu_io
> 
>      # Intermediate should contain changes from top
> -    $QEMU_IO -c 'read -P 1 0 64k' "$TEST_IMG.itmd" | _filter_qemu_io
> -    $QEMU_IO -c 'read -P 2 64k 64k' "$TEST_IMG.itmd" | _filter_qemu_io
> -    $QEMU_IO -c 'read -P 3 128k 64k' "$TEST_IMG.itmd" | _filter_qemu_io
> +    $QEMU_IO -c 'read -P 1 0x7ffd0000 64k' "$TEST_IMG.itmd" | _filter_qemu_io
> +    $QEMU_IO -c 'read -P 2 0x7ffe0000 64k' "$TEST_IMG.itmd" | _filter_qemu_io
> +    $QEMU_IO -c 'read -P 3 0x7fff0000 64k' "$TEST_IMG.itmd" | _filter_qemu_io
> 
>      # And in pass 0, the top image should be empty, whereas in both other 
> passes
>      # it should be unchanged (which is both checked by qemu-img map)
> @@ -101,9 +109,9 @@ else
>      $QEMU_IMG commit -b "$TEST_IMG.base" "$TEST_IMG"
> 
>      # Bottom should contain all changes
> -    $QEMU_IO -c 'read -P 1 0 64k' "$TEST_IMG.base" | _filter_qemu_io
> -    $QEMU_IO -c 'read -P 2 64k 64k' "$TEST_IMG.base" | _filter_qemu_io
> -    $QEMU_IO -c 'read -P 3 128k 64k' "$TEST_IMG.base" | _filter_qemu_io
> +    $QEMU_IO -c 'read -P 1 0x7ffd0000 64k' "$TEST_IMG.base" | _filter_qemu_io
> +    $QEMU_IO -c 'read -P 2 0x7ffe0000 64k' "$TEST_IMG.base" | _filter_qemu_io
> +    $QEMU_IO -c 'read -P 3 0x7fff0000 64k' "$TEST_IMG.base" | _filter_qemu_io
> 
>      # Both top and intermediate should be unchanged
>  fi
> @@ -113,6 +121,7 @@ $QEMU_IMG map "$TEST_IMG.itmd" | _filter_qemu_img_map
>  $QEMU_IMG map "$TEST_IMG" | _filter_qemu_img_map
> 
>  done
> +done
> 
> 
>  # success, all done
> diff --git a/tests/qemu-iotests/097.out b/tests/qemu-iotests/097.out
> index 48abd2e..8106cc9 100644
> --- a/tests/qemu-iotests/097.out
> +++ b/tests/qemu-iotests/097.out
> @@ -1,119 +1,236 @@
>  QA output created by 097
> 
> -=== Test pass 0 ===
> +=== Test pass 0.0 ===
> 
> -Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
> -Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=67108864 
> backing_file=TEST_DIR/t.IMGFMT.base
> -Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> -wrote 196608/196608 bytes at offset 0
> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202009600
> +Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.base
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> +wrote 196608/196608 bytes at offset 2147287040
>  192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 131072/131072 bytes at offset 65536
> +wrote 131072/131072 bytes at offset 2147352576
>  128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 65536/65536 bytes at offset 131072
> +wrote 65536/65536 bytes at offset 2147418112
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  Image committed.
> -read 196608/196608 bytes at offset 0
> +read 196608/196608 bytes at offset 2147287040
>  192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 0
> +read 65536/65536 bytes at offset 2147287040
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 65536
> +read 65536/65536 bytes at offset 2147352576
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 131072
> +read 65536/65536 bytes at offset 2147418112
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  Offset          Length          File
> -0               0x30000         TEST_DIR/t.IMGFMT.base
> +0x7ffd0000      0x30000         TEST_DIR/t.IMGFMT.base
>  Offset          Length          File
> -0               0x10000         TEST_DIR/t.IMGFMT.base
> -0x10000         0x20000         TEST_DIR/t.IMGFMT.itmd
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x20000         TEST_DIR/t.IMGFMT.itmd
>  Offset          Length          File
> -0               0x10000         TEST_DIR/t.IMGFMT.base
> -0x10000         0x20000         TEST_DIR/t.IMGFMT.itmd
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x20000         TEST_DIR/t.IMGFMT.itmd
> 
> -=== Test pass 1 ===
> +=== Test pass 0.1 ===
> 
> -Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
> -Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=67108864 
> backing_file=TEST_DIR/t.IMGFMT.base
> -Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> -wrote 196608/196608 bytes at offset 0
> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202009600
> +Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.base
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> +wrote 196608/196608 bytes at offset 2147287040
>  192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 131072/131072 bytes at offset 65536
> +wrote 131072/131072 bytes at offset 2147352576
>  128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 65536/65536 bytes at offset 131072
> +wrote 65536/65536 bytes at offset 2147418112
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  Image committed.
> -read 196608/196608 bytes at offset 0
> +read 196608/196608 bytes at offset 2147287040
>  192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 0
> +read 65536/65536 bytes at offset 2147287040
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 65536
> +read 65536/65536 bytes at offset 2147352576
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 131072
> +read 65536/65536 bytes at offset 2147418112
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  Offset          Length          File
> -0               0x30000         TEST_DIR/t.IMGFMT.base
> +0x7ffd0000      0x30000         TEST_DIR/t.IMGFMT.base
>  Offset          Length          File
> -0               0x10000         TEST_DIR/t.IMGFMT.base
> -0x10000         0x20000         TEST_DIR/t.IMGFMT.itmd
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x20000         TEST_DIR/t.IMGFMT.itmd
>  Offset          Length          File
> -0               0x10000         TEST_DIR/t.IMGFMT.base
> -0x10000         0x10000         TEST_DIR/t.IMGFMT.itmd
> -0x20000         0x10000         TEST_DIR/t.IMGFMT
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x20000         TEST_DIR/t.IMGFMT.itmd
> 
> -=== Test pass 2 ===
> +=== Test pass 1.0 ===
> 
> -Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
> -Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=67108864 
> backing_file=TEST_DIR/t.IMGFMT.base
> -Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> -wrote 196608/196608 bytes at offset 0
> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202009600
> +Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.base
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> +wrote 196608/196608 bytes at offset 2147287040
>  192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 131072/131072 bytes at offset 65536
> +wrote 131072/131072 bytes at offset 2147352576
>  128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 65536/65536 bytes at offset 131072
> +wrote 65536/65536 bytes at offset 2147418112
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  Image committed.
> -read 196608/196608 bytes at offset 0
> +read 196608/196608 bytes at offset 2147287040
>  192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 0
> +read 65536/65536 bytes at offset 2147287040
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 65536
> +read 65536/65536 bytes at offset 2147352576
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 131072
> +read 65536/65536 bytes at offset 2147418112
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  Offset          Length          File
> -0               0x30000         TEST_DIR/t.IMGFMT.base
> +0x7ffd0000      0x30000         TEST_DIR/t.IMGFMT.base
>  Offset          Length          File
> -0               0x10000         TEST_DIR/t.IMGFMT.base
> -0x10000         0x20000         TEST_DIR/t.IMGFMT.itmd
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x20000         TEST_DIR/t.IMGFMT.itmd
>  Offset          Length          File
> -0               0x10000         TEST_DIR/t.IMGFMT.base
> -0x10000         0x10000         TEST_DIR/t.IMGFMT.itmd
> -0x20000         0x10000         TEST_DIR/t.IMGFMT
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x10000         TEST_DIR/t.IMGFMT.itmd
> +0x7fff0000      0x10000         TEST_DIR/t.IMGFMT
> 
> -=== Test pass 3 ===
> +=== Test pass 1.1 ===
> 
> -Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
> -Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=67108864 
> backing_file=TEST_DIR/t.IMGFMT.base
> -Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> -wrote 196608/196608 bytes at offset 0
> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202009600
> +Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.base
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> +wrote 196608/196608 bytes at offset 2147287040
>  192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 131072/131072 bytes at offset 65536
> +wrote 131072/131072 bytes at offset 2147352576
>  128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -wrote 65536/65536 bytes at offset 131072
> +wrote 65536/65536 bytes at offset 2147418112
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  Image committed.
> -read 65536/65536 bytes at offset 0
> +read 196608/196608 bytes at offset 2147287040
> +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147287040
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147352576
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147418112
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Offset          Length          File
> +0x7ffd0000      0x30000         TEST_DIR/t.IMGFMT.base
> +Offset          Length          File
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x20000         TEST_DIR/t.IMGFMT.itmd
> +Offset          Length          File
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x10000         TEST_DIR/t.IMGFMT.itmd
> +0x7fff0000      0x10000         TEST_DIR/t.IMGFMT
> +
> +=== Test pass 2.0 ===
> +
> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202009600
> +Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.base
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> +wrote 196608/196608 bytes at offset 2147287040
> +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +wrote 131072/131072 bytes at offset 2147352576
> +128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +wrote 65536/65536 bytes at offset 2147418112
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Image committed.
> +read 196608/196608 bytes at offset 2147287040
> +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147287040
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147352576
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147418112
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Offset          Length          File
> +0x7ffd0000      0x30000         TEST_DIR/t.IMGFMT.base
> +Offset          Length          File
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x20000         TEST_DIR/t.IMGFMT.itmd
> +Offset          Length          File
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x10000         TEST_DIR/t.IMGFMT.itmd
> +0x7fff0000      0x10000         TEST_DIR/t.IMGFMT
> +
> +=== Test pass 2.1 ===
> +
> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202009600
> +Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.base
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> +wrote 196608/196608 bytes at offset 2147287040
> +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +wrote 131072/131072 bytes at offset 2147352576
> +128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +wrote 65536/65536 bytes at offset 2147418112
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Image committed.
> +read 196608/196608 bytes at offset 2147287040
> +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147287040
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147352576
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147418112
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Offset          Length          File
> +0x7ffd0000      0x30000         TEST_DIR/t.IMGFMT.base
> +Offset          Length          File
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x20000         TEST_DIR/t.IMGFMT.itmd
> +Offset          Length          File
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x10000         TEST_DIR/t.IMGFMT.itmd
> +0x7fff0000      0x10000         TEST_DIR/t.IMGFMT
> +
> +=== Test pass 3.0 ===
> +
> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202009600
> +Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.base
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> +wrote 196608/196608 bytes at offset 2147287040
> +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +wrote 131072/131072 bytes at offset 2147352576
> +128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +wrote 65536/65536 bytes at offset 2147418112
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Image committed.
> +read 65536/65536 bytes at offset 2147287040
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147352576
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +read 65536/65536 bytes at offset 2147418112
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Offset          Length          File
> +0x7ffd0000      0x30000         TEST_DIR/t.IMGFMT.base
> +Offset          Length          File
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x20000         TEST_DIR/t.IMGFMT.itmd
> +Offset          Length          File
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x10000         TEST_DIR/t.IMGFMT.itmd
> +0x7fff0000      0x10000         TEST_DIR/t.IMGFMT
> +
> +=== Test pass 3.1 ===
> +
> +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202009600
> +Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.base
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202009600 
> backing_file=TEST_DIR/t.IMGFMT.itmd
> +wrote 196608/196608 bytes at offset 2147287040
> +192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +wrote 131072/131072 bytes at offset 2147352576
> +128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +wrote 65536/65536 bytes at offset 2147418112
> +64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> +Image committed.
> +read 65536/65536 bytes at offset 2147287040
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 65536
> +read 65536/65536 bytes at offset 2147352576
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -read 65536/65536 bytes at offset 131072
> +read 65536/65536 bytes at offset 2147418112
>  64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  Offset          Length          File
> -0               0x30000         TEST_DIR/t.IMGFMT.base
> +0x7ffd0000      0x30000         TEST_DIR/t.IMGFMT.base
>  Offset          Length          File
> -0               0x10000         TEST_DIR/t.IMGFMT.base
> -0x10000         0x20000         TEST_DIR/t.IMGFMT.itmd
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x20000         TEST_DIR/t.IMGFMT.itmd
>  Offset          Length          File
> -0               0x10000         TEST_DIR/t.IMGFMT.base
> -0x10000         0x10000         TEST_DIR/t.IMGFMT.itmd
> -0x20000         0x10000         TEST_DIR/t.IMGFMT
> +0x7ffd0000      0x10000         TEST_DIR/t.IMGFMT.base
> +0x7ffe0000      0x10000         TEST_DIR/t.IMGFMT.itmd
> +0x7fff0000      0x10000         TEST_DIR/t.IMGFMT
>  *** done
> 

I skimmed the test changes, but it looks good.

Reviewed-by: John Snow <address@hidden>



reply via email to

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