1. 13 5月, 2014 14 次提交
  2. 10 5月, 2014 8 次提交
    • S
      glib: fix g_poll early timeout on windows · 5a007547
      Sangho Park 提交于
      g_poll has a problem on Windows when using
      timeouts < 10ms, in glib/gpoll.c:
      
      /* If not, and we have a significant timeout, poll again with
       * timeout then. Note that this will return indication for only
       * one event, or only for messages. We ignore timeouts less than
       * ten milliseconds as they are mostly pointless on Windows, the
       * MsgWaitForMultipleObjectsEx() call will timeout right away
       * anyway.
       */
      if (retval == 0 && (timeout == INFINITE || timeout >= 10))
        retval = poll_rest (poll_msgs, handles, nhandles, fds, nfds, timeout);
      
      so whenever g_poll is called with timeout < 10ms it does
      a quick poll instead of wait, this causes significant performance
      degradation of QEMU, thus we should use WaitForMultipleObjectsEx
      directly
      Signed-off-by: NStanislav Vorobiov <s.vorobiov@samsung.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      5a007547
    • J
      block: qemu-iotests - test for live migration · fd040174
      Jeff Cody 提交于
      This is an initial, simple live migration test from one
      running VM to another, using monitor commands.
      
      This is also an example of using the new common.qemu functions
      for controlling multiple running qemu instances, for tests that
      need a live qemu vm.
      Reviewed-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NJeff Cody <jcody@redhat.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      fd040174
    • J
      block: qemu-iotests - update 085 to use common.qemu · e86e8697
      Jeff Cody 提交于
      The new functionality of common.qemu implements the QEMU control
      and communication functionality that was originally in test 085.
      
      This removes that now-duplicate functionality, and uses the
      common.qemu functions.
      
      The QEMU commandline changes slightly due to this; in addition to
      monitor and qmp i/o options, the new QEMU commandline from inside
      common.qemu now introduces -machine accel=qtest.
      Reviewed-by: NBenoit Canet <benoit@irqsave.net>
      Reviewed-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NJeff Cody <jcody@redhat.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      e86e8697
    • J
      block: qemu-iotests - add common.qemu, for bash-controlled qemu tests · e940bc13
      Jeff Cody 提交于
      This creates some common functions for bash language qemu-iotests
      to control, and communicate with, a running QEMU process.
      
      4 functions are introduced:
      
          1. _launch_qemu()
              This launches the QEMU process(es), and sets up the file
              descriptors and fifos for communication.  You can choose to
              launch each QEMU process listening for either QMP or HMP
              monitor.  You can call this function multiple times, and
              save the handle returned from each.  The returned handle is
              in $QEMU_HANDLE.  You must copy this value.
      
      Commands 2 and 3 use the handle received from _launch_qemu(), to talk
      to the appropriate process.
      
          2. _send_qemu_cmd()
              Sends a command string, specified by $2, to QEMU.  If $3 is
              non-NULL, _send_qemu_cmd() will wait to receive $3 as a
              required result string from QEMU.  Failure to receive $3 will
              cause the test to fail.  The command can optionally be retried
              $qemu_cmd_repeat number of times.  Set $qemu_error_no_exit
              to not force the test the fail on exit; in this case,
              $QEMU_STATUS[$1] will be set to -1 on failure.
      
          3. _timed_wait_for()
              Waits for a response, for up to a default of 10 seconds.  If
              $2 is not seen in that time (anywhere in the response), then
              the test fails.  Primarily used by _send_qemu_cmd, but could
              be useful standalone, as well.  To prevent automatic exit
              (and therefore test failure), set $qemu_error_no_exit to a
              non-NULL value.  If $silent is a non-NULL value, then output
              to stdout will be suppressed.
      
          4. _cleanup_qemu()
              Kills the running QEMU processes, and removes the fifos.
      Signed-off-by: NJeff Cody <jcody@redhat.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      e940bc13
    • M
      block/raw-posix: Try both FIEMAP and SEEK_HOLE · 4f11aa8a
      Max Reitz 提交于
      The current version of raw-posix always uses ioctl(FS_IOC_FIEMAP) if
      FIEMAP is available; lseek with SEEK_HOLE/SEEK_DATA are not even
      compiled in in this case. However, there may be implementations which
      support the latter but not the former (e.g., NFSv4.2) as well as vice
      versa.
      
      To cover both cases, try FIEMAP first (as this will return -ENOTSUP if
      not supported instead of returning a failsafe value (everything
      allocated as a single extent)) and if that does not work, fall back to
      SEEK_HOLE/SEEK_DATA.
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      4f11aa8a
    • P
      gluster: Correctly propagate errors when volume isn't accessible · 4557117d
      Peter Krempa 提交于
      The docs for glfs_init suggest that the function sets errno on every
      failure. In fact it doesn't. As other functions such as
      qemu_gluster_open() in the gluster block code report their errors based
      on this fact we need to make sure that errno is set on each failure.
      
      This fixes a crash of qemu-img/qemu when a gluster brick isn't
      accessible from given host while the server serving the volume
      description is.
      
      Thread 1 (Thread 0x7ffff7fba740 (LWP 203880)):
       #0  0x00007ffff77673f8 in glfs_lseek () from /usr/lib64/libgfapi.so.0
       #1  0x0000555555574a68 in qemu_gluster_getlength ()
       #2  0x0000555555565742 in refresh_total_sectors ()
       #3  0x000055555556914f in bdrv_open_common ()
       #4  0x000055555556e8e8 in bdrv_open ()
       #5  0x000055555556f02f in bdrv_open_image ()
       #6  0x000055555556e5f6 in bdrv_open ()
       #7  0x00005555555c5775 in bdrv_new_open ()
       #8  0x00005555555c5b91 in img_info ()
       #9  0x00007ffff62c9c05 in __libc_start_main () from /lib64/libc.so.6
       #10 0x00005555555648ad in _start ()
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      4557117d
    • K
      vl.c: remove init_clocks call from main · 02ce232c
      Kirill Batuzov 提交于
      Clocks are initialized in qemu_init_main_loop. They are not needed before it.
      Initializing them twice is not only unnecessary but is harmful: it results in
      memory leak and potentially can lead to a situation where different parts of
      QEMU use different sets of timers.
      
      To avoid it remove init_clocks call from main and add an assertion to
      qemu_clock_init that corresponding clock has not been initialized yet.
      Signed-off-by: NKirill Batuzov <batuzovk@ispras.ru>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      02ce232c
    • K
      block: Fix open flags with BDRV_O_SNAPSHOT · b1e6fc08
      Kevin Wolf 提交于
      The immediately visible effect of this patch is that it fixes committing
      a temporary snapshot to its backing file. Previously, it would fail with
      a "permission denied" error because bdrv_inherited_flags() forced the
      backing file to be read-only, ignoring the r/w reopen of bdrv_commit().
      
      The bigger problem this revealed is that the original open flags must
      actually only be applied to the temporary snapshot, and the original
      image file must be treated as a backing file of the temporary snapshot
      and get the right flags for that.
      Reported-by: NJan Kiszka <jan.kiszka@web.de>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      b1e6fc08
  3. 09 5月, 2014 18 次提交