All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Cody <jcody@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH for-2.10 7/7] qemu-iotests/059: Fix leaked image files
Date: Fri, 28 Jul 2017 17:39:23 -0400	[thread overview]
Message-ID: <20170728213923.GH5109@localhost.localdomain> (raw)
In-Reply-To: <20170728131452.15316-8-kwolf@redhat.com>

On Fri, Jul 28, 2017 at 03:14:52PM +0200, Kevin Wolf wrote:
> qemu-iotests 059 left a whole lot of image files behind in the scratch
> directory because VMDK creates additional files for extents and cleaning
> them up requires the original image intact (it parses qemu-img info
> output to find all extent files), but the image overwrote it many times
> like it works for all other image formats.
> 
> In addition, _use_sample_img overwrites the TEST_IMG variable, causing
> new images created afterwards to reuse the name of the sample file
> rather than the usual t.IMGFMT.
> 
> This patch adds an intermediate _cleanup_test_img after each subtest
> that created an image file with additional extent files, and also after
> each use of a sample image. _cleanup_test_img is also changed so that it
> resets TEST_IMG after a sample image is cleaned up.
> 
> Note that this test was failing before this commit and continues to do
> so after it. This failure was introduced in commit 9877860 ('block/vmdk:
> Report failures in vmdk_read_cid()') and needs to be dealt with
> separately.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  tests/qemu-iotests/059       |  9 +++++++++
>  tests/qemu-iotests/059.out   | 22 +++++++++++-----------
>  tests/qemu-iotests/common.rc |  3 +++
>  3 files changed, 23 insertions(+), 11 deletions(-)
> 
> diff --git a/tests/qemu-iotests/059 b/tests/qemu-iotests/059
> index 6655aaf384..32d6e6791c 100755
> --- a/tests/qemu-iotests/059
> +++ b/tests/qemu-iotests/059
> @@ -30,6 +30,7 @@ status=1	# failure is the default!
>  _cleanup()
>  {
>  	_cleanup_test_img
> +    rm -f "$TEST_IMG.qcow2"
>  }
>  trap "_cleanup; exit \$status" 0 1 2 3 15
>  
> @@ -72,15 +73,18 @@ echo
>  echo "=== Testing monolithicFlat creation and opening ==="
>  IMGOPTS="subformat=monolithicFlat" _make_test_img 2G
>  _img_info
> +_cleanup_test_img
>  
>  echo
>  echo "=== Testing monolithicFlat with zeroed_grain ==="
>  IMGOPTS="subformat=monolithicFlat,zeroed_grain=on" _make_test_img 2G
> +_cleanup_test_img
>  
>  echo
>  echo "=== Testing big twoGbMaxExtentFlat ==="
>  IMGOPTS="subformat=twoGbMaxExtentFlat" _make_test_img 1000G
>  $QEMU_IMG info $TEST_IMG | _filter_testdir | sed -e 's/cid: [0-9]*/cid: XXXXXXXX/'
> +_cleanup_test_img
>  
>  echo
>  echo "=== Testing malformed VMFS extent description line ==="
> @@ -114,6 +118,7 @@ echo "=== Testing monolithicFlat with internally generated JSON file name ==="
>  IMGOPTS="subformat=monolithicFlat" _make_test_img 64M
>  $QEMU_IO -c "open -o driver=$IMGFMT,file.driver=blkdebug,file.image.filename=$TEST_IMG,file.inject-error.0.event=read_aio" 2>&1 \
>      | _filter_testdir | _filter_imgfmt
> +_cleanup_test_img
>  
>  echo
>  echo "=== Testing version 3 ==="
> @@ -123,6 +128,7 @@ for i in {0..99}; do
>      $QEMU_IO -r -c "read -P $(( i % 10 + 0x30 )) $(( i * 64 * 1024 * 10 + i * 512 )) 512" $TEST_IMG \
>          | _filter_qemu_io
>  done
> +_cleanup_test_img
>  
>  echo
>  echo "=== Testing 4TB monolithicFlat creation and IO ==="
> @@ -130,6 +136,7 @@ IMGOPTS="subformat=monolithicFlat" _make_test_img 4T
>  _img_info
>  $QEMU_IO -c "write -P 0xa 900G 512" "$TEST_IMG" | _filter_qemu_io
>  $QEMU_IO -c "read -v 900G 1024" "$TEST_IMG" | _filter_qemu_io
> +_cleanup_test_img
>  
>  echo
>  echo "=== Testing qemu-img map on extents ==="
> @@ -139,12 +146,14 @@ for fmt in monolithicSparse twoGbMaxExtentSparse; do
>      $QEMU_IO -c "write 2147483136 1k" "$TEST_IMG" | _filter_qemu_io
>      $QEMU_IO -c "write 5G 1k" "$TEST_IMG" | _filter_qemu_io
>      $QEMU_IMG map "$TEST_IMG" | _filter_testdir
> +    _cleanup_test_img
>  done
>  
>  echo
>  echo "=== Testing afl image with a very large capacity ==="
>  _use_sample_img afl9.vmdk.bz2
>  _img_info
> +_cleanup_test_img
>  
>  # success, all done
>  echo "*** done"
> diff --git a/tests/qemu-iotests/059.out b/tests/qemu-iotests/059.out
> index 6154509bc3..f6dce7947c 100644
> --- a/tests/qemu-iotests/059.out
> +++ b/tests/qemu-iotests/059.out
> @@ -2259,8 +2259,8 @@ read 512/512 bytes at offset 64931328
>  512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  
>  === Testing 4TB monolithicFlat creation and IO ===
> -Formatting 'TEST_DIR/iotest-version3.IMGFMT', fmt=IMGFMT size=4398046511104 subformat=monolithicFlat
> -image: TEST_DIR/iotest-version3.IMGFMT
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4398046511104 subformat=monolithicFlat
> +image: TEST_DIR/t.IMGFMT
>  file format: IMGFMT
>  virtual size: 4.0T (4398046511104 bytes)
>  wrote 512/512 bytes at offset 966367641600
> @@ -2333,7 +2333,7 @@ read 1024/1024 bytes at offset 966367641600
>  1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  
>  === Testing qemu-img map on extents ===
> -Formatting 'TEST_DIR/iotest-version3.IMGFMT', fmt=IMGFMT size=33285996544 subformat=monolithicSparse
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33285996544 subformat=monolithicSparse
>  wrote 1024/1024 bytes at offset 65024
>  1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  wrote 1024/1024 bytes at offset 2147483136
> @@ -2341,10 +2341,10 @@ wrote 1024/1024 bytes at offset 2147483136
>  wrote 1024/1024 bytes at offset 5368709120
>  1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  Offset          Length          Mapped to       File
> -0               0x20000         0x3f0000        TEST_DIR/iotest-version3.vmdk
> -0x7fff0000      0x20000         0x410000        TEST_DIR/iotest-version3.vmdk
> -0x140000000     0x10000         0x430000        TEST_DIR/iotest-version3.vmdk
> -Formatting 'TEST_DIR/iotest-version3.IMGFMT', fmt=IMGFMT size=33285996544 subformat=twoGbMaxExtentSparse
> +0               0x20000         0x3f0000        TEST_DIR/t.vmdk
> +0x7fff0000      0x20000         0x410000        TEST_DIR/t.vmdk
> +0x140000000     0x10000         0x430000        TEST_DIR/t.vmdk
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33285996544 subformat=twoGbMaxExtentSparse
>  wrote 1024/1024 bytes at offset 65024
>  1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  wrote 1024/1024 bytes at offset 2147483136
> @@ -2352,10 +2352,10 @@ wrote 1024/1024 bytes at offset 2147483136
>  wrote 1024/1024 bytes at offset 5368709120
>  1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
>  Offset          Length          Mapped to       File
> -0               0x20000         0x50000         TEST_DIR/iotest-version3-s001.vmdk
> -0x7fff0000      0x10000         0x70000         TEST_DIR/iotest-version3-s001.vmdk
> -0x80000000      0x10000         0x50000         TEST_DIR/iotest-version3-s002.vmdk
> -0x140000000     0x10000         0x50000         TEST_DIR/iotest-version3-s003.vmdk
> +0               0x20000         0x50000         TEST_DIR/t-s001.vmdk
> +0x7fff0000      0x10000         0x70000         TEST_DIR/t-s001.vmdk
> +0x80000000      0x10000         0x50000         TEST_DIR/t-s002.vmdk
> +0x140000000     0x10000         0x50000         TEST_DIR/t-s003.vmdk
>  
>  === Testing afl image with a very large capacity ===
>  qemu-img: Can't get image size 'TEST_DIR/afl9.IMGFMT': File too large
> diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc
> index 2548e58b99..bfbc80e5f6 100644
> --- a/tests/qemu-iotests/common.rc
> +++ b/tests/qemu-iotests/common.rc
> @@ -92,6 +92,7 @@ else
>          TEST_IMG=$IMGPROTO:$TEST_DIR/t.$IMGFMT
>      fi
>  fi
> +ORIG_TEST_IMG="$TEST_IMG"
>  
>  _optstr_add()
>  {
> @@ -228,6 +229,8 @@ _cleanup_test_img()
>              if [ -n "$SAMPLE_IMG_FILE" ]
>              then
>                  rm -f "$TEST_DIR/$SAMPLE_IMG_FILE"
> +                SAMPLE_IMG_FILE=
> +                TEST_IMG="$ORIG_TEST_IMG"
>              fi
>              ;;
>  
> -- 
> 2.13.3
> 
> 

You aren't kidding; I did a before and after test while reviewing, and it
left 518 (mostly empty) images behind before!

Reviewed-by: Jeff Cody <jcody@redhat.com>

  parent reply	other threads:[~2017-07-28 21:39 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-28 13:14 [Qemu-devel] [PATCH for-2.10 0/7] qemu-iotests: Fix leaked temporary file fixes Kevin Wolf
2017-07-28 13:14 ` [Qemu-devel] [PATCH for-2.10 1/7] qemu-iotests/041: Fix leaked scratch images Kevin Wolf
2017-07-28 19:28   ` Eric Blake
2017-07-28 21:34   ` Jeff Cody
2017-07-28 13:14 ` [Qemu-devel] [PATCH for-2.10 2/7] qemu-iotests: Remove blkdebug.conf after tests Kevin Wolf
2017-07-28 15:33   ` Jeff Cody
2017-07-28 19:27   ` Eric Blake
2017-07-28 13:14 ` [Qemu-devel] [PATCH for-2.10 3/7] qemu-iotests/141: Fix image cleanup Kevin Wolf
2017-07-28 21:04   ` Jeff Cody
2017-07-28 13:14 ` [Qemu-devel] [PATCH for-2.10 4/7] qemu-iotests/153: Fix leaked scratch images Kevin Wolf
2017-07-28 15:37   ` Jeff Cody
2017-07-28 13:14 ` [Qemu-devel] [PATCH for-2.10 5/7] qemu-iotests/162: Fix leaked temporary files Kevin Wolf
2017-07-28 21:18   ` Jeff Cody
2017-07-28 13:14 ` [Qemu-devel] [PATCH for-2.10 6/7] qemu-iotests/063: Fix leaked image Kevin Wolf
2017-07-28 21:21   ` Jeff Cody
2017-07-28 13:14 ` [Qemu-devel] [PATCH for-2.10 7/7] qemu-iotests/059: Fix leaked image files Kevin Wolf
2017-07-28 19:33   ` Eric Blake
2017-07-28 21:39   ` Jeff Cody [this message]
2017-07-28 19:34 ` [Qemu-devel] [PATCH for-2.10 0/7] qemu-iotests: Fix leaked temporary file fixes Eric Blake

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170728213923.GH5109@localhost.localdomain \
    --to=jcody@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.