Files
qemu/tests/qemu-iotests
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
..
2018-01-23 12:34:43 +01:00
2018-01-23 12:34:43 +01:00
2018-03-26 12:17:40 +02:00
2018-05-23 14:30:51 +02:00
2018-03-13 15:38:55 -05:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2017-07-11 17:45:02 +02:00
2017-05-11 11:08:40 +02:00
2018-07-05 10:29:19 +02:00
2018-03-19 12:01:24 +01:00
2018-03-19 12:01:24 +01:00
2018-03-19 12:01:24 +01:00
2018-03-09 15:40:07 +01:00
2018-02-13 12:27:17 +01:00
2018-06-30 17:50:48 +02:00
2018-06-30 17:50:48 +02:00
2018-06-29 14:20:56 +02:00
2017-05-11 12:08:24 +02:00
2017-05-11 12:08:24 +02:00
2018-01-23 12:34:43 +01:00
2018-01-23 12:34:43 +01:00
2017-09-06 15:19:01 +01:00
2017-09-06 15:19:01 +01:00
2017-11-27 11:25:41 +01:00
2017-11-14 18:06:25 +01:00
2017-11-27 11:25:41 +01:00
2017-11-14 18:06:25 +01:00
2018-05-23 13:29:06 +02:00
2017-11-17 18:21:31 +01:00
2018-03-19 14:58:36 -05:00
2018-03-19 14:58:36 -05:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2018-01-23 12:34:42 +01:00
2018-01-23 12:34:42 +01:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2015-12-18 14:36:17 +01:00
2018-06-11 16:18:45 +02:00
2018-06-11 16:18:45 +02:00
2017-07-10 13:18:05 +02:00
2018-05-23 14:30:51 +02:00
2017-10-26 15:01:14 +02:00
2017-10-26 15:01:14 +02:00
2017-07-11 17:45:00 +02:00
2018-05-23 13:29:03 +02:00
2017-10-26 15:01:13 +02:00
2018-05-23 14:30:51 +02:00
2018-03-09 15:40:07 +01:00
2018-03-09 15:40:07 +01:00
2016-05-19 16:45:31 +02:00
2018-03-09 15:40:07 +01:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2017-07-11 17:45:00 +02:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2018-03-09 15:40:07 +01:00
2018-06-18 17:05:17 +02:00
2018-06-18 17:05:17 +02:00
2018-03-09 15:40:07 +01:00
2018-07-12 18:24:08 +02:00
2018-07-12 18:24:08 +02:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2017-07-11 17:44:59 +02:00
2016-09-20 22:10:57 +02:00
2016-09-20 22:10:57 +02:00
2016-09-20 22:10:57 +02:00
2018-03-09 15:40:07 +01:00
2017-09-26 15:00:32 +02:00
2018-04-16 13:35:32 +02:00
2017-07-11 17:44:59 +02:00
2016-09-20 22:10:57 +02:00
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
2017-07-11 17:45:01 +02:00
2017-11-17 13:35:59 +01:00
2018-04-10 16:33:43 +02:00
2017-06-09 11:45:03 +02:00
2018-01-23 12:34:43 +01:00
2018-01-23 12:34:43 +01:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2018-05-23 14:30:51 +02:00
2018-04-10 16:33:43 +02:00
2018-03-13 17:06:32 -04:00
2018-01-31 22:37:00 -05:00
2018-05-30 13:31:18 +02:00
2018-05-30 13:31:18 +02:00
2018-03-13 15:44:09 -05:00
2018-05-30 13:31:18 +02:00
2018-05-30 13:31:18 +02:00
2018-05-30 13:31:18 +02:00
2018-05-30 13:31:18 +02:00
2018-05-15 16:15:21 +02:00
2018-05-15 16:15:21 +02:00
2018-05-15 16:15:21 +02:00
2018-06-11 16:18:45 +02:00
2018-06-11 16:18:45 +02:00
2018-07-10 11:55:11 +02:00
2018-06-01 16:01:29 +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.