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

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