Peter Lieven 8dcd3c9b91 qemu-img: align result of is_allocated_sectors
We currently don't enforce that the sparse segments we detect during convert are
aligned. This leads to unnecessary and costly read-modify-write cycles either
internally in Qemu or in the background on the storage device as nearly all
modern filesystems or hardware have a 4k alignment internally.

This patch modifies is_allocated_sectors so that its *pnum result will always
end at an alignment boundary. This way all requests will end at an alignment
boundary. The start of all requests will also be aligned as long as the results
of get_block_status do not lead to an unaligned offset.

The number of RMW cycles when converting an example image [1] to a raw device that
has 4k sector size is about 4600 4k read requests to perform a total of about 15000
write requests. With this path the additional 4600 read requests are eliminated while
the number of total write requests stays constant.

[1] https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-amd64-disk1.vmdk

Signed-off-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2018-07-12 18:24:08 +02:00
..
020
2018-01-23 12:34:43 +01:00
2018-01-23 12:34:43 +01:00
025
2018-03-26 12:17:40 +02:00
030
2018-05-23 14:30:51 +02:00
033
2018-03-13 15:38:55 -05:00
040
2018-05-23 14:30:51 +02:00
041
2018-05-23 14:30:51 +02:00
2017-07-11 17:45:02 +02:00
046
2017-05-11 11:08:40 +02:00
051
2018-07-05 10:29:19 +02:00
055
2018-03-19 12:01:24 +01:00
056
2018-03-19 12:01:24 +01:00
2018-03-19 12:01:24 +01:00
059
2018-03-09 15:40:07 +01:00
2018-02-13 12:27:17 +01:00
060
2018-06-30 17:50:48 +02:00
2018-06-30 17:50:48 +02:00
063
2018-06-29 14:20:56 +02:00
2015-01-23 12:41:32 -05:00
066
2017-05-11 12:08:24 +02:00
2017-05-11 12:08:24 +02:00
067
2018-01-23 12:34:43 +01:00
2018-01-23 12:34:43 +01:00
068
2017-09-06 15:19:01 +01:00
2017-09-06 15:19:01 +01:00
075
2017-11-27 11:25:41 +01:00
077
2017-11-14 18:06:25 +01:00
078
2017-11-27 11:25:41 +01:00
083
2017-11-14 18:06:25 +01:00
086
2018-05-23 13:29:06 +02:00
087
2017-11-17 18:21:31 +01:00
089
2018-03-19 14:58:36 -05:00
2018-03-19 14:58:36 -05:00
2018-05-23 14:30:51 +02:00
095
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
102
2018-01-23 12:34:42 +01:00
2018-01-23 12:34:42 +01:00
109
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2015-12-18 14:36:17 +01:00
113
2018-06-11 16:18:45 +02:00
2018-06-11 16:18:45 +02:00
2017-07-10 13:18:05 +02:00
124
2018-05-23 14:30:51 +02:00
125
2017-10-26 15:01:14 +02:00
2017-10-26 15:01:14 +02:00
126
2017-07-11 17:45:00 +02:00
2018-05-23 13:29:03 +02:00
127
2017-10-26 15:01:13 +02:00
2018-05-23 14:30:51 +02:00
129
2018-03-09 15:40:07 +01:00
132
2018-03-09 15:40:07 +01:00
2016-05-19 16:45:31 +02:00
139
2018-03-09 15:40:07 +01:00
141
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
142
2017-07-11 17:45:00 +02:00
144
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
148
2018-03-09 15:40:07 +01:00
151
2018-06-18 17:05:17 +02:00
2018-06-18 17:05:17 +02:00
152
2018-03-09 15:40:07 +01:00
153
2018-07-12 18:24:08 +02:00
2018-07-12 18:24:08 +02:00
155
2018-05-23 14:30:51 +02:00
156
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
159
2017-07-11 17:44:59 +02:00
2016-09-20 22:10:57 +02:00
160
2016-09-20 22:10:57 +02:00
2016-09-20 22:10:57 +02:00
163
2018-03-09 15:40:07 +01:00
2017-09-26 15:00:32 +02:00
169
2018-04-16 13:35:32 +02:00
170
2017-07-11 17:44:59 +02:00
2016-09-20 22:10:57 +02:00
171
2017-07-11 17:45:00 +02:00
2017-09-18 19:43:38 -04:00
2017-02-12 00:47:42 +01:00
2017-11-21 14:54:02 +01:00
178
2017-07-11 17:45:01 +02:00
182
2017-11-17 13:35:59 +01:00
183
2018-04-10 16:33:43 +02:00
2017-06-09 11:45:03 +02:00
184
2018-01-23 12:34:43 +01:00
2018-01-23 12:34:43 +01:00
185
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
191
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
194
2018-04-10 16:33:43 +02:00
199
2018-03-13 17:06:32 -04:00
200
2018-01-31 22:37:00 -05:00
206
2018-05-30 13:31:18 +02:00
207
2018-05-30 13:31:18 +02:00
209
2018-03-13 15:44:09 -05:00
210
2018-05-30 13:31:18 +02:00
211
2018-05-30 13:31:18 +02:00
212
2018-05-30 13:31:18 +02:00
213
2018-05-30 13:31:18 +02:00
214
2018-05-15 16:15:21 +02:00
2018-05-15 16:15:21 +02:00
215
2018-05-15 16:15:21 +02:00
219
2018-06-11 16:18:45 +02:00
2018-06-11 16:18:45 +02:00
222
2018-07-10 11:55:11 +02:00
2018-06-01 16:01:29 +01:00
2018-06-12 11:56:21 +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.