qemu/tests/qemu-iotests
Nir Soffer d05ae948cc Consider discard option when writing zeros
When opening an image with discard=off, we punch hole in the image when
writing zeroes, making the image sparse. This breaks users that want to
ensure that writes cannot fail with ENOSPACE by using fully allocated
images[1].

bdrv_co_pwrite_zeroes() correctly disables BDRV_REQ_MAY_UNMAP if we
opened the child without discard=unmap or discard=on. But we don't go
through this function when accessing the top node. Move the check down
to bdrv_co_do_pwrite_zeroes() which seems to be used in all code paths.

This change implements the documented behavior, punching holes only when
opening the image with discard=on or discard=unmap. This may not be the
best default but can improve it later.

The test depends on a file system supporting discard, deallocating the
entire file when punching hole with the length of the entire file.
Tested with xfs, ext4, and tmpfs.

[1] https://lists.nongnu.org/archive/html/qemu-discuss/2024-06/msg00003.html

Signed-off-by: Nir Soffer <nsoffer@redhat.com>
Message-id: 20240628202058.1964986-3-nsoffer@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2024-07-11 11:06:36 +02:00
..
001
2021-01-20 14:53:22 -06:00
002
2021-01-20 14:53:22 -06:00
003
2021-01-20 14:53:22 -06:00
004
2021-01-20 14:53:22 -06:00
005
2021-05-12 17:42:23 +02:00
007
2021-01-20 14:53:22 -06:00
008
2021-01-20 14:53:22 -06:00
009
2021-01-20 14:53:22 -06:00
010
2021-01-20 14:53:22 -06:00
011
2021-01-20 14:53:22 -06:00
012
2021-01-20 14:53:22 -06:00
013
2021-01-20 14:53:22 -06:00
014
2021-01-20 14:53:22 -06:00
015
2021-01-20 14:53:22 -06:00
017
2021-01-20 14:53:22 -06:00
018
2021-01-20 14:53:22 -06:00
019
2021-01-20 14:53:22 -06:00
020
2021-01-20 14:53:22 -06:00
021
2021-01-20 14:53:22 -06:00
023
2021-01-20 14:53:22 -06:00
026
2021-01-20 14:53:22 -06:00
2020-12-11 17:52:40 +01:00
029
2023-09-08 13:08:52 +03:00
032
2021-01-20 14:53:22 -06:00
034
2021-01-20 14:53:22 -06:00
035
2021-01-20 14:53:22 -06:00
037
2021-01-20 14:53:22 -06:00
038
2021-01-20 14:53:22 -06:00
2020-09-08 13:40:49 +02:00
042
2021-01-20 14:53:22 -06:00
043
2021-01-20 14:53:22 -06:00
044
2022-02-01 10:51:39 +01:00
046
2023-09-08 13:08:52 +03:00
2021-03-29 18:06:14 +02:00
047
2021-01-20 14:53:22 -06:00
048
2021-01-20 14:53:22 -06:00
049
2021-01-20 14:53:22 -06:00
050
2021-01-20 14:53:22 -06:00
051
2022-10-27 20:13:32 +02:00
052
2021-01-20 14:53:22 -06:00
053
2021-01-20 14:53:22 -06:00
054
2021-01-20 14:53:22 -06:00
057
2021-01-20 14:53:22 -06:00
058
2021-01-20 14:53:22 -06:00
063
2021-01-20 14:53:22 -06:00
2020-01-06 13:43:07 +01:00
065
2023-02-01 16:52:33 +01:00
2017-05-11 12:08:24 +02:00
2017-09-06 15:19:01 +01:00
071
2023-09-08 13:08:52 +03:00
073
2021-01-20 14:53:22 -06:00
075
2021-01-20 14:53:22 -06:00
076
2021-01-20 14:53:22 -06:00
077
2021-01-20 14:53:22 -06:00
078
2021-01-20 14:53:22 -06:00
079
2021-01-20 14:53:22 -06:00
080
2021-01-20 14:53:22 -06:00
081
2021-01-20 14:53:22 -06:00
082
2021-01-20 14:53:22 -06:00
083
2021-01-20 14:53:22 -06:00
086
2021-01-20 14:53:22 -06:00
088
2021-01-20 14:53:22 -06:00
2020-12-11 17:52:40 +01:00
2020-01-06 13:43:07 +01:00
092
2021-01-20 14:53:22 -06:00
096
2021-01-20 14:53:22 -06:00
101
2021-01-20 14:53:22 -06:00
104
2021-01-20 14:53:22 -06:00
2018-06-11 16:18:45 +02:00
116
2021-01-20 14:53:22 -06:00
2021-03-29 14:13:55 +02:00
118
2023-10-31 13:51:33 +01:00
2021-01-26 14:36:37 +01:00
128
2021-01-20 14:53:22 -06:00
133
2021-01-20 14:53:22 -06:00
136
2021-01-20 14:53:22 -06:00
2016-05-19 16:45:31 +02:00
137
2022-02-01 10:51:39 +01:00
2020-01-06 13:43:07 +01:00
144
2024-02-15 16:40:06 +00:00
2024-02-15 16:40:06 +00:00
145
2021-01-20 14:53:22 -06:00
148
2021-01-20 14:53:22 -06:00
154
2021-01-20 14:53:22 -06:00
2020-03-11 15:54:38 +01:00
159
2021-01-20 14:53:22 -06:00
2016-09-20 22:10:57 +02:00
160
2021-01-20 14:53:22 -06:00
2016-09-20 22:10:57 +02:00
161
2021-01-20 14:53:22 -06:00
163
2022-04-25 14:30:03 +02:00
2017-09-26 15:00:32 +02:00
170
2021-01-20 14:53:22 -06:00
2016-09-20 22:10:57 +02:00
171
2021-01-20 14:53:22 -06:00
174
2021-01-20 14:53:22 -06:00
2017-02-12 00:47:42 +01:00
175
2021-01-20 14:53:22 -06:00
177
2021-01-20 14:53:22 -06:00
178
2021-01-26 14:36:37 +01:00
179
2021-01-20 14:53:22 -06:00
187
2021-01-20 14:53:22 -06:00
190
2021-01-20 14:53:22 -06:00
191
2021-01-20 14:53:22 -06:00
195
2021-01-20 14:53:22 -06:00
197
2023-09-08 10:06:25 -04:00
201
2021-01-20 14:53:22 -06:00
204
2021-01-20 14:53:22 -06:00
2020-09-07 12:31:31 +02:00
206
2021-11-23 15:39:12 +01:00
207
2022-03-22 10:50:10 +01:00
2022-03-22 10:50:10 +01:00
208
2021-01-20 14:53:22 -06:00
209
2022-02-01 10:51:39 +01:00
211
2022-03-22 10:14:34 +01:00
2022-03-22 10:14:34 +01:00
212
2021-01-20 14:53:22 -06:00
213
2021-01-20 14:53:22 -06:00
215
2023-09-08 13:08:52 +03:00
217
2021-01-20 14:53:22 -06:00
220
2021-01-20 14:53:22 -06:00
221
2021-01-20 14:53:22 -06:00
226
2021-01-20 14:53:22 -06:00
232
2021-01-20 14:53:22 -06:00
2019-03-19 15:49:29 +01:00
239
2021-01-20 14:53:22 -06:00
2019-02-01 13:46:44 +01:00
243
2021-01-20 14:53:22 -06:00
245
2024-07-11 11:06:36 +02:00
247
2021-01-20 14:53:22 -06:00
248
2021-07-09 13:19:11 +02:00
2021-07-09 13:19:11 +02:00
249
2021-01-20 14:53:22 -06:00
2019-06-04 16:55:58 +02:00
253
2021-01-20 14:53:22 -06:00
256
2023-10-12 14:21:43 -04:00
257
2023-10-12 14:21:43 -04:00
2020-09-02 16:32:14 -05:00
265
2021-01-20 14:53:22 -06:00
267
2021-01-20 14:53:22 -06:00
268
2021-01-20 14:53:22 -06:00
272
2021-01-20 14:53:22 -06:00
273
2021-01-20 14:53:22 -06:00
2019-11-18 16:01:31 -06:00
279
2021-01-20 14:53:22 -06:00
282
2021-01-20 14:53:22 -06:00
283
2021-12-28 15:18:59 +01:00
2021-12-28 15:18:59 +01:00
288
2021-01-20 14:53:22 -06:00
289
2021-01-20 14:53:22 -06:00
292
2021-01-20 14:53:22 -06:00
293
2021-01-20 14:53:22 -06:00
294
2021-01-20 14:53:22 -06:00
297
2021-11-01 11:54:59 -04:00
299
2021-01-20 14:53:22 -06:00
301
2021-07-09 13:18:32 +02:00
302
2022-02-01 10:51:39 +01:00
2022-02-01 10:51:39 +01:00
304
2021-01-20 14:53:22 -06:00
305
2021-01-20 14:53:22 -06:00
2021-01-27 20:53:14 +01:00

=== This is the QEMU I/O test suite ===

* Intro

This package contains a simple test suite for the I/O layer of qemu.
It does not require a guest, but only the qemu, qemu-img and qemu-io
binaries.  This does limit it to exercise the low-level I/O path only
but no actual block drivers like ide, scsi or virtio.

* Usage

Just run ./check to run all tests for the raw image format, or ./check
-qcow2 to test the qcow2 image format.  The output of ./check -h explains
additional options to test further image formats or I/O methods.

* Feedback and patches

Please send improvements to the test suite, general feedback or just
reports of failing tests cases to qemu-devel@nongnu.org with a CC:
to qemu-block@nongnu.org.