Commit 3f394472 authored by Max Reitz's avatar Max Reitz Committed by Stefan Hajnoczi
Browse files

iotests: Fix test 039



Test 039 used qemu-io -c abort for simulating a qemu crash; however,
abort() generally results in a core dump and ulimit -c 0 is no reliable
way of preventing that. Use "sigraise $(kill -l KILL)" instead to have
it crash without a core dump.

Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
Reviewed-by: default avatarFam Zheng <famz@redhat.com>
Message-id: 1418032092-16813-4-git-send-email-mreitz@redhat.com
Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
parent 9e0c3e8d
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -47,9 +47,11 @@ _supported_os Linux
_default_cache_mode "writethrough"
_supported_cache_modes "writethrough"

_no_dump_exec()
_subshell_exec()
{
    (ulimit -c 0; exec "$@")
    # Executing crashing commands in a subshell prevents information like the
    # "Killed" line from being lost
    (exec "$@")
}

size=128M
@@ -72,7 +74,9 @@ echo "== Creating a dirty image file =="
IMGOPTS="compat=1.1,lazy_refcounts=on"
_make_test_img $size

_no_dump_exec $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" 2>&1 | _filter_qemu_io
_subshell_exec $QEMU_IO -c "write -P 0x5a 0 512" \
                        -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 \
    | _filter_qemu_io

# The dirty bit must be set
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
@@ -105,7 +109,9 @@ echo "== Opening a dirty image read/write should repair it =="
IMGOPTS="compat=1.1,lazy_refcounts=on"
_make_test_img $size

_no_dump_exec $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" 2>&1 | _filter_qemu_io
_subshell_exec $QEMU_IO -c "write -P 0x5a 0 512" \
                        -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 \
    | _filter_qemu_io

# The dirty bit must be set
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
@@ -121,7 +127,9 @@ echo "== Creating an image file with lazy_refcounts=off =="
IMGOPTS="compat=1.1,lazy_refcounts=off"
_make_test_img $size

_no_dump_exec $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" 2>&1 | _filter_qemu_io
_subshell_exec $QEMU_IO -c "write -P 0x5a 0 512" \
                        -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 \
    | _filter_qemu_io

# The dirty bit must not be set since lazy_refcounts=off
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+3 −3
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ No errors were found on the image.
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
./039: Aborted                 ( ulimit -c 0; exec "$@" )
./039: Killed                  ( exec "$@" )
incompatible_features     0x1
ERROR cluster 5 refcount=0 reference=1
ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
@@ -46,7 +46,7 @@ read 512/512 bytes at offset 0
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
./039: Aborted                 ( ulimit -c 0; exec "$@" )
./039: Killed                  ( exec "$@" )
incompatible_features     0x1
ERROR cluster 5 refcount=0 reference=1
Rebuilding refcount structure
@@ -60,7 +60,7 @@ incompatible_features 0x0
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 
wrote 512/512 bytes at offset 0
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
./039: Aborted                 ( ulimit -c 0; exec "$@" )
./039: Killed                  ( exec "$@" )
incompatible_features     0x0
No errors were found on the image.