qemu-block
[Top][All Lists]
Advanced

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

Re: [Qemu-block] Failing QEMU iotest 175


From: Nir Soffer
Subject: Re: [Qemu-block] Failing QEMU iotest 175
Date: Sat, 11 May 2019 00:15:34 +0300

On Sat, May 4, 2019 at 12:32 AM Nir Soffer <address@hidden> wrote:


On Fri, May 3, 2019, 23:21 Eric Blake <address@hidden> wrote:
...
>>>  == creating image with preallocation off ==
>>>  Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=off
>>> -size=1048576, blocks=0
>>> +size=1048576, blocks=2
>>>
>>>  == creating image with preallocation full ==
>>>  Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=full
>>> -size=1048576, blocks=2048
>>> +size=1048576, blocks=2050
>>
>> 2048/2050, so we DO have some indication of whether the file is sparse
>> or fully allocated.
>
> Maybe we could check that the value after "blocks=" is a single digit in
> the first case, and matches "blocks=20.." in the second case?

I wonder if 'qemu-img map --output=json $TEST_IMG' might be any more
reliable (at least for ignoring any extra block allocations associated
with the file, if it is some journaling option or xattr or other reason
why your files seem to occupy more disk sectors than just the size of
the file would imply).

I think it should work better and is more correct, testing actual sparsness instead of underlying file system implementation.

I can send a fix next week.

I tested this change:

$ git diff
diff --git a/tests/qemu-iotests/175 b/tests/qemu-iotests/175
index d0ffc495c2..0e3faa50e4 100755
--- a/tests/qemu-iotests/175
+++ b/tests/qemu-iotests/175
@@ -43,17 +43,17 @@ _supported_os Linux
 size=1m
 
 echo
 echo "== creating image with default preallocation =="
 _make_test_img $size | _filter_imgfmt
-stat -c "size=%s, blocks=%b" $TEST_IMG
+$QEMU_IMG map -f $IMGFMT --output json "$TEST_IMG"
 
 for mode in off full falloc; do
     echo
     echo "== creating image with preallocation $mode =="
     IMGOPTS=preallocation=$mode _make_test_img $size | _filter_imgfmt
-    stat -c "size=%s, blocks=%b" $TEST_IMG
+    $QEMU_IMG map -f $IMGFMT --output json "$TEST_IMG"
 done
 
 # success, all done
 echo "*** done"
 rm -f $seq.full

It almost works:
$ ./check -raw 175
QEMU          -- "/home/nsoffer/src/qemu/build/tests/qemu-iotests/../../x86_64-softmmu/qemu-system-x86_64" -nodefaults -machine accel=qtest
QEMU_IMG      -- "/home/nsoffer/src/qemu/build/tests/qemu-iotests/../../qemu-img" 
QEMU_IO       -- "/home/nsoffer/src/qemu/build/tests/qemu-iotests/../../qemu-io"  --cache writeback -f raw
QEMU_NBD      -- "/home/nsoffer/src/qemu/build/tests/qemu-iotests/../../qemu-nbd" 
IMGFMT        -- raw
IMGPROTO      -- file
PLATFORM      -- Linux/x86_64 lean 5.0.11-100.fc28.x86_64
TEST_DIR      -- /home/nsoffer/src/qemu/build/tests/qemu-iotests/scratch
SOCKET_SCM_HELPER -- /home/nsoffer/src/qemu/build/tests/qemu-iotests/socket_scm_helper

175         - output mismatch (see 175.out.bad)
--- /home/nsoffer/src/qemu/tests/qemu-iotests/175.out 2019-03-23 18:35:17.788177871 +0200
+++ /home/nsoffer/src/qemu/build/tests/qemu-iotests/175.out.bad 2019-05-11 00:06:09.515873624 +0300
@@ -2,17 +2,17 @@
 
 == creating image with default preallocation ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
-size=1048576, blocks=0
+[{ "start": 0, "length": 1048576, "depth": 0, "zero": true, "data": false, "offset": 0}]
 
 == creating image with preallocation off ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=off
-size=1048576, blocks=0
+[{ "start": 0, "length": 1048576, "depth": 0, "zero": true, "data": false, "offset": 0}]
 
 == creating image with preallocation full ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=full
-size=1048576, blocks=2048
+[{ "start": 0, "length": 1048576, "depth": 0, "zero": false, "data": true, "offset": 0}]
 
 == creating image with preallocation falloc ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=falloc
-size=1048576, blocks=2048
+[{ "start": 0, "length": 1048576, "depth": 0, "zero": true, "data": false, "offset": 0}]
The "falloc" test looks exactly like "off", qemu-img map does not report the allocation
status.
Nir

reply via email to

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