1. 16 6月, 2016 6 次提交
    • M
      iotests: Add test for post-mirror backing chains · 298c6009
      Max Reitz 提交于
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      Message-id: 20160610185750.30956-5-mreitz@redhat.com
      Reviewed-by: NFam Zheng <famz@redhat.com>
      [mreitz@redhat.com: Removed unnecessary imports]
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      298c6009
    • F
      iotests: 095: Clean up QEMU before showing image info · 6ea66b59
      Fam Zheng 提交于
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Message-id: 1464944872-24484-1-git-send-email-famz@redhat.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      6ea66b59
    • T
      doc: Fix mailing list address in tests/qemu-iotests/README · 48bea965
      Thomas Huth 提交于
      The address of the mailing list is qemu-devel@nongnu.org
      instead of qemu-devel@savannah.nongnu.org. And while we're
      at it, also mention the qemu-block mailing list here.
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      48bea965
    • D
      block: drop support for using qcow[2] encryption with system emulators · 8c0dcbc4
      Daniel P. Berrange 提交于
      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 a1f688f4
        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 8336aafa
        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: NDaniel P. Berrange <berrange@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      8c0dcbc4
    • A
      tests: fix libqtest socket timeouts · f5d45791
      Andrea Arcangeli 提交于
      I kept getting timeouts and unix socket accept failures under high
      load, the patch fixes it.
      Signed-off-by: NAndrea Arcangeli <aarcange@redhat.com>
      Reviewed-by: NMarcel Apfelbaum <marcel@redhat.com>
      Message-id: 1465816605-29488-6-git-send-email-dgilbert@redhat.com
      Message-Id: <1465816605-29488-6-git-send-email-dgilbert@redhat.com>
      Signed-off-by: NAmit Shah <amit.shah@redhat.com>
      f5d45791
    • D
      test: Postcopy · ea0c6d62
      Dr. David Alan Gilbert 提交于
      This is a postcopy test (x86 only) that actually runs the guest
      and checks the memory contents.
      
      The test runs from an x86 boot block with the hex embedded in the test;
      the source for this is:
      
      ...........
      
      .code16
      .org 0x7c00
      	.file	"fill.s"
      	.text
      	.globl	start
      	.type	start, @function
      start:             # at 0x7c00 ?
              cli
              lgdt gdtdesc
              mov $1,%eax
              mov %eax,%cr0  # Protected mode enable
              data32 ljmp $8,$0x7c20
      
      .org 0x7c20
      .code32
              # A20 enable - not sure I actually need this
              inb $0x92,%al
              or  $2,%al
              outb %al, $0x92
      
              # set up DS for the whole of RAM (needed on KVM)
              mov $16,%eax
              mov %eax,%ds
      
              mov $65,%ax
              mov $0x3f8,%dx
              outb %al,%dx
      
              # bl keeps a counter so we limit the output speed
              mov $0, %bl
      mainloop:
              # Start from 1MB
              mov $(1024*1024),%eax
      innerloop:
              incb (%eax)
              add $4096,%eax
              cmp $(100*1024*1024),%eax
              jl innerloop
      
              inc %bl
              jnz mainloop
      
              mov $66,%ax
              mov $0x3f8,%dx
              outb %al,%dx
      
      	jmp mainloop
      
              # GDT magic from old (GPLv2)  Grub startup.S
              .p2align        2       /* force 4-byte alignment */
      gdt:
              .word   0, 0
              .byte   0, 0, 0, 0
      
              /* -- code segment --
               * base = 0x00000000, limit = 0xFFFFF (4 KiB Granularity), present
               * type = 32bit code execute/read, DPL = 0
               */
              .word   0xFFFF, 0
              .byte   0, 0x9A, 0xCF, 0
      
              /* -- data segment --
               * base = 0x00000000, limit 0xFFFFF (4 KiB Granularity), present
               * type = 32 bit data read/write, DPL = 0
               */
              .word   0xFFFF, 0
              .byte   0, 0x92, 0xCF, 0
      
      gdtdesc:
              .word   0x27                    /* limit */
              .long   gdt                     /* addr */
      
      /* I'm a bootable disk */
      .org 0x7dfe
              .byte 0x55
              .byte 0xAA
      
      ...........
      
      and that can be assembled by the following magic:
          as --32 -march=i486 fill.s -o fill.o
          objcopy -O binary fill.o fill.boot
          dd if=fill.boot of=bootsect bs=256 count=2 skip=124
          xxd -i bootsect
      Signed-off-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Reviewed-by: NMarcel Apfelbaum <marcel@redhat.com>
      Message-id: 1465816605-29488-5-git-send-email-dgilbert@redhat.com
      Message-Id: <1465816605-29488-5-git-send-email-dgilbert@redhat.com>
      Signed-off-by: NAmit Shah <amit.shah@redhat.com>
      ea0c6d62
  2. 13 6月, 2016 1 次提交
  3. 12 6月, 2016 4 次提交
    • E
      qht: add test-qht-par to invoke qht-bench from 'check' target · 896a9ee9
      Emilio G. Cota 提交于
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1465412133-3029-14-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      896a9ee9
    • E
      qht: add qht-bench, a performance benchmark · 515864a0
      Emilio G. Cota 提交于
      This serves as a performance benchmark as well as a stress test
      for QHT. We can tweak quite a number of things, including the
      number of resize threads and how frequently resizes are triggered.
      
      A performance comparison of QHT vs CLHT[1] and ck_hs[2] using
      this same benchmark program can be found here:
        http://imgur.com/a/0Bms4
      
      The tests are run on a 64-core AMD Opteron 6376, pinning threads
      to cores favoring same-socket cores. For each run, qht-bench is
      invoked with:
        $ tests/qht-bench -d $duration -n $n -u $u -g $range
      , where $duration is in seconds, $n is the number of threads,
      $u is the update rate (0.0 to 100.0), and $range is the number
      of keys.
      
      Note that ck_hs's performance drops significantly as writes go
      up, since it requires an external lock (I used a ck_spinlock)
      around every write.
      
      Also, note that CLHT instead of using a seqlock, relies on an
      allocator that does not ever return the same address during the
      same read-critical section. This gives it a slight performance
      advantage over QHT on read-heavy workloads, since the seqlock
      writes aren't there.
      
      [1] CLHT: https://github.com/LPD-EPFL/CLHT
                https://infoscience.epfl.ch/record/207109/files/ascy_asplos15.pdf
      
      [2] ck_hs: http://concurrencykit.org/
                 http://backtrace.io/blog/blog/2015/03/13/workload-specialization/
      
      A few of those plots are shown in text here, since that site
      might not be online forever. Throughput is on Mops/s on the Y axis.
      
                                   200K keys, 0 % updates
      
        450 ++--+------+------+-------+-------+-------+-------+------+-------+--++
            |   +      +      +       +       +       +       +      +      +N+  |
        400 ++                                                           ---+E+ ++
            |                                                       +++----      |
        350 ++          9 ++------+------++                       --+E+    -+H+ ++
            |             |      +H+-     |                 -+N+----   ---- +++  |
        300 ++          8 ++     +E+     ++             -----+E+  --+H+         ++
            |             |      +++      |         -+N+-----+H+--               |
        250 ++          7 ++------+------++  +++-----+E+----                    ++
        200 ++                    1         -+E+-----+H+                        ++
            |                           ----                     qht +-E--+      |
        150 ++                      -+E+                        clht +-H--+     ++
            |                   ----                              ck +-N--+      |
        100 ++               +E+                                                ++
            |            ----                                                    |
         50 ++       -+E+                                                       ++
            |   +E+E+  +      +       +       +       +       +      +       +   |
          0 ++--E------+------+-------+-------+-------+-------+------+-------+--++
                1      8      16      24      32      40      48     56      64
                                      Number of threads
      
                                   200K keys, 1 % updates
      
        350 ++--+------+------+-------+-------+-------+-------+------+-------+--++
            |   +      +      +       +       +       +       +      +     -+E+  |
        300 ++                                                         -----+H+ ++
            |                                                       +E+--        |
            |           9 ++------+------++                  +++----             |
        250 ++            |      +E+   -- |                 -+E+                ++
            |           8 ++         --  ++             ----                     |
        200 ++            |      +++-     |  +++  ---+E+                        ++
            |           7 ++------N------++ -+E+--               qht +-E--+      |
            |                     1  +++----                    clht +-H--+      |
        150 ++                      -+E+                          ck +-N--+     ++
            |                   ----                                             |
        100 ++               +E+                                                ++
            |            ----                                                    |
            |        -+E+                                                        |
         50 ++    +H+-+N+----+N+-----+N+------                                  ++
            |   +E+E+  +      +       +      +N+-----+N+-----+N+----+N+-----+N+  |
          0 ++--E------+------+-------+-------+-------+-------+------+-------+--++
                1      8      16      24      32      40      48     56      64
                                      Number of threads
      
                                   200K keys, 20 % updates
      
        300 ++--+------+------+-------+-------+-------+-------+------+-------+--++
            |   +      +      +       +       +       +       +      +       +   |
            |                                                              -+H+  |
        250 ++                                                         ----     ++
            |           9 ++------+------++                       --+H+  ---+E+  |
            |           8 ++     +H+--   ++                 -+H+----+E+--        |
        200 ++            |      +E+    --|             -----+E+--  +++         ++
            |           7 ++      + ---- ++       ---+H+---- +++ qht +-E--+      |
        150 ++          6 ++------N------++ -+H+-----+E+        clht +-H--+     ++
            |                     1     -----+E+--                ck +-N--+      |
            |                       -+H+----                                     |
        100 ++                  -----+E+                                        ++
            |                +E+--                                               |
            |            ----+++                                                 |
         50 ++       -+E+                                                       ++
            |     +E+ +++                                                        |
            |   +E+N+-+N+-----+       +       +       +       +      +       +   |
          0 ++--E------+------N-------N-------N-------N-------N------N-------N--++
                1      8      16      24      32      40      48     56      64
                                      Number of threads
      
                                  200K keys, 100 % updates       qht +-E--+
                                                                clht +-H--+
        160 ++--+------+------+-------+-------+-------+-------+---ck-+-N-----+--++
            |   +      +      +       +       +       +       +      +   ----H   |
        140 ++                                                      +H+--  -+E+ ++
            |                                                +++----   ----      |
        120 ++          8 ++------+------++                 -+H+    +E+         ++
            |           7 ++     +H+---- ++             ---- +++----             |
        100 ++            |      +E+      |  +++  ---+H+    -+E+                ++
            |           6 ++     +++     ++ -+H+--   +++----                     |
         80 ++          5 ++------N----------+E+-----+E+                        ++
            |                     1 -+H+---- +++                                 |
            |                   -----+E+                                         |
         60 ++               +H+---- +++                                        ++
            |            ----+E+                                                 |
         40 ++        +H+----                                                   ++
            |       --+E+                                                        |
         20 ++    +E+                                                           ++
            |  +EE+    +      +       +       +       +       +      +       +   |
          0 ++--+N-N---N------N-------N-------N-------N-------N------N-------N--++
                1      8      16      24      32      40      48     56      64
                                      Number of threads
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1465412133-3029-13-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      515864a0
    • E
      qht: add test program · 1a95404f
      Emilio G. Cota 提交于
      Acked-by: NSergey Fedorov <sergey.fedorov@linaro.org>
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1465412133-3029-12-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      1a95404f
    • E
      qdist: add test program · ff9249b7
      Emilio G. Cota 提交于
      Acked-by: NSergey Fedorov <sergey.fedorov@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1465412133-3029-10-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      ff9249b7
  4. 08 6月, 2016 11 次提交
  5. 07 6月, 2016 9 次提交
  6. 02 6月, 2016 2 次提交
  7. 01 6月, 2016 7 次提交