qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
	qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>
Subject: [Qemu-devel] [PULL 04/15] iotests: Test allocate_first_block() with O_DIRECT
Date: Tue, 27 Aug 2019 20:23:02 +0200	[thread overview]
Message-ID: <20190827182313.25983-5-mreitz@redhat.com> (raw)
In-Reply-To: <20190827182313.25983-1-mreitz@redhat.com>

From: Nir Soffer <nirsof@gmail.com>

Using block_resize we can test allocate_first_block() with file
descriptor opened with O_DIRECT, ensuring that it works for any size
larger than 4096 bytes.

Testing smaller sizes is tricky as the result depends on the filesystem
used for testing. For example on NFS any size will work since O_DIRECT
does not require any alignment.

Signed-off-by: Nir Soffer <nsoffer@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Message-id: 20190827010528.8818-3-nsoffer@redhat.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 tests/qemu-iotests/175     | 28 ++++++++++++++++++++++++++++
 tests/qemu-iotests/175.out |  8 ++++++++
 2 files changed, 36 insertions(+)

diff --git a/tests/qemu-iotests/175 b/tests/qemu-iotests/175
index 7ba28b3c1b..55db2803ed 100755
--- a/tests/qemu-iotests/175
+++ b/tests/qemu-iotests/175
@@ -49,6 +49,23 @@ _filter_blocks()
         -e "s/blocks=$((extra_blocks + img_size / 512))\\(\$\\|[^0-9]\\)/max allocation/"
 }
 
+# Resize image using block_resize.
+# Parameter 1: image path
+# Parameter 2: new size
+_block_resize()
+{
+    local path=$1
+    local size=$2
+
+    $QEMU -qmp stdio -nographic -nodefaults \
+        -blockdev file,node-name=file,filename=$path,cache.direct=on \
+        <<EOF
+{'execute': 'qmp_capabilities'}
+{'execute': 'block_resize', 'arguments': {'node-name': 'file', 'size': $size}}
+{'execute': 'quit'}
+EOF
+}
+
 # get standard environment, filters and checks
 . ./common.rc
 . ./common.filter
@@ -57,6 +74,9 @@ _supported_fmt raw
 _supported_proto file
 _supported_os Linux
 
+_default_cache_mode none
+_supported_cache_modes none directsync
+
 size=$((1 * 1024 * 1024))
 
 touch "$TEST_DIR/empty"
@@ -79,6 +99,14 @@ for mode in off full falloc; do
     stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $min_blocks $size
 done
 
+for new_size in 4096 1048576; do
+    echo
+    echo "== resize empty image with block_resize =="
+    _make_test_img 0 | _filter_imgfmt
+    _block_resize $TEST_IMG $new_size >/dev/null
+    stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $min_blocks $new_size
+done
+
 # success, all done
 echo "*** done"
 rm -f $seq.full
diff --git a/tests/qemu-iotests/175.out b/tests/qemu-iotests/175.out
index 263e521262..39c2ee0f62 100644
--- a/tests/qemu-iotests/175.out
+++ b/tests/qemu-iotests/175.out
@@ -15,4 +15,12 @@ size=1048576, max allocation
 == creating image with preallocation falloc ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=falloc
 size=1048576, max allocation
+
+== resize empty image with block_resize ==
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=0
+size=4096, min allocation
+
+== resize empty image with block_resize ==
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=0
+size=1048576, min allocation
  *** done
-- 
2.21.0



  parent reply	other threads:[~2019-08-27 18:35 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-27 18:22 [Qemu-devel] [PULL 00/15] Block patches Max Reitz
2019-08-27 18:22 ` [Qemu-devel] [PULL 01/15] qemu-io: add pattern file for write command Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 02/15] block: fix permission update in bdrv_replace_node Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 03/15] block: posix: Always allocate the first block Max Reitz
2019-08-27 18:23 ` Max Reitz [this message]
2019-08-27 18:23 ` [Qemu-devel] [PULL 05/15] iotests: Fix _filter_img_create() Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 06/15] vmdk: Use bdrv_dirname() for relative extent paths Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 07/15] iotests: Keep testing broken " Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 08/15] vmdk: Reject invalid compressed writes Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 09/15] iotests: Disable broken streamOptimized tests Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 10/15] iotests: Disable 110 for vmdk.twoGbMaxExtentSparse Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 11/15] iotests: Disable 126 for flat vmdk subformats Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 12/15] file-posix: fix request_alignment typo Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 13/15] iotests: Check for enabled drivers before testing them Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 14/15] tests/check-block: Skip iotests when sanitizers are enabled Max Reitz
2019-08-27 18:23 ` [Qemu-devel] [PULL 15/15] iotests: Unify cache mode quoting Max Reitz
2019-09-03  8:39 ` [Qemu-devel] [PULL 00/15] Block patches Peter Maydell
2019-09-03 12:50   ` Max Reitz

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=20190827182313.25983-5-mreitz@redhat.com \
    --to=mreitz@redhat.com \
    --cc=peter.maydell@linaro.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).