qemu/tests/qemu-iotests
Daniel P. Berrange 8c0dcbc4ad block: drop support for using qcow[2] encryption with system emulators
Back in the 2.3.0 release we declared qcow[2] encryption as
deprecated, warning people that it would be removed in a future
release.

  commit a1f688f415
  Author: Markus Armbruster <armbru@redhat.com>
  Date:   Fri Mar 13 21:09:40 2015 +0100

    block: Deprecate QCOW/QCOW2 encryption

The code still exists today, but by a (happy?) accident we entirely
broke the ability to use qcow[2] encryption in the system emulators
in the 2.4.0 release due to

  commit 8336aafae1
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Tue May 12 17:09:18 2015 +0100

    qcow2/qcow: protect against uninitialized encryption key

This commit was designed to prevent future coding bugs which
might cause QEMU to read/write data on an encrypted block
device in plain text mode before a decryption key is set.

It turns out this preventative measure was a little too good,
because we already had a long standing bug where QEMU read
encrypted data in plain text mode during system emulator
startup, in order to guess disk geometry:

  Thread 10 (Thread 0x7fffd3fff700 (LWP 30373)):
  #0  0x00007fffe90b1a28 in raise () at /lib64/libc.so.6
  #1  0x00007fffe90b362a in abort () at /lib64/libc.so.6
  #2  0x00007fffe90aa227 in __assert_fail_base () at /lib64/libc.so.6
  #3  0x00007fffe90aa2d2 in  () at /lib64/libc.so.6
  #4  0x000055555587ae19 in qcow2_co_readv (bs=0x5555562accb0, sector_num=0, remaining_sectors=1, qiov=0x7fffffffd260) at block/qcow2.c:1229
  #5  0x000055555589b60d in bdrv_aligned_preadv (bs=bs@entry=0x5555562accb0, req=req@entry=0x7fffd3ffea50, offset=offset@entry=0, bytes=bytes@entry=512, align=align@entry=512, qiov=qiov@entry=0x7fffffffd260, flags=0) at block/io.c:908
  #6  0x000055555589b8bc in bdrv_co_do_preadv (bs=0x5555562accb0, offset=0, bytes=512, qiov=0x7fffffffd260, flags=<optimized out>) at block/io.c:999
  #7  0x000055555589c375 in bdrv_rw_co_entry (opaque=0x7fffffffd210) at block/io.c:544
  #8  0x000055555586933b in coroutine_thread (opaque=0x555557876310) at coroutine-gthread.c:134
  #9  0x00007ffff64e1835 in g_thread_proxy (data=0x5555562b5590) at gthread.c:778
  #10 0x00007ffff6bb760a in start_thread () at /lib64/libpthread.so.0
  #11 0x00007fffe917f59d in clone () at /lib64/libc.so.6

  Thread 1 (Thread 0x7ffff7ecab40 (LWP 30343)):
  #0  0x00007fffe91797a9 in syscall () at /lib64/libc.so.6
  #1  0x00007ffff64ff87f in g_cond_wait (cond=cond@entry=0x555555e085f0 <coroutine_cond>, mutex=mutex@entry=0x555555e08600 <coroutine_lock>) at gthread-posix.c:1397
  #2  0x00005555558692c3 in qemu_coroutine_switch (co=<optimized out>) at coroutine-gthread.c:117
  #3  0x00005555558692c3 in qemu_coroutine_switch (from_=0x5555562b5e30, to_=to_@entry=0x555557876310, action=action@entry=COROUTINE_ENTER) at coroutine-gthread.c:175
  #4  0x0000555555868a90 in qemu_coroutine_enter (co=0x555557876310, opaque=0x0) at qemu-coroutine.c:116
  #5  0x0000555555859b84 in thread_pool_completion_bh (opaque=0x7fffd40010e0) at thread-pool.c:187
  #6  0x0000555555859514 in aio_bh_poll (ctx=ctx@entry=0x5555562953b0) at async.c:85
  #7  0x0000555555864d10 in aio_dispatch (ctx=ctx@entry=0x5555562953b0) at aio-posix.c:135
  #8  0x0000555555864f75 in aio_poll (ctx=ctx@entry=0x5555562953b0, blocking=blocking@entry=true) at aio-posix.c:291
  #9  0x000055555589c40d in bdrv_prwv_co (bs=bs@entry=0x5555562accb0, offset=offset@entry=0, qiov=qiov@entry=0x7fffffffd260, is_write=is_write@entry=false, flags=flags@entry=(unknown: 0)) at block/io.c:591
  #10 0x000055555589c503 in bdrv_rw_co (bs=bs@entry=0x5555562accb0, sector_num=sector_num@entry=0, buf=buf@entry=0x7fffffffd2e0 "\321,", nb_sectors=nb_sectors@entry=21845, is_write=is_write@entry=false, flags=flags@entry=(unknown: 0)) at block/io.c:614
  #11 0x000055555589c562 in bdrv_read_unthrottled (nb_sectors=21845, buf=0x7fffffffd2e0 "\321,", sector_num=0, bs=0x5555562accb0) at block/io.c:622
  #12 0x000055555589c562 in bdrv_read_unthrottled (bs=0x5555562accb0, sector_num=sector_num@entry=0, buf=buf@entry=0x7fffffffd2e0 "\321,", nb_sectors=nb_sectors@entry=21845) at block/io.c:634
    nb_sectors@entry=1) at block/block-backend.c:504
  #14 0x0000555555752e9f in guess_disk_lchs (blk=blk@entry=0x5555562a5290, pcylinders=pcylinders@entry=0x7fffffffd52c, pheads=pheads@entry=0x7fffffffd530, psectors=psectors@entry=0x7fffffffd534) at hw/block/hd-geometry.c:68
  #15 0x0000555555752ff7 in hd_geometry_guess (blk=0x5555562a5290, pcyls=pcyls@entry=0x555557875d1c, pheads=pheads@entry=0x555557875d20, psecs=psecs@entry=0x555557875d24, ptrans=ptrans@entry=0x555557875d28) at hw/block/hd-geometry.c:133
  #16 0x0000555555752b87 in blkconf_geometry (conf=conf@entry=0x555557875d00, ptrans=ptrans@entry=0x555557875d28, cyls_max=cyls_max@entry=65536, heads_max=heads_max@entry=16, secs_max=secs_max@entry=255, errp=errp@entry=0x7fffffffd5e0) at hw/block/block.c:71
  #17 0x0000555555799bc4 in ide_dev_initfn (dev=0x555557875c80, kind=IDE_HD) at hw/ide/qdev.c:174
  #18 0x0000555555768394 in device_realize (dev=0x555557875c80, errp=0x7fffffffd640) at hw/core/qdev.c:247
  #19 0x0000555555769a81 in device_set_realized (obj=0x555557875c80, value=<optimized out>, errp=0x7fffffffd730) at hw/core/qdev.c:1058
  #20 0x00005555558240ce in property_set_bool (obj=0x555557875c80, v=<optimized out>, opaque=0x555557875de0, name=<optimized out>, errp=0x7fffffffd730)
        at qom/object.c:1514
  #21 0x0000555555826c87 in object_property_set_qobject (obj=obj@entry=0x555557875c80, value=value@entry=0x55555784bcb0, name=name@entry=0x55555591cb3d "realized", errp=errp@entry=0x7fffffffd730) at qom/qom-qobject.c:24
  #22 0x0000555555825760 in object_property_set_bool (obj=obj@entry=0x555557875c80, value=value@entry=true, name=name@entry=0x55555591cb3d "realized", errp=errp@entry=0x7fffffffd730) at qom/object.c:905
  #23 0x000055555576897b in qdev_init_nofail (dev=dev@entry=0x555557875c80) at hw/core/qdev.c:380
  #24 0x0000555555799ead in ide_create_drive (bus=bus@entry=0x555557629630, unit=unit@entry=0, drive=0x5555562b77e0) at hw/ide/qdev.c:122
  #25 0x000055555579a746 in pci_ide_create_devs (dev=dev@entry=0x555557628db0, hd_table=hd_table@entry=0x7fffffffd830) at hw/ide/pci.c:440
  #26 0x000055555579b165 in pci_piix3_ide_init (bus=<optimized out>, hd_table=0x7fffffffd830, devfn=<optimized out>) at hw/ide/piix.c:218
  #27 0x000055555568ca55 in pc_init1 (machine=0x5555562960a0, pci_enabled=1, kvmclock_enabled=<optimized out>) at /home/berrange/src/virt/qemu/hw/i386/pc_piix.c:256
  #28 0x0000555555603ab2 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at vl.c:4249

So the safety net is correctly preventing QEMU reading cipher
text as if it were plain text, during startup and aborting QEMU
to avoid bad usage of this data.

For added fun this bug only happens if the encrypted qcow2
file happens to have data written to the first cluster,
otherwise the cluster won't be allocated and so qcow2 would
not try the decryption routines at all, just return all 0's.

That no one even noticed, let alone reported, this bug that
has shipped in 2.4.0, 2.5.0 and 2.6.0 shows that the number
of actual users of encrypted qcow2 is approximately zero.

So rather than fix the crash, and backport it to stable
releases, just go ahead with what we have warned users about
and disable any use of qcow2 encryption in the system
emulators. qemu-img/qemu-io/qemu-nbd are still able to access
qcow2 encrypted images for the sake of data conversion.

In the future, qcow2 will gain support for the alternative
luks format, but when this happens it'll be using the
'-object secret' infrastructure for getting keys, which
avoids this problematic scenario entirely.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2016-06-16 15:19:55 +02:00
..
sample_images block/vpc: tests for auto-detecting VPC and Hyper-V VHD images 2016-03-14 16:46:42 +01:00
.gitignore gitignore: Track common.env in iotests gitignore 2015-03-10 08:15:34 +03:00
001 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
001.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
002 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
002.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
003 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
003.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
004 block: enable testing of LUKS driver with block I/O tests 2016-05-12 15:33:24 +02:00
004.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
005 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
005.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
007 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
007.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
008 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
008.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
009 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
009.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
010 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
010.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
011 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
011.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
012 block: enable testing of LUKS driver with block I/O tests 2016-05-12 15:33:24 +02:00
012.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
013 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
013.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
014 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
014.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
015 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
015.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
017 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
017.out opts: produce valid command line in qemu_opts_print 2015-09-11 10:21:38 +03:00
018 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
018.out iotests: 018: Use TEST_IMG override instead of "mv" 2016-01-07 21:30:17 +01:00
019 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
019.out iotests: 019: Use TEST_IMG override instead of "mv" 2016-01-07 21:30:17 +01:00
020 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
020.out iotests: 020: Use TEST_IMG override instead of "mv" 2016-01-07 21:30:17 +01:00
021 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
021.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
022 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
022.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
023 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
023.out qemu-io: Allow unaligned access by default 2016-05-12 15:33:24 +02:00
024 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
024.out iotests: 024: Use TEST_IMG override instead of "mv" 2016-01-07 21:30:17 +01:00
025 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
025.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
026 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
026.out blkdebug: Avoid '.' in enum values 2015-12-17 08:21:27 +01:00
026.out.nocache iotests: fix the broken 026.nocache output 2016-04-12 18:06:51 +02:00
027 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
027.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
028 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
028.out qemu-iotests: Reduce racy output in 028 2016-01-20 13:36:23 +01:00
029 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
029.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
030 qemu-iotests: add no-op streaming test 2016-03-28 13:56:44 -04:00
030.out qemu-iotests: add no-op streaming test 2016-03-28 13:56:44 -04:00
031 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
031.out qcow2: Write full header on image creation 2016-01-20 13:36:23 +01:00
032 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
032.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
033 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
033.out block: Fix blk_aio_write_zeroes() 2016-04-15 17:22:11 +02:00
034 block: Switch bdrv_write_zeroes() to byte interface 2016-06-08 10:21:08 +02:00
034.out iotests: 034: Use TEST_IMG override instead of "mv" 2016-01-07 21:30:17 +01:00
035 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
035.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
036 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
036.out qapi: Drop QERR_UNKNOWN_BLOCK_FORMAT_FEATURE 2016-03-17 15:47:56 +01:00
037 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
037.out iotests: 037: Use TEST_IMG override instead of "mv" 2016-01-07 21:30:17 +01:00
038 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
038.out iotests: 038: Use TEST_IMG override instead of "mv" 2016-01-07 21:30:17 +01:00
039 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
039.out block: add support for --image-opts in block I/O tests 2016-05-12 15:33:24 +02:00
040 qemu-iotests: Test the reopening of overlay_bs in 'block-commit' 2015-11-11 16:25:47 +01:00
040.out qemu-iotests: Test the reopening of overlay_bs in 'block-commit' 2015-11-11 16:25:47 +01:00
041 mirror: Allow target that already has a BlockBackend 2016-05-25 19:04:21 +02:00
041.out mirror: Allow target that already has a BlockBackend 2016-05-25 19:04:21 +02:00
042 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
042.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
043 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
043.out block/qapi: always report full_backing_filename 2015-12-18 14:36:17 +01:00
044
044.out qcow2: Don't rely on free_cluster_index in alloc_refcount_block() (CVE-2014-0147) 2014-04-01 15:21:03 +02:00
045 qemu-iotests: add tests for runtime fd passing via SCM rights 2013-09-12 10:12:47 +02:00
045.out qemu-iotests: add tests for runtime fd passing via SCM rights 2013-09-12 10:12:47 +02:00
046 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
046.out opts: produce valid command line in qemu_opts_print 2015-09-11 10:21:38 +03:00
047 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
047.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
048 block: enable testing of LUKS driver with block I/O tests 2016-05-12 15:33:24 +02:00
048.out block: enable testing of LUKS driver with block I/O tests 2016-05-12 15:33:24 +02:00
049 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
049.out block: move encryption deprecation warning into qcow code 2016-03-30 12:12:15 +02:00
050 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
050.out iotests: 050: Use TEST_IMG override instead of "mv" 2016-01-07 21:30:17 +01:00
051 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
051.out qemu-iotests: fix 051 on non-PC architectures 2016-04-12 18:07:39 +02:00
051.pc.out block: Remove BDRV_O_CACHE_WB 2016-03-30 12:16:03 +02:00
052 block: enable testing of LUKS driver with block I/O tests 2016-05-12 15:33:24 +02:00
052.out block: enable testing of LUKS driver with block I/O tests 2016-05-12 15:33:24 +02:00
053 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
053.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
054 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
054.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
055 iotests: Respect -nodefaults in tests 41 and 55 2015-09-04 20:59:48 +02:00
055.out qemu-iotests: Test blockdev-backup in 055 2015-01-13 11:47:56 +00:00
056 iotests: Add regresion test case for write notifier assertion failure 2015-12-03 11:08:07 +08:00
056.out iotests: Add regresion test case for write notifier assertion failure 2015-12-03 11:08:07 +08:00
057 qemu-iotests: add 057 internal snapshot for block device test case 2013-09-12 10:12:47 +02:00
057.out qemu-iotests: add 057 internal snapshot for block device test case 2013-09-12 10:12:47 +02:00
058 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
058.out qemu-iotests: add test for snapshot in qemu-img convert 2013-12-04 15:19:00 +01:00
059 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
059.out iotests: Add "qemu-img map" test for VMDK extents 2016-02-02 17:50:48 +01:00
060 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
060.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
061 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
061.out block: add support for --image-opts in block I/O tests 2016-05-12 15:33:24 +02:00
062 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
062.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
063 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
063.out add qemu-img convert -n option (skip target volume creation) 2013-09-06 15:25:07 +02:00
064 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
064.out iotests: Lower 064's memory usage 2015-01-23 12:41:32 -05:00
065 qcow2: Add refcount_bits to format-specific info 2015-03-10 14:02:20 +01:00
065.out qemu-iotests: Additional info from qemu-img info 2013-10-11 16:49:50 +02:00
066 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
066.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
067 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
067.out qemu-iotests: 067: ignore QMP events 2016-02-22 16:54:14 +01:00
068 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
068.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
069 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
069.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
070 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
070.out vhdx: Fix "log that needs to be replayed" error message 2016-01-13 15:16:18 +01:00
071 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
071.out iotests: Only create BB if necessary 2015-10-23 18:18:22 +02:00
072 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
072.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
073 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
073.out opts: produce valid command line in qemu_opts_print 2015-09-11 10:21:38 +03:00
074 qemu-iotests: Split qcow2 only cases in 048 2013-12-04 14:31:39 +01:00
074.out qemu-iotests: Split qcow2 only cases in 048 2013-12-04 14:31:39 +01:00
075 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
075.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
076 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
076.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
077 block/io: optimize bdrv_co_pwritev for small requests 2016-06-07 14:40:51 +01:00
077.out block/io: optimize bdrv_co_pwritev for small requests 2016-06-07 14:40:51 +01:00
078 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
078.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
079 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
079.out opts: produce valid command line in qemu_opts_print 2015-09-11 10:21:38 +03:00
080 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
080.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
081 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
081.out iotests: Correct 081's reference output 2016-03-14 17:35:06 +01:00
082 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
082.out opts: produce valid command line in qemu_opts_print 2015-09-11 10:21:38 +03:00
083 iotests: fix the redirection order in 083 2016-05-12 15:33:23 +02:00
083.out iotests: Make _filter_nbd drop log lines 2016-02-02 17:49:42 +01:00
084 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
084.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
085 block: test 'blockdev-snapshot' using a file BDS as the overlay 2015-11-11 16:25:48 +01:00
085.out block: test 'blockdev-snapshot' using a file BDS as the overlay 2015-11-11 16:25:48 +01:00
086 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
086.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
087 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
087.out block: drop support for using qcow[2] encryption with system emulators 2016-06-16 15:19:55 +02:00
088 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
088.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
089 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
089.out qcow2: Add refcount_bits to format-specific info 2015-03-10 14:02:20 +01:00
090 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
090.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
091 qemu-iotests: Handle cache mode option in 091 2014-05-28 14:22:25 +02:00
091.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
092 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
092.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
093 qemu-iotests: Extend iotest 093 to test bursts 2016-02-22 14:08:06 +01:00
093.out qemu-iotests: Extend iotest 093 to test bursts 2016-02-22 14:08:06 +01:00
094 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
094.out iotests: Add test for drive-mirror with NBD target 2015-02-16 14:36:03 +00:00
095 iotests: 095: Filter _img_info output 2016-01-07 21:30:17 +01:00
095.out iotests: 095: Filter _img_info output 2016-01-07 21:30:17 +01:00
096 block: Don't return throttling info in query-named-block-nodes 2016-05-19 16:45:31 +02:00
096.out throttle: test that snapshots move the throttling configuration 2015-10-16 15:34:29 +02:00
097 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
097.out opts: produce valid command line in qemu_opts_print 2015-09-11 10:21:38 +03:00
098 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
098.out opts: produce valid command line in qemu_opts_print 2015-09-11 10:21:38 +03:00
099 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
099.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
101 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
101.out qemu-iotests: add test case 101 for short file I/O 2014-08-22 11:01:12 +02:00
102 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
102.out iotests: Add test for external image truncation 2014-11-03 11:41:47 +00:00
103 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
103.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
104 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
104.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
105 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
105.out vmdk: Fix integer overflow in offset calculation 2014-10-03 10:30:33 +01:00
107 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
107.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
108 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
108.out qemu-iotests: Remove traling whitespaces in *.out 2014-12-12 16:52:33 +00:00
109 qemu-iotests: Simplify 109 with unaligned qemu-img compare 2016-05-19 16:56:58 +02:00
109.out qemu-iotests: Simplify 109 with unaligned qemu-img compare 2016-05-19 16:56:58 +02:00
110 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
110.out block/qapi: allow best-effort query 2015-12-18 14:36:17 +01:00
111 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
111.out iotests: Add test for non-existing backing file 2014-11-06 12:45:47 +01:00
112 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
112.out iotests: Extend test 112 for qemu-img amend 2015-12-18 14:34:43 +01:00
113 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
113.out iotests: Add test for unsupported image creation 2014-12-10 10:31:20 +01:00
114 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
114.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
115 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
115.out opts: produce valid command line in qemu_opts_print 2015-09-11 10:21:38 +03:00
116 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
116.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
117 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
117.out iotests: Add test for multiple BB on BDS tree 2016-02-02 17:50:46 +01:00
118 iotests: Limit supported formats for 118 2016-02-02 17:49:42 +01:00
118.out iotests: Add test for change-related QMP commands 2015-11-11 16:25:47 +01:00
119 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
119.out iotests: Add tests for overriding BDRV_O_PROTOCOL 2015-06-12 15:54:08 +02:00
120 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
120.out iotests: Add tests for overriding BDRV_O_PROTOCOL 2015-06-12 15:54:08 +02:00
121 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
121.out opts: produce valid command line in qemu_opts_print 2015-09-11 10:21:38 +03:00
122 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
122.out qemu-img: Fix preallocation with -S 0 for convert 2016-03-30 12:16:03 +02:00
123 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
123.out iotests: Add test for qemu-img convert to NBD 2015-02-16 15:07:18 +00:00
124 iotests/124: Add cluster_size mismatch test 2016-02-29 14:55:14 -05:00
124.out iotests/124: Add cluster_size mismatch test 2016-02-29 14:55:14 -05:00
128 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
128.out iotests: add O_DIRECT alignment probing test 2015-03-10 14:02:24 +01:00
129 qemu-iotests: Test that "stop" doesn't drain block jobs 2015-04-28 15:36:09 +02:00
129.out qemu-iotests: Test that "stop" doesn't drain block jobs 2015-04-28 15:36:09 +02:00
130 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
130.out opts: produce valid command line in qemu_opts_print 2015-09-11 10:21:38 +03:00
131 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
131.out qemu-io qemu-nbd: Use error_report() etc. instead of fprintf() 2016-01-13 15:16:18 +01:00
132 qemu-iotests: Add test case for mirror with unmap 2015-07-02 10:06:23 +01:00
132.out qemu-iotests: Add test case for mirror with unmap 2015-07-02 10:06:23 +01:00
133 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
133.out qemu-iotests: Test reopen with node-name/driver options 2015-12-18 14:34:43 +01:00
134 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
134.out block: move encryption deprecation warning into qcow code 2016-03-30 12:12:15 +02:00
135 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
135.out block: qemu-iotests - add check for multiplication overflow in vpc 2015-07-27 17:19:07 +02:00
136 qemu-iotests: Fix regression in 136 on aio_read invalid 2016-05-19 16:56:58 +02:00
136.out block: Remove bdrv_aio_multiwrite() 2016-05-19 16:45:31 +02:00
137 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
137.out block: add support for --image-opts in block I/O tests 2016-05-12 15:33:24 +02:00
138 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
138.out iotests: Add test for checking large image files 2015-09-14 16:51:37 +02:00
139 blockdev: Mark {insert, remove}-medium experimental 2015-12-11 15:39:29 +00:00
139.out iotests: Add tests for the x-blockdev-del command 2015-11-11 16:55:29 +01:00
140 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
140.out qemu-iotests: 140: don't use IDE device 2016-02-22 16:54:14 +01:00
141 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
141.out iotests: Add test for block jobs and BDS ejection 2016-02-02 17:50:46 +01:00
142 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
142.out block: Remove BDRV_O_CACHE_WB 2016-03-30 12:16:03 +02:00
143 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
143.out nbd: always query export list in fixed new style protocol 2016-02-16 17:16:11 +01:00
144 block: qemu-iotests - add test for snapshot, commit, snapshot bug 2016-02-02 18:07:27 +01:00
144.out block: qemu-iotests - add test for snapshot, commit, snapshot bug 2016-02-02 18:07:27 +01:00
145 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
145.out block: Fix -incoming with snapshot=on 2016-02-22 09:49:46 +01:00
146 block/vpc: add tests for image creation force_size parameter 2016-03-14 16:46:42 +01:00
146.out block/vpc: add tests for image creation force_size parameter 2016-03-14 16:46:42 +01:00
148 qemu-iotests: 148: properly skip test if quorum support is missing 2016-04-12 18:07:39 +02:00
148.out iotests: Test QUORUM_REPORT_BAD in fifo mode 2016-03-17 16:43:30 +01:00
149 qemu-iotests: 149: Use "/usr/bin/env python" 2016-04-05 17:23:21 +02:00
149.out block: an interoperability test for luks vs dm-crypt/cryptsetup 2016-03-30 12:12:15 +02:00
150 qemu-iotests: tests: do not set unused tmp variable 2016-04-15 17:56:56 +02:00
150.out iotests: Make 150 use qemu-img map instead of du 2016-04-12 18:06:51 +02:00
152 iotests: Test case for drive-mirror with unaligned image size 2016-04-20 16:52:55 +02:00
152.out iotests: Test case for drive-mirror with unaligned image size 2016-04-20 16:52:55 +02:00
154 block: Switch bdrv_write_zeroes() to byte interface 2016-06-08 10:21:08 +02:00
154.out qcow2: Catch more unaligned write_zero into zero cluster 2016-06-08 10:21:08 +02:00
check qemu-iotests: check: don't place files with predictable names in /tmp 2016-04-12 18:07:39 +02:00
common block: enable testing of LUKS driver with block I/O tests 2016-05-12 15:33:24 +02:00
common.config block: add support for encryption secrets in block I/O tests 2016-05-12 15:33:24 +02:00
common.filter block: add support for encryption secrets in block I/O tests 2016-05-12 15:33:24 +02:00
common.pattern block: qemu-iotests, add quotes to $TEST_IMG usage io pattern tests 2013-11-07 13:53:31 +01:00
common.qemu iotests: Make redirecting qemu's stderr optional 2016-02-02 17:49:43 +01:00
common.rc block: enable testing of LUKS driver with block I/O tests 2016-05-12 15:33:24 +02:00
COPYING
group qemu-iotests: Some more write_zeroes tests 2016-05-19 16:45:31 +02:00
iotests.py qemu-iotests: iotests: fail hard if not run via "check" 2016-05-12 15:33:24 +02:00
Makefile
nbd-fault-injector.py tests: add nbd-fault-injector.py utility 2014-03-14 16:28:28 +01:00
qcow2.py qcow2.py: Add required padding for header extensions 2014-12-10 10:31:13 +01:00
qed.py tests: Use Python 2.6 "except E as ..." syntax 2016-02-08 17:29:54 +01:00
README
socket_scm_helper.c tests: Clean up includes 2016-02-16 14:29:27 +00: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@savannah.nongnu.org.