cryptospore / rpms / qemu-kvm

Forked from rpms/qemu-kvm 2 years ago
Clone

Blame SOURCES/kvm-iotests-026-Test-EIO-on-allocation-in-a-data-file.patch

8fced6
From d8776fd50df7bb5cddfc94126356f8b5084f5344 Mon Sep 17 00:00:00 2001
8fced6
From: Max Reitz <mreitz@redhat.com>
8fced6
Date: Mon, 13 Jul 2020 14:24:50 -0400
8fced6
Subject: [PATCH 3/4] iotests/026: Test EIO on allocation in a data-file
8fced6
8fced6
RH-Author: Max Reitz <mreitz@redhat.com>
8fced6
Message-id: <20200713142451.289703-4-mreitz@redhat.com>
8fced6
Patchwork-id: 97955
8fced6
O-Subject: [RHEL-8.3.0 qemu-kvm PATCH 3/4] iotests/026: Test EIO on allocation in a data-file
8fced6
Bugzilla: 1807057
8fced6
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
8fced6
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
8fced6
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
8fced6
8fced6
Test what happens when writing data to an external data file, where the
8fced6
write requires an L2 entry to be allocated, but the data write fails.
8fced6
8fced6
Signed-off-by: Max Reitz <mreitz@redhat.com>
8fced6
Message-Id: <20200225143130.111267-4-mreitz@redhat.com>
8fced6
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
8fced6
(cherry picked from commit 81311255f217859413c94f2cd9cebf2684bbda94)
8fced6
Signed-off-by: Max Reitz <mreitz@redhat.com>
8fced6
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
8fced6
---
8fced6
 tests/qemu-iotests/026             | 32 ++++++++++++++++++++++++++++++
8fced6
 tests/qemu-iotests/026.out         |  6 ++++++
8fced6
 tests/qemu-iotests/026.out.nocache |  6 ++++++
8fced6
 3 files changed, 44 insertions(+)
8fced6
8fced6
diff --git a/tests/qemu-iotests/026 b/tests/qemu-iotests/026
8fced6
index d89729697f..c1c96a41d9 100755
8fced6
--- a/tests/qemu-iotests/026
8fced6
+++ b/tests/qemu-iotests/026
8fced6
@@ -30,6 +30,7 @@ _cleanup()
8fced6
 {
8fced6
 	_cleanup_test_img
8fced6
     rm "$TEST_DIR/blkdebug.conf"
8fced6
+    rm -f "$TEST_IMG.data_file"
8fced6
 }
8fced6
 trap "_cleanup; exit \$status" 0 1 2 3 15
8fced6
 
8fced6
@@ -236,6 +237,37 @@ $QEMU_IO -c "write 0 $CLUSTER_SIZE" "$BLKDBG_TEST_IMG" | _filter_qemu_io
8fced6
 
8fced6
 _check_test_img
8fced6
 
8fced6
+echo
8fced6
+echo === Avoid freeing external data clusters on failure ===
8fced6
+echo
8fced6
+
8fced6
+# Similar test as the last one, except we test what happens when there
8fced6
+# is an error when writing to an external data file instead of when
8fced6
+# writing to a preallocated zero cluster
8fced6
+_make_test_img -o "data_file=$TEST_IMG.data_file" $CLUSTER_SIZE
8fced6
+
8fced6
+# Put blkdebug above the data-file, and a raw node on top of that so
8fced6
+# that blkdebug will see a write_aio event and emit an error
8fced6
+$QEMU_IO -c "write 0 $CLUSTER_SIZE" \
8fced6
+    "json:{
8fced6
+         'driver': 'qcow2',
8fced6
+         'file': { 'driver': 'file', 'filename': '$TEST_IMG' },
8fced6
+         'data-file': {
8fced6
+             'driver': 'raw',
8fced6
+             'file': {
8fced6
+                 'driver': 'blkdebug',
8fced6
+                 'config': '$TEST_DIR/blkdebug.conf',
8fced6
+                 'image': {
8fced6
+                     'driver': 'file',
8fced6
+                     'filename': '$TEST_IMG.data_file'
8fced6
+                 }
8fced6
+             }
8fced6
+         }
8fced6
+     }" \
8fced6
+    | _filter_qemu_io
8fced6
+
8fced6
+_check_test_img
8fced6
+
8fced6
 # success, all done
8fced6
 echo "*** done"
8fced6
 rm -f $seq.full
8fced6
diff --git a/tests/qemu-iotests/026.out b/tests/qemu-iotests/026.out
8fced6
index 83989996ff..c1b3b58482 100644
8fced6
--- a/tests/qemu-iotests/026.out
8fced6
+++ b/tests/qemu-iotests/026.out
8fced6
@@ -653,4 +653,10 @@ wrote 1024/1024 bytes at offset 0
8fced6
 1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
8fced6
 write failed: Input/output error
8fced6
 No errors were found on the image.
8fced6
+
8fced6
+=== Avoid freeing external data clusters on failure ===
8fced6
+
8fced6
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1024 data_file=TEST_DIR/t.IMGFMT.data_file
8fced6
+write failed: Input/output error
8fced6
+No errors were found on the image.
8fced6
 *** done
8fced6
diff --git a/tests/qemu-iotests/026.out.nocache b/tests/qemu-iotests/026.out.nocache
8fced6
index 9359d26d7e..8d5001648a 100644
8fced6
--- a/tests/qemu-iotests/026.out.nocache
8fced6
+++ b/tests/qemu-iotests/026.out.nocache
8fced6
@@ -661,4 +661,10 @@ wrote 1024/1024 bytes at offset 0
8fced6
 1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
8fced6
 write failed: Input/output error
8fced6
 No errors were found on the image.
8fced6
+
8fced6
+=== Avoid freeing external data clusters on failure ===
8fced6
+
8fced6
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1024 data_file=TEST_DIR/t.IMGFMT.data_file
8fced6
+write failed: Input/output error
8fced6
+No errors were found on the image.
8fced6
 *** done
8fced6
-- 
8fced6
2.27.0
8fced6