xemu/tests/qemu-iotests
Paolo Bonzini b812f6719c mirror: perform COW if the cluster size is bigger than the granularity
When mirroring runs, the backing files for the target may not yet be
ready.  However, this means that a copy-on-write operation on the target
would fill the missing sectors with zeros.  Copy-on-write only happens
if the granularity of the dirty bitmap is smaller than the cluster size
(and only for clusters that are allocated in the source after the job
has started copying).  So far, the granularity was fixed to 1MB; to avoid
the problem we detected the situation and required the backing files to
be available in that case only.

However, we want to lower the granularity for efficiency, so we need
a better solution.  The solution is to always copy a whole cluster the
first time it is touched.  The code keeps a bitmap of clusters that
have already been allocated by the mirroring job, and only does "manual"
copy-on-write if the chunk being copied is zero in the bitmap.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2013-01-25 18:18:33 +01: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: add tests for streaming error handling 2012-09-28 19:40:56 +02:00
030.out qemu-iotests: add tests for streaming error handling 2012-09-28 19:40:56 +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
039 qemu-iotests: skip 039 with ./check -nocache 2012-08-10 10:25:12 +02:00
039.out block: add BLOCK_O_CHECK for qemu-img check 2012-08-10 10:25:12 +02:00
040 qemu-iotests: add relative backing file tests for block-commit (040) 2012-10-24 10:26:19 +02:00
040.out qemu-iotests: add relative backing file tests for block-commit (040) 2012-10-24 10:26:19 +02:00
041 mirror: perform COW if the cluster size is bigger than the granularity 2013-01-25 18:18:33 +01:00
041.out mirror: perform COW if the cluster size is bigger than the granularity 2013-01-25 18:18:33 +01:00
042 qemu-iotests: Test qemu-img operation on zero size image 2012-10-24 10:26:18 +02:00
042.out qemu-iotests: Test qemu-img operation on zero size image 2012-10-24 10:26:18 +02:00
043 qemu-iotests: Add 043 backing file chain infinite loop test 2012-10-24 10:26:19 +02:00
043.out qemu-iotests: Add 043 backing file chain infinite loop test 2012-10-24 10:26:19 +02:00
044 qemu-iotests: qcow2: Test growing large refcount table 2012-11-14 18:19:21 +01:00
044.out qemu-iotests: qcow2: Test growing large refcount table 2012-11-14 18:19:21 +01:00
045 tests: Add tests for fdsets 2012-12-11 11:05:11 +01:00
045.out tests: Add tests for fdsets 2012-12-11 11:05:11 +01:00
046 qemu-iotests: Test concurrent cluster allocations 2012-12-12 12:33:48 +01:00
046.out qemu-iotests: Test concurrent cluster allocations 2012-12-12 12:33:48 +01: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 tests: allow qemu-iotests to be run against nbd backend 2012-11-14 18:19:21 +01:00
common.config tests: allow qemu-iotests to be run against nbd backend 2012-11-14 18:19:21 +01: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 tests: allow qemu-iotests to be run against nbd backend 2012-11-14 18:19:21 +01:00
group qemu-iotests: Test concurrent cluster allocations 2012-12-12 12:33:48 +01:00
iotests.py tests: Add tests for fdsets 2012-12-11 11:05:11 +01:00
qcow2.py qemu-iotests: qcow2: Test growing large refcount table 2012-11-14 18:19:21 +01: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.