qemu/tests/qemu-iotests
Stefan Hajnoczi bfe8043e92 qcow2: implement lazy refcounts
Lazy refcounts is a performance optimization for qcow2 that postpones
refcount metadata updates and instead marks the image dirty.  In the
case of crash or power failure the image will be left in a dirty state
and repaired next time it is opened.

Reducing metadata I/O is important for cache=writethrough and
cache=directsync because these modes guarantee that data is on disk
after each write (hence we cannot take advantage of caching updates in
RAM).  Refcount metadata is not needed for guest->file block address
translation and therefore does not need to be on-disk at the time of
write completion - this is the motivation behind the lazy refcount
optimization.

The lazy refcount optimization must be enabled at image creation time:

  qemu-img create -f qcow2 -o compat=1.1,lazy_refcounts=on a.qcow2 10G
  qemu-system-x86_64 -drive if=virtio,file=a.qcow2,cache=writethrough

Update qemu-iotests 031 and 036 since the extension header size changes
when we add feature bit table entries.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2012-08-06 22:39:14 +02:00
..
.gitignore qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
001 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
001.out qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
002 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
002.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
003 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
003.out qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
004 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
004.out qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
005 iotests: fix error in 005 2012-04-19 15:48:52 +02:00
005.out iotests: fix error in 005 2012-04-19 15:48:52 +02:00
006 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
006.out qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
007 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
007.out qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
008 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
008.out qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
009 qemu-iotests: Fix call syntax for qemu-io 2012-04-05 15:10:06 +02:00
009.out qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
010 qemu-iotests: Fix call syntax for qemu-io 2012-04-05 15:10:06 +02:00
010.out qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
011 qemu-iotests: Fix call syntax for qemu-io 2012-04-05 15:10:06 +02:00
011.out qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
012 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
012.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
013 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
013.out qemu-iotests: Always filter cluster_size out in _make_test_img 2012-04-19 15:48:52 +02:00
014 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
014.out qemu-iotests: Always filter cluster_size out in _make_test_img 2012-04-19 15:48:52 +02:00
015 qemu-iotests: Update filter for default cluster size 2012-02-23 10:29:47 +01:00
015.out qemu-iotests: Always filter cluster_size out in _make_test_img 2012-04-19 15:48:52 +02:00
016 qemu-iotests: only run 016 for file and sheepdog protocols 2012-02-23 10:29:47 +01:00
016.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
017 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
017.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
018 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
018.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
019 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
019.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
020 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
020.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
021 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
021.out qemu-iotests: test invalid pattern argument handling in qemu-io 2012-02-22 16:17:02 +01:00
022 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
022.out qemu-iotests: Always filter cluster_size out in _make_test_img 2012-04-19 15:48:52 +02:00
023 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
023.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
024 qemu-iotests: Use zero-based offsets for IO patterns 2012-02-23 10:29:46 +01:00
024.out qemu-iotests: Always filter cluster_size out in _make_test_img 2012-04-19 15:48:52 +02:00
025 qemu-iotests: add qed support to 025 image resize test 2012-02-23 10:29:47 +01:00
025.out qemu-iotests: test bdrv_truncate 2012-02-22 16:17:03 +01:00
026 qemu-iotests: 026: Reduce output changes for cache=none qcow2 2012-02-29 15:48:44 +01:00
026.out qemu-iotests: Always filter cluster_size out in _make_test_img 2012-04-19 15:48:52 +02:00
027 qemu-iotests: add support for rbd and sheepdog protocols 2012-02-23 10:29:46 +01:00
027.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
028 qemu-iotests: Test rebase with short backing file 2012-02-29 15:48:44 +01:00
028.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
029 qemu-iotests: test loading internal snapshots 2012-02-23 10:29:47 +01:00
029.out qemu-iotests: Always filter cluster_size out in _make_test_img 2012-04-19 15:48:52 +02:00
030 qemu-iotests: start vms in qtest mode 2012-06-15 14:03:43 +02:00
030.out stream: add testcase for partial streaming 2012-05-10 11:01:58 +02:00
031 qemu-iotests: Fix test 031 for qcow2 v3 support 2012-04-20 15:57:30 +02:00
031.out qcow2: implement lazy refcounts 2012-08-06 22:39:14 +02:00
032 qemu-iotests: Test bdrv_close while AIO is in flight 2012-04-19 15:48:52 +02:00
032.out qemu-iotests: Test bdrv_close while AIO is in flight 2012-04-19 15:48:52 +02:00
033 qemu-iotests: add a simple test for write_zeroes 2012-04-20 15:57:30 +02:00
033.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
034 qemu-iotests: Test backing file COW with zero clusters 2012-04-20 15:57:30 +02:00
034.out qemu-iotests: Test backing file COW with zero clusters 2012-04-20 15:57:30 +02:00
035 qemu-iotests: mark 035 qcow2-only 2012-05-25 18:13:44 +02:00
035.out qemu-io: correctly print non-integer values as decimals 2012-05-10 10:32:12 +02:00
036 qemu-iotests: add 036 autoclear feature bit test 2012-06-15 14:03:44 +02:00
036.out qcow2: implement lazy refcounts 2012-08-06 22:39:14 +02:00
037 qemu-iotests: Some backing file COW tests 2012-06-15 14:03:43 +02:00
037.out qemu-iotests: Some backing file COW tests 2012-06-15 14:03:43 +02:00
038 qemu-iotests: COW with many AIO requests on the same cluster 2012-06-15 14:03:43 +02:00
038.out qemu-iotests: COW with many AIO requests on the same cluster 2012-06-15 14:03:43 +02:00
COPYING qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
Makefile qemu-iotests: Initial import into the public repository. 2012-02-22 16:15:22 +01:00
README qemu-iotests: README: Fix spelling 2012-02-23 10:29:46 +01:00
check qemu-iotests: Add -o and make v3 the default for qcow2 2012-04-20 15:57:30 +02:00
common qemu-iotests: Valgrind support 2012-07-17 16:48:32 +02:00
common.config iotests: Resolve test failures caused by hostname 2012-04-20 12:58:50 +02:00
common.filter qemu-iotests: Filter out DOS line endings 2012-02-29 15:48:44 +01:00
common.pattern qemu-iotests: Use zero-based offsets for IO patterns 2012-02-23 10:29:46 +01:00
common.rc qemu-iotests: ignore qemu-img create lazy_refcounts output 2012-08-06 22:39:14 +02:00
group qemu-iotests: add 036 autoclear feature bit test 2012-06-15 14:03:44 +02:00
iotests.py qemu-iotests: start vms in qtest mode 2012-06-15 14:03:43 +02:00
qcow2.py qemu-iotests: add qcow2.py set-feature-bit command 2012-06-15 14:03:44 +02:00
qed.py qemu-iotests: add qed.py image manipulation utility 2012-08-06 22:39:14 +02:00

README

=== 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@savannah.nongnu.org.