1. 21 1月, 2019 2 次提交
    • D
      ui: fix icon display for GTK frontend under GNOME Shell with Wayland · 67ea9546
      Daniel P. Berrangé 提交于
      The icon associated with a GtkWindow is just a hint to window managers
      and not all of them will honour it. Some will instead want to show the
      icon listed by the .desktop file. The desktop file is located based on
      the application ID, which is set using g_set_prgname. QEMU has not
      historically provided a desktop file or set its app ID, so it got a
      broken icon in GNOME shell, which is now fixed.
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      Message-id: 20190110120047.25369-3-berrange@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      67ea9546
    • D
      ui: install logo icons to $prefix/share/icons · a8260d38
      Daniel P. Berrangé 提交于
      QEMU currently installs logos to $prefix/share/qemu/ which means no GUI
      toolkit or applications can find them by default.
      
      The accepted standards for desktop applications declare that application
      logos / icons should be installed under $prefix/share/icons, so use this
      directory location.
      
      Pre-rendered icons are provided at the standard sizes expected for GUI
      applications, along with the scalable SVG, to ensure maximum portability.
      
      The PNGs are rendered from the SVG using inkscape, however, this is not
      wired up into the default make rules to avoid requiring inkscape as a
      mandatory tool in build systems / developer workstations.
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      Message-id: 20190110120047.25369-2-berrange@redhat.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      a8260d38
  2. 17 1月, 2019 1 次提交
    • P
      Merge remote-tracking branch 'remotes/jnsnow/tags/bitmaps-pull-request' into staging · 681d6136
      Peter Maydell 提交于
      Pull request
      
      # gpg: Signature made Wed 16 Jan 2019 01:00:25 GMT
      # gpg:                using RSA key 7DEF8106AAFC390E
      # gpg: Good signature from "John Snow (John Huston) <jsnow@redhat.com>"
      # Primary key fingerprint: FAEB 9711 A12C F475 812F  18F2 88A9 064D 1835 61EB
      #      Subkey fingerprint: F9B7 ABDB BCAC DF95 BE76  CBD0 7DEF 8106 AAFC 390E
      
      * remotes/jnsnow/tags/bitmaps-pull-request:
        Revert "hbitmap: Add @advance param to hbitmap_iter_next()"
        Revert "test-hbitmap: Add non-advancing iter_next tests"
        Revert "block/dirty-bitmap: Add bdrv_dirty_iter_next_area"
        block/mirror: fix and improve do_sync_target_write
        tests: add tests for hbitmap_next_dirty_area
        dirty-bitmap: add bdrv_dirty_bitmap_next_dirty_area
        tests: add tests for hbitmap_next_zero with specified end parameter
        dirty-bitmap: improve bdrv_dirty_bitmap_next_zero
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      681d6136
  3. 16 1月, 2019 10 次提交
    • V
      Revert "hbitmap: Add @advance param to hbitmap_iter_next()" · 19c021e1
      Vladimir Sementsov-Ogievskiy 提交于
      This reverts commit a33fbb4f.
      
      The functionality is unused.
      
      Note: in addition to automatic revert, drop second parameter in
      hbitmap_iter_next() call from hbitmap_next_dirty_area() too.
      Signed-off-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      19c021e1
    • V
      Revert "test-hbitmap: Add non-advancing iter_next tests" · 4294c4ab
      Vladimir Sementsov-Ogievskiy 提交于
      This reverts commit 26957684.
      
      The functionality is unused. Drop tests.
      Signed-off-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      4294c4ab
    • V
      Revert "block/dirty-bitmap: Add bdrv_dirty_iter_next_area" · 166cd551
      Vladimir Sementsov-Ogievskiy 提交于
      This reverts commit 72d10a94.
      
      The function is unused now.
      Signed-off-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      166cd551
    • V
      block/mirror: fix and improve do_sync_target_write · 1eaf1b0f
      Vladimir Sementsov-Ogievskiy 提交于
      Use bdrv_dirty_bitmap_next_dirty_area() instead of
      bdrv_dirty_iter_next_area(), because of the following problems of
      bdrv_dirty_iter_next_area():
      
      1. Using HBitmap iterators we should carefully handle unaligned offset,
      as first call to hbitmap_iter_next() may return a value less than
      original offset (actually, it will be original offset rounded down to
      bitmap granularity). This handling is not done in
      do_sync_target_write().
      
      2. bdrv_dirty_iter_next_area() handles unaligned max_offset
      incorrectly:
      
      look at the code:
          if (max_offset == iter->bitmap->size) {
              /* If max_offset points to the image end, round it up by the
               * bitmap granularity */
              gran_max_offset = ROUND_UP(max_offset, granularity);
          } else {
              gran_max_offset = max_offset;
          }
      
          ret = hbitmap_iter_next(&iter->hbi, false);
          if (ret < 0 || ret + granularity > gran_max_offset) {
              return false;
          }
      
      and assume that max_offset != iter->bitmap->size but still unaligned.
      if 0 < ret < max_offset we found dirty area, but the function can
      return false in this case (if ret + granularity > max_offset).
      
      3. bdrv_dirty_iter_next_area() uses inefficient loop to find the end of
      the dirty area. Let's use more efficient hbitmap_next_zero instead
      (bdrv_dirty_bitmap_next_dirty_area() do so)
      Signed-off-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      1eaf1b0f
    • V
    • V
      dirty-bitmap: add bdrv_dirty_bitmap_next_dirty_area · a78a1a48
      Vladimir Sementsov-Ogievskiy 提交于
      The function alters bdrv_dirty_iter_next_area(), which is wrong and
      less efficient (see further commit
      "block/mirror: fix and improve do_sync_target_write" for description).
      Signed-off-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      a78a1a48
    • V
    • V
      dirty-bitmap: improve bdrv_dirty_bitmap_next_zero · 76d570dc
      Vladimir Sementsov-Ogievskiy 提交于
      Add bytes parameter to the function, to limit searched range.
      Signed-off-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      76d570dc
    • P
      Merge remote-tracking branch 'remotes/thibault/tags/samuel-thibault' into staging · 6f2f3417
      Peter Maydell 提交于
      slirp updates
      
      Gerd Hoffmann (1):
        slirp: add tftp tracing
      
      Marc-André Lureau (61):
        slirp: associate slirp_output callback with the Slirp context
        slirp: remove do_pty from fork_exec()
        slirp: replace ex_pty with ex_chardev
        slirp: use a dedicated field for chardev pointer
        slirp: remove unused EMU_RSH
        slirp: rename /extra/chardev
        slirp: move internal function declarations
        slirp: remove Monitor dependency, return a string for info
        slirp: fix slirp_add_exec() leaks
        slirp: replace the poor-man string split with g_strsplit()
        slirp: remove dead declarations
        slirp: move socket pair creation in helper function
        slirp: remove unused M_TRAILINGSPACE
        slirp: use a callback structure to interface with qemu
        slirp: remove PROBE_CONN dead-code
        slirp: remove FULL_BOLT
        slirp: remove the disabled readv()/writev() code path
        slirp: remove HAVE_SYS_SIGNAL_H
        slirp: remove unused HAVE_SYS_BITYPES_H
        slirp: remove NO_UNIX_SOCKETS
        slirp: remove unused HAVE_SYS_STROPTS_H
        slirp: remove unused HAVE_ARPA_INET_H
        slirp: remove unused HAVE_SYS_WAIT_H
        slirp: remove unused HAVE_SYS_SELECT_H
        slirp: remove HAVE_SYS_IOCTL_H
        slirp: remove HAVE_SYS_FILIO_H
        slirp: remove unused DECLARE_IOVEC
        slirp: remove unused HAVE_INET_ATON
        slirp: replace HOST_WORDS_BIGENDIAN with glib equivalent
        slirp: replace SIZEOF_CHAR_P with glib equivalent
        slirp: replace compile time DO_KEEPALIVE
        slirp: remove unused global slirp_instance
        slirp: replace error_report() with g_critical()
        slirp: improve a bit the debug macros
        slirp: add a callback to log guest errors
        slirp: remove #if notdef dead code
        slirp: remove unused sbflush()
        slirp: NULL is defined by stddef.h
        slirp: remove dead TCP_ACK_HACK code
        slirp: replace ARRAY_SIZE with G_N_ELEMENTS
        net: do not depend on slirp internals
        glib-compat: add g_spawn_async_with_fds() fallback
        slirp: simplify fork_exec()
        slirp: replace error_report() with g_critical()
        slirp: drop <Vista compatibility
        slirp: rename exec_list
        slirp: use virtual time for packet expiration
        slirp: replace a fprintf with g_critical()
        slirp: replace some fprintf() with DEBUG_MISC
        slirp: replace a DEBUG block with WITH_ICMP_ERROR_MSG
        slirp: no need to make DPRINTF conditional on DEBUG
        slirp: always build with debug statements
        slirp: introduce SLIRP_DEBUG environment variable
        slirp: use %p for pointers format
        slirp: remove remaining DEBUG blocks
        slirp: replace DEBUG_ARGS with DEBUG_ARG
        slirp: factor out guestfwd addition checks
        slirp: add clock_get_ns() callback
        build-sys: use a separate slirp-obj-y && slirp.mo
        slirp: set G_LOG_DOMAIN
        slirp: call into g_debug() for DEBUG macros
      
      Prasad J Pandit (1):
        slirp: check data length while emulating ident function
      
      Samuel Thibault (2):
        slirp: Enable fork_exec support on Windows
        slirp: Mark debugging calls as unlikely
      
       Makefile              |   5 +-
       Makefile.objs         |   4 +-
       Makefile.target       |   5 +-
       include/glib-compat.h |  56 +++++++++
       net/colo-compare.c    |  11 +-
       net/colo.c            |   1 +
       net/colo.h            |   7 +-
       net/filter-rewriter.c |   9 +-
       net/slirp.c           |  61 +++++----
       net/util.h            |  55 ++++++++
       slirp/Makefile.objs   |  37 +++++-
       slirp/arp_table.c     |  12 +-
       slirp/bootp.c         |  10 +-
       slirp/cksum.c         |   8 +-
       slirp/debug.h         |  47 ++++---
       slirp/dhcpv6.c        |  17 ++-
       slirp/if.c            |   4 +-
       slirp/ip.h            |  10 +-
       slirp/ip6.h           |   3 +-
       slirp/ip6_icmp.c      |  27 ++--
       slirp/ip6_icmp.h      |   6 +-
       slirp/ip6_input.c     |   2 +-
       slirp/ip6_output.c    |   4 +-
       slirp/ip_icmp.c       |  31 ++---
       slirp/ip_input.c      | 200 -----------------------------
       slirp/libslirp.h      |  27 ++--
       slirp/main.h          |  33 -----
       slirp/mbuf.c          |   2 +-
       slirp/mbuf.h          |   1 -
       slirp/misc.c          | 286 +++++++++++++++++-------------------------
       slirp/misc.h          |  13 +-
       slirp/ncsi.c          |   4 +-
       slirp/ndp_table.c     |  32 +++--
       slirp/sbuf.h          |   1 -
       slirp/slirp.c         | 177 +++++++++++++-------------
       slirp/slirp.h         |  45 ++-----
       slirp/slirp_config.h  |  86 -------------
       slirp/socket.c        |  53 +++-----
       slirp/socket.h        |   2 +-
       slirp/tcp.h           |   4 +-
       slirp/tcp_input.c     |  84 ++-----------
       slirp/tcp_output.c    |   2 +-
       slirp/tcp_subr.c      |  22 ++--
       slirp/tcp_timer.c     |   2 +-
       slirp/tftp.c          |   7 +-
       slirp/trace-events    |   5 +
       slirp/udp.c           |   5 +-
       slirp/udp6.c          |  11 +-
       stubs/slirp.c         |   2 +-
       49 files changed, 603 insertions(+), 935 deletions(-)
       delete mode 100644 slirp/slirp_config.h
       create mode 100644 slirp/trace-events
      
      --
      2.20.1
      
      # gpg: Signature made Mon 14 Jan 2019 22:52:32 GMT
      # gpg:                using RSA key DB550E89F0FA54F3
      # gpg: Good signature from "Samuel Thibault <samuel.thibault@aquilenet.fr>"
      # gpg:                 aka "Samuel Thibault <sthibault@debian.org>"
      # gpg:                 aka "Samuel Thibault <samuel.thibault@gnu.org>"
      # gpg:                 aka "Samuel Thibault <samuel.thibault@inria.fr>"
      # gpg:                 aka "Samuel Thibault <samuel.thibault@labri.fr>"
      # gpg:                 aka "Samuel Thibault <samuel.thibault@ens-lyon.org>"
      # gpg:                 aka "Samuel Thibault <samuel.thibault@u-bordeaux.fr>"
      # gpg: WARNING: This key is not certified with sufficiently trusted signatures!
      # gpg:          It is not certain that the signature belongs to the owner.
      # Primary key fingerprint: 900C B024 B679 31D4 0F82  304B D017 8C76 7D06 9EE6
      #      Subkey fingerprint: E61D BB15 D417 2BDE C97E  92D9 DB55 0E89 F0FA 54F3
      
      * remotes/thibault/tags/samuel-thibault: (65 commits)
        slirp: check data length while emulating ident function
        slirp: Mark debugging calls as unlikely
        slirp: call into g_debug() for DEBUG macros
        slirp: set G_LOG_DOMAIN
        build-sys: use a separate slirp-obj-y && slirp.mo
        slirp: add clock_get_ns() callback
        slirp: factor out guestfwd addition checks
        slirp: replace DEBUG_ARGS with DEBUG_ARG
        slirp: remove remaining DEBUG blocks
        slirp: use %p for pointers format
        slirp: introduce SLIRP_DEBUG environment variable
        slirp: always build with debug statements
        slirp: no need to make DPRINTF conditional on DEBUG
        slirp: replace a DEBUG block with WITH_ICMP_ERROR_MSG
        slirp: replace some fprintf() with DEBUG_MISC
        slirp: replace a fprintf with g_critical()
        slirp: use virtual time for packet expiration
        slirp: rename exec_list
        slirp: drop <Vista compatibility
        slirp: Enable fork_exec support on Windows
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      6f2f3417
    • P
      Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging · 4b9f0b0f
      Peter Maydell 提交于
      Pull request
      
      No user-visible changes.
      
      # gpg: Signature made Mon 14 Jan 2019 16:32:19 GMT
      # gpg:                using RSA key 9CA4ABB381AB73C8
      # gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>"
      # gpg:                 aka "Stefan Hajnoczi <stefanha@gmail.com>"
      # Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35  775A 9CA4 ABB3 81AB 73C8
      
      * remotes/stefanha/tags/block-pull-request:
        aio-posix: Fix concurrent aio_poll/set_fd_handler.
        aio-posix: Unregister fd from ctx epoll when removing fd_handler.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      4b9f0b0f
  4. 15 1月, 2019 27 次提交
    • P
      Merge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2019-01-14' into staging · 44ba6010
      Peter Maydell 提交于
      nbd patches for 2019-01-14
      
      Promote bitmap/NBD interfaces to stable for use in incremental
      backups. Add 'qemu-nbd --bitmap'.
      
      - John Snow: 0/11 bitmaps: remove x- prefix from QMP api
      - Philippe Mathieu-Daudé: qemu-nbd: Rename 'exp' variable clashing with math::exp() symbol
      - Eric Blake: 0/8 Promote x-nbd-server-add-bitmap to stable
      
      # gpg: Signature made Mon 14 Jan 2019 16:13:45 GMT
      # gpg:                using RSA key A7A16B4A2527436A
      # gpg: Good signature from "Eric Blake <eblake@redhat.com>"
      # gpg:                 aka "Eric Blake (Free Software Programmer) <ebb9@byu.net>"
      # gpg:                 aka "[jpeg image of size 6874]"
      # Primary key fingerprint: 71C2 CC22 B1C4 6029 27D2  F3AA A7A1 6B4A 2527 436A
      
      * remotes/ericb/tags/pull-nbd-2019-01-14:
        qemu-nbd: Add --bitmap=NAME option
        nbd: Merge nbd_export_bitmap into nbd_export_new
        nbd: Remove x-nbd-server-add-bitmap
        nbd: Allow bitmap export during QMP nbd-server-add
        nbd: Merge nbd_export_set_name into nbd_export_new
        nbd: Only require disabled bitmap for read-only exports
        nbd: Forbid nbd-server-stop when server is not running
        nbd: Add some error case testing to iotests 223
        qemu-nbd: Rename 'exp' variable clashing with math::exp() symbol
        iotests: add iotest 236 for testing bitmap merge
        iotests: implement pretty-print for log and qmp_log
        iotests: change qmp_log filters to expect QMP objects only
        iotests: remove default filters from qmp_log
        iotests: add qmp recursive sorting function
        iotests: add filter_generated_node_ids
        iotests.py: don't abort if IMGKEYSECRET is undefined
        block: remove 'x' prefix from experimental bitmap APIs
        blockdev: n-ary bitmap merge
        block/dirty-bitmap: remove assertion from restore
        blockdev: abort transactions in reverse order
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      44ba6010
    • P
      Merge remote-tracking branch 'remotes/stsquad/tags/pull-misc-gitdm-next-140119-1' into staging · b2f7c27f
      Peter Maydell 提交于
      gitdm updates with 2018 year end stats:
      
        git log --numstat --after="1/1/2018 00:00" --before="31/12/2018 23:59" | ~/src/gitdm.git/gitdm -n -l 10
      
        Top changeset contributors by employer
        Red Hat                   3091 (43.3%)
        Linaro                    1201 (16.8%)
        (None)                     484 (6.8%)
        IBM                        426 (6.0%)
        Academics (various)        186 (2.6%)
        Virtuozzo                  172 (2.4%)
        Wave Computing             118 (1.7%)
        Igalia                     109 (1.5%)
        Xilinx                     102 (1.4%)
        Cadence Design Systems      80 (1.1%)
      
        Top lines changed by employer
        Red Hat                   140523 (30.3%)
        Cadence Design Systems    81010 (17.5%)
        Linaro                    78098 (16.8%)
        Wave Computing            33134 (7.1%)
        IBM                       18918 (4.1%)
        SiFive                    14436 (3.1%)
        Academics (various)       11995 (2.6%)
        (None)                    11458 (2.5%)
        Virtuozzo                 10770 (2.3%)
        Oracle                    6698 (1.4%)
      
      # gpg: Signature made Mon 14 Jan 2019 16:08:52 GMT
      # gpg:                using RSA key FBD0DB095A9E2A44
      # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>"
      # Primary key fingerprint: 6685 AE99 E751 67BC AFC8  DF35 FBD0 DB09 5A9E 2A44
      
      * remotes/stsquad/tags/pull-misc-gitdm-next-140119-1:
        MAINTAINERS: add myself as a route for gitdm updates
        contrib/gitdm: add another name to WaveComp map
        contrib/gitdm: add two more IBM'ers to group-map-ibm
        contrib/gitdm: Add other IBMers
        contrib/gitdm: add Nokia and Proxmox to the domain-map
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      b2f7c27f
    • P
      slirp: check data length while emulating ident function · a7104eda
      Prasad J Pandit 提交于
      While emulating identification protocol, tcp_emu() does not check
      available space in the 'sc_rcv->sb_data' buffer. It could lead to
      heap buffer overflow issue. Add check to avoid it.
      Reported-by: NKira <864786842@qq.com>
      Signed-off-by: NPrasad J Pandit <pjp@fedoraproject.org>
      Signed-off-by: NSamuel Thibault <samuel.thibault@ens-lyon.org>
      a7104eda
    • S
      slirp: Mark debugging calls as unlikely · 55ef9c61
      Samuel Thibault 提交于
      to get them out of the hot path.
      Signed-off-by: NSamuel Thibault <samuel.thibault@ens-lyon.org>
      Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      55ef9c61
    • M
      slirp: call into g_debug() for DEBUG macros · 226ea7a9
      Marc-André Lureau 提交于
      Make slirp use GLib logging, instead of fprintf(), so that
      applications can filter log, process it etc.
      
      With recent versions of glib, G_MESSAGES_DEBUG must be set to "all" or
      "Slirp" to see slirp debug messages.
      
      Reformat DEBUG_MISC & DEBUG_ERROR calls to not need \n ending.
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Signed-off-by: NSamuel Thibault <samuel.thibault@ens-lyon.org>
      226ea7a9
    • M
      slirp: set G_LOG_DOMAIN · 2a2d3e4a
      Marc-André Lureau 提交于
      We are moving to g_log() facilities to log errors and probably debug
      messages too. Let's have the "Slirp" prefix on messages slirp produces.
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Signed-off-by: NSamuel Thibault <samuel.thibault@ens-lyon.org>
      2a2d3e4a
    • M
      build-sys: use a separate slirp-obj-y && slirp.mo · 1fdf3992
      Marc-André Lureau 提交于
      This will allow to have cflags for the whole slirp.mo -objs.
      It makes it possible to build tests that links only with
      slirp-obj-y (and not the whole common-obj).
      
      It is also a step towards building slirp as a shared library, although
      this requires a bit more thoughts to build with
      net/slirp.o (CONFIG_SLIRP would need to be 'm') and other build issues.
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Signed-off-by: NSamuel Thibault <samuel.thibault@ens-lyon.org>
      1fdf3992
    • P
      Merge remote-tracking branch 'remotes/stsquad/tags/pull-testing-next-140119-1' into staging · eb0667fe
      Peter Maydell 提交于
      A bunch of fixes for testing:
      
        - Various Travis updates
        - "stable" SID snapshot for docker
        - avoid :latest docker tags
        - g_usleep fix for some tests
      
      # gpg: Signature made Mon 14 Jan 2019 14:59:35 GMT
      # gpg:                using RSA key FBD0DB095A9E2A44
      # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>"
      # Primary key fingerprint: 6685 AE99 E751 67BC AFC8  DF35 FBD0 DB09 5A9E 2A44
      
      * remotes/stsquad/tags/pull-testing-next-140119-1: (21 commits)
        Revert "tests: Disable qht-bench parallel test when using gprof"
        tests: use g_usleep instead of rem = sleep(time)
        tests/docker: remove SID_AGE test hack
        tests/docker: update our Travis image
        travis: bump to Xenial baseline
        docker: Use a stable snapshot for Debian Sid
        travis: remove matrix settings that duplicate global settings
        travis: run tests in verbose mode
        travis: stop using container based envs
        travis: stop redefining the script commands
        travis: use homebrew addon for MacOSX
        travis: don't clone git submodules upfront
        travis: standardize the syntax used for env variables
        travis: define all the build matrix entries in one place
        travis: add whitespace between each major section & matrix entry
        tests: use in-place sed magic for enabling deb-src in travis image
        tests: update Fedora i386 cross image to Fedora 29
        tests: update Fedora dockerfile to use Fedora 29
        tests: remove obsolete 'debian' dockerfile
        tests: run ldconfig after installing extra software
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      eb0667fe
    • P
      Merge remote-tracking branch 'remotes/ehabkost/tags/x86-next-pull-request' into staging · 89bd861c
      Peter Maydell 提交于
      x86 queue, 2019-01-14
      
      * Reenable RDTSCP support on Opteron_G[345] CPU models CPU models
        (Borislav Petkov)
      * host-phys-bits-limit option for better control of 5-level EPT
        (Eduardo Habkost)
      * Disable MPX support on named CPU models (Paolo Bonzini)
      * expose HV_CPUID_ENLIGHTMENT_INFO.EAX and HV_CPUID_NESTED_FEATURES.EAX
        as feature words (Vitaly Kuznetsov)
      
      # gpg: Signature made Mon 14 Jan 2019 14:33:55 GMT
      # gpg:                using RSA key 2807936F984DC5A6
      # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>"
      # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6
      
      * remotes/ehabkost/tags/x86-next-pull-request:
        i386/kvm: add a comment explaining why .feat_names are commented out for Hyper-V feature bits
        x86: host-phys-bits-limit option
        target/i386: Disable MPX support on named CPU models
        target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models CPU models
        i386/kvm: expose HV_CPUID_ENLIGHTMENT_INFO.EAX and HV_CPUID_NESTED_FEATURES.EAX as feature words
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      89bd861c
    • E
      qemu-nbd: Add --bitmap=NAME option · 636192c4
      Eric Blake 提交于
      Having to fire up qemu, then use QMP commands for nbd-server-start
      and nbd-server-add, just to expose a persistent dirty bitmap, is
      rather tedious.  Make it possible to expose a dirty bitmap using
      just qemu-nbd (of course, for now this only works when qemu-nbd is
      visiting a BDS formatted as qcow2).
      
      Of course, any good feature also needs unit testing, so expand
      iotest 223 to cover it.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190111194720.15671-9-eblake@redhat.com>
      636192c4
    • E
      nbd: Merge nbd_export_bitmap into nbd_export_new · 678ba275
      Eric Blake 提交于
      We only have one caller that wants to export a bitmap name,
      which it does right after creation of the export. But there is
      still a brief window of time where an NBD client could see the
      export but not the dirty bitmap, which a robust client would
      have to interpret as meaning the entire image should be treated
      as dirty.  Better is to eliminate the window entirely, by
      inlining nbd_export_bitmap() into nbd_export_new(), and refusing
      to create the bitmap in the first place if the requested bitmap
      can't be located.
      
      We also no longer need logic for setting a different bitmap
      name compared to the bitmap being exported.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20190111194720.15671-8-eblake@redhat.com>
      678ba275
    • E
      nbd: Remove x-nbd-server-add-bitmap · 7dc570b3
      Eric Blake 提交于
      Now that nbd-server-add can do the same functionality (well, other
      than making the exported bitmap name different than the underlying
      bitamp - but we argued that was not essential, since it is just as
      easy to create a new non-persistent bitmap with the desired name),
      we no longer need the experimental separate command.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20190111194720.15671-7-eblake@redhat.com>
      7dc570b3
    • E
      nbd: Allow bitmap export during QMP nbd-server-add · 5fcbeb06
      Eric Blake 提交于
      With the experimental x-nbd-server-add-bitmap command, there was
      a window of time where an NBD client could see the export but not
      the associated dirty bitmap, which can cause a client that planned
      on using the dirty bitmap to be forced to treat the entire image
      as dirty as a safety fallback.  Furthermore, if the QMP client
      successfully exports a disk but then fails to add the bitmap, it
      has to take on the burden of removing the export.  Since we don't
      allow changing the exposed dirty bitmap (whether to a different
      bitmap, or removing advertisement of the bitmap), it is nicer to
      make the bitmap tied to the export at the time the export is
      created, with automatic failure to export if the bitmap is not
      available.
      
      The experimental command included an optional 'bitmap-export-name'
      field for remapping the name exposed over NBD to be different from
      the bitmap name stored on disk.  However, my libvirt demo code
      for implementing differential backups on top of persistent bitmaps
      did not need to take advantage of that feature (it is instead
      possible to create a new temporary bitmap with the desired name,
      use block-dirty-bitmap-merge to merge one or more persistent
      bitmaps into the temporary, then associate the temporary with the
      NBD export, if control is needed over the exported bitmap name).
      Hence, I'm not copying that part of the experiment over to the
      stable addition. For more details on the libvirt demo, see
      https://www.redhat.com/archives/libvir-list/2018-October/msg01254.html,
      https://kvmforum2018.sched.com/event/FzuB/facilitating-incremental-backup-eric-blake-red-hat
      
      This patch focuses on the user interface, and reduces (but does
      not completely eliminate) the window where an NBD client can see
      the export but not the dirty bitmap, with less work to clean up
      after errors.  Later patches will add further cleanups now that
      this interface is declared stable via a single QMP command,
      including removing the race window.
      
      Update test 223 to use the new interface.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20190111194720.15671-6-eblake@redhat.com>
      5fcbeb06
    • E
      nbd: Merge nbd_export_set_name into nbd_export_new · 3fa4c765
      Eric Blake 提交于
      The existing NBD code had a weird split where nbd_export_new()
      created an export but did not add it to the list of exported
      names until a later nbd_export_set_name() came along and grabbed
      a second reference on the object; later, the first call to
      nbd_export_close() drops the second reference while removing
      the export from the list.  This is in part because the QAPI
      NbdServerRemoveNode enum documents the possibility of adding a
      mode where we could do a soft disconnect: preventing new clients,
      but waiting for existing clients to gracefully quit, based on
      the mode used when calling nbd_export_close().
      
      But in spite of all that, note that we never change the name of
      an NBD export while it is exposed, which means it is easier to
      just inline the process of setting the name as part of creating
      the export.
      
      Inline the contents of nbd_export_set_name() and
      nbd_export_set_description() into the two points in an export
      lifecycle where they matter, then adjust both callers to pass
      the name up front.  Note that for creation, all callers pass a
      non-NULL name, (passing NULL at creation was for old style
      servers, but we removed support for that in commit 7f7dfe2a),
      so we can add an assert and do things unconditionally; but for
      cleanup, because of the dual nature of nbd_export_close(), we
      still have to be careful to avoid use-after-free.  Along the
      way, add a comment reminding ourselves of the potential of
      adding a middle mode disconnect.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20190111194720.15671-5-eblake@redhat.com>
      3fa4c765
    • E
      nbd: Only require disabled bitmap for read-only exports · 702aa50d
      Eric Blake 提交于
      Our initial implementation of x-nbd-server-add-bitmap put
      in a restriction because of incremental backups: in that
      usage, we are exporting one qcow2 file (the temporary overlay
      target of a blockdev-backup sync:none job) and a dirty bitmap
      owned by a second qcow2 file (the source of the
      blockdev-backup, which is the backing file of the temporary).
      While both qcow2 files are still writable (the target in
      order to capture copy-on-write of old contents, and the
      source in order to track live guest writes in the meantime),
      the NBD client expects to see constant data, including the
      dirty bitmap.  An enabled bitmap in the source would be
      modified by guest writes, which is at odds with the NBD
      export being a read-only constant view, hence the initial
      code choice of enforcing a disabled bitmap (the intent is
      that the exposed bitmap was disabled in the same transaction
      that started the blockdev-backup job, although we don't want
      to track enough state to actually enforce that).
      
      However, consider the case of a bitmap contained in a read-only
      node (including when the bitmap is found in a backing layer of
      the active image).  Because the node can't be modified, the
      bitmap won't change due to writes, regardless of whether it is
      still enabled.  Forbidding the export unless the bitmap is
      disabled is awkward, paritcularly since we can't change the
      bitmap to be disabled (because the node is read-only).
      
      Alternatively, consider the case of live storage migration,
      where management directs the destination to create a writable
      NBD server, then performs a drive-mirror from the source to
      the target, prior to doing the rest of the live migration.
      Since storage migration can be time-consuming, it may be wise
      to let the destination include a dirty bitmap to track which
      portions it has already received, where even if the migration
      is interrupted and restarted, the source can query the
      destination block status in order to potentially minimize
      re-sending data that has not changed in the meantime on a
      second attempt. Such code has not been written, and might not
      be trivial (after all, a cluster being marked dirty in the
      bitmap does not necessarily guarantee it has the desired
      contents), but it makes sense that letting an active dirty
      bitmap be exposed and changing alongside writes may prove
      useful in the future.
      
      Solve both issues by gating the restriction against a
      disabled bitmap to only happen when the caller has requested
      a read-only export, and where the BDS that owns the bitmap
      (whether or not it is the BDS handed to nbd_export_new() or
      from its backing chain) is still writable.  We could drop
      the check altogether (if management apps are prepared to
      deal with a changing bitmap even on a read-only image), but
      for now keeping a check for the read-only case still stands
      a chance of preventing management errors.
      
      Update iotest 223 to show the looser behavior by leaving
      a bitmap enabled the whole run; note that we have to tear
      down and re-export a node when handling an error.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190111194720.15671-4-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      702aa50d
    • E
      nbd: Forbid nbd-server-stop when server is not running · 7801c3a7
      Eric Blake 提交于
      Since we already forbid other nbd-server commands when not
      in the right state, it is unlikely that any caller was relying
      on a second stop to behave as a silent no-op.  Update iotest
      223 to show the improved behavior.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190111194720.15671-3-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      7801c3a7
    • E
      nbd: Add some error case testing to iotests 223 · 2d2fd674
      Eric Blake 提交于
      Testing success paths is important, but it's also nice to highlight
      expected failure handling, to show that we don't crash, and so that
      upcoming tests that change behavior can demonstrate the resulting
      effects on error paths.
      
      Add the following errors:
      Attempting to export without a running server
      Attempting to start a second server
      Attempting to export a bad node name
      Attempting to export a name that is already exported
      Attempting to export an enabled bitmap
      Attempting to remove an already removed export
      Attempting to quit server a second time
      
      All of these properly complain except for a second server-stop,
      which will be fixed next.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190111194720.15671-2-eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      2d2fd674
    • P
      qemu-nbd: Rename 'exp' variable clashing with math::exp() symbol · 9d976580
      Philippe Mathieu-Daudé 提交于
      The use of a variable named 'exp' prevents includes to import <math.h>.
      
      Rename it to avoid:
      
        qemu-nbd.c:64:19: error: ‘exp’ redeclared as different kind of symbol
         static NBDExport *exp;
                           ^~~
        In file included from /usr/include/features.h:428,
                         from /usr/include/bits/libc-header-start.h:33,
                         from /usr/include/stdint.h:26,
                         from /usr/lib/gcc/x86_64-redhat-linux/8/include/stdint.h:9,
                         from /source/qemu/include/qemu/osdep.h:80,
                         from /source/qemu/qemu-nbd.c:19:
        /usr/include/bits/mathcalls.h:95:1: note: previous declaration of ‘exp’ was here
          __MATHCALL_VEC (exp,, (_Mdouble_ __x));
          ^~~~~~~~~~~~~~
      Signed-off-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20190111163519.11457-1-philmd@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      9d976580
    • J
      iotests: add iotest 236 for testing bitmap merge · 14da540f
      John Snow 提交于
      New interface, new smoke test.
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20181221093529.23855-12-jsnow@redhat.com>
      [eblake: fix last-minute change to echo text]
      Signed-off-by: NEric Blake <eblake@redhat.com>
      14da540f
    • J
      iotests: implement pretty-print for log and qmp_log · 55cd64ea
      John Snow 提交于
      If iotests have lines exceeding >998 characters long, git doesn't
      want to send it plaintext to the list. We can solve this by allowing
      the iotests to use pretty printed QMP output that we can match against
      instead.
      
      As a bonus, it's much nicer for human eyes too.
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-11-jsnow@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      55cd64ea
    • J
      iotests: change qmp_log filters to expect QMP objects only · 08fcd611
      John Snow 提交于
      As laid out in the previous commit's message:
      
      ```
      Several places in iotests deal with serializing objects into JSON
      strings, but to add pretty-printing it seems desirable to localize
      all of those cases.
      
      log() seems like a good candidate for that centralized behavior.
      log() can already serialize json objects, but when it does so,
      it assumes filters=[] operates on QMP objects, not strings.
      
      qmp_log currently operates by dumping outgoing and incoming QMP
      objects into strings and filtering them assuming that filters=[]
      are string filters.
      ```
      
      Therefore:
      
      Change qmp_log to treat filters as if they're always qmp object filters,
      then change the logging call to rely on log()'s ability to serialize QMP
      objects, so we're not duplicating that effort.
      
      Add a qmp version of filter_testfiles and adjust the only caller using
      it for qmp_log to use the qmp version.
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Message-Id: <20181221093529.23855-10-jsnow@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      08fcd611
    • J
      iotests: remove default filters from qmp_log · f8ca8609
      John Snow 提交于
      Several places in iotests deal with serializing objects into JSON
      strings, but to add pretty-printing it seems desirable to localize
      all of those cases.
      
      log() seems like a good candidate for that centralized behavior.
      log() can already serialize json objects, but when it does so,
      it assumes filters=[] operates on QMP objects, not strings.
      
      qmp_log currently operates by dumping outgoing and incoming QMP
      objects into strings and filtering them assuming that filters=[]
      are string filters.
      
      To have qmp_log use log's serialization, qmp_log will need to
      accept only qmp filters, not text filters.
      
      However, only a single caller of qmp_log actually requires any
      filters at all. I remove the default filter and add it explicitly
      to the caller in preparation for refactoring qmp_log to use rich
      filters instead.
      
      test 206 is amended to name the filter explicitly and the default
      is removed.
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-9-jsnow@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      f8ca8609
    • J
      iotests: add qmp recursive sorting function · 0706e87d
      John Snow 提交于
      Python before 3.6 does not sort dictionaries (including kwargs).
      Therefore, printing QMP objects involves sorting the keys to have
      a predictable ordering in the iotests output. This means that
      iotests output will sometimes show arguments in an order not
      specified by the test author.
      
      Presently, we accomplish this by using json.dumps' sort_keys argument,
      where we only serialize the arguments dictionary, but not the command.
      
      However, if we want to pretty-print QMP objects being sent to the
      QEMU process, we need to build the entire command before logging it.
      Ordinarily, this would then involve "arguments" being sorted above
      "execute", which would necessitate a rather ugly and harder-to-read
      change to many iotests outputs.
      
      To facilitate pretty-printing AND maintaining predictable output AND
      having "arguments" sort after "execute", add a custom sort function
      that takes a dictionary and recursively builds an OrderedDict that
      maintains the specific key order we wish to see in iotests output.
      
      The qmp_log function uses this to build a QMP object that keeps
      "execute" above "arguments", but sorts all keys and keys in any
      subdicts in "arguments" lexicographically to maintain consistent
      iotests output, with no incompatible changes to any current test.
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-8-jsnow@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      0706e87d
    • J
      iotests: add filter_generated_node_ids · fa1151f8
      John Snow 提交于
      To mimic the common filter of the same name, but for the python tests.
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-7-jsnow@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      fa1151f8
    • J
      iotests.py: don't abort if IMGKEYSECRET is undefined · 58ebcb65
      John Snow 提交于
      Instead of using os.environ[], use .get with a default of empty string
      to match the setup in check to allow us to import the iotests module
      (for debugging, say) without needing a crafted environment just to
      import the module.
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-6-jsnow@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      58ebcb65
    • J
      block: remove 'x' prefix from experimental bitmap APIs · 0e2b7f09
      John Snow 提交于
      The 'x' prefix was added because I was uncertain of the direction we'd
      take for the libvirt API. With the general approach solidified, I feel
      comfortable committing to this API for 4.0.
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-5-jsnow@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      0e2b7f09
    • J
      blockdev: n-ary bitmap merge · 360d4e4e
      John Snow 提交于
      Especially outside of transactions, it is helpful to provide
      all-or-nothing semantics for bitmap merges. This facilitates
      the coalescing of multiple bitmaps into a single target for
      the "checkpoint" interpretation when assembling bitmaps that
      represent arbitrary points in time from component bitmaps.
      
      This is an incompatible change from the preliminary version
      of the API.
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-4-jsnow@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      360d4e4e