1. 20 7月, 2016 7 次提交
  2. 19 7月, 2016 33 次提交
    • P
      disas: Fix ATTRIBUTE_UNUSED define clash with ALSA headers · 5d321734
      Peter Maydell 提交于
      disas/bfd.h defines ATTRIBUTE_UNUSED, but unfortunately the
      ALSA system headers also define this macro, which means that
      you can get a compilation failure if building with ALSA and
      any files happen to include the alsa headers before bfd.h
      rather than the other way around.
      
      This is unfortunate namespace pollution by the ALSA headers but
      we can work around it. Add an #ifndef guard to bfd.h and remove
      the unnecessary extra definition in disas/arm.c to fix this.
      Reported-by: NBALATON Zoltan <balaton@eik.bme.hu>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      Message-id: 1468937076-21503-1-git-send-email-peter.maydell@linaro.org
      5d321734
    • P
      Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging · a3b34377
      Peter Maydell 提交于
      * two old patches from prospective GSoC students
      * i386 -kernel device tree support
      * Coverity fix
      * memory usage improvement from Peter
      * checkpatch fix
      * g_path_get_dirname cleanup
      * caching of block status for iSCSI
      
      # gpg: Signature made Tue 19 Jul 2016 07:43:41 BST
      # gpg:                using RSA key 0xBFFBD25F78C7AE83
      # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>"
      # gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>"
      # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
      #      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83
      
      * remotes/bonzini/tags/for-upstream:
        target-i386: Remove redundant HF_SOFTMMU_MASK
        block/iscsi: allow caching of the allocation map
        block/iscsi: fix rounding in iscsi_allocationmap_set
        Move README to markdown
        cpu-exec: Move down some declarations in cpu_exec()
        exec: avoid realloc in phys_map_node_reserve
        checkpatch: consider git extended headers valid patches
        megasas: remove useless check for cmd->frame
        compiler: never omit assertions if using a static analysis tool
        hw/i386: add device tree support
        Changed malloc to g_malloc, free to g_free in bsd-user/qemu.h
        use g_path_get_dirname instead of dirname
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      a3b34377
    • P
      Merge remote-tracking branch 'remotes/stsquad/tags/pull-travis-20160718-1' into staging · db3e07db
      Peter Maydell 提交于
      Make IRC a little less noisy
      
      # gpg: Signature made Mon 18 Jul 2016 16:42:57 BST
      # gpg:                using RSA key 0xFBD0DB095A9E2A44
      # 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-travis-20160718-1:
        .travis.yml: Disable IRC build status updates from forks
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      db3e07db
    • P
      linux-user: AArch64 has sync_file_range, not sync_file_range2 · c4e1cbd4
      Peter Maydell 提交于
      The AArch64 Linux ABI syscall 84 is sync_file_range, not
      sync_file_range2 (in the kernel it uses the asm-generic
      headers and does not define __ARCH_WANT_SYNC_FILE_RANGE2).
      Update our TARGET_NR_* definitions accordingly.
      
      This fixes the sync_file_range syscall which otherwise
      gets its arguments in the wrong order.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      c4e1cbd4
    • P
      linux-user: Fix type for SIOCATMARK ioctl · a57f1f8f
      Peter Maydell 提交于
      The SIOCATMARK ioctl takes an argument which should be a
      pointer to an integer where the kernel will write the result.
      We were incorrectly declaring it as TYPE_NULL which would mean
      it would always fail (with EFAULT) when it should succeed.
      Correct the type.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      a57f1f8f
    • L
      linux-user: define missing sparc syscalls · 74642d09
      Laurent Vivier 提交于
      NR_lookup_dcookie, NR_fadvise64, NR_fadvise64_64
      Signed-off-by: NLaurent Vivier <laurent@vivier.eu>
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      74642d09
    • T
      linux-user: Fix terminal control ioctls · 5b7f7bb3
      Timothy Pearson 提交于
      TIOCGPTN and related terminal control ioctls were not converted to the guest ioctl format on x86_64 targets. Convert these ioctls to enable terminal functionality on x86_64 guests.
      Signed-off-by: NTimothy Pearson <tpearson@raptorengineering.com>
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      5b7f7bb3
    • P
      Merge remote-tracking branch 'remotes/kraxel/tags/pull-vnc-20160719-1' into staging · 1df8ffb2
      Peter Maydell 提交于
      vnc: bugfixes for -rc0
      
      # gpg: Signature made Tue 19 Jul 2016 08:27:05 BST
      # gpg:                using RSA key 0x4CB6D8EED3E87138
      # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>"
      # gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>"
      # gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>"
      # Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138
      
      * remotes/kraxel/tags/pull-vnc-20160719-1:
        vnc-tight: fix regression with libxenstore
        vnc-enc-tight: fix off-by-one bug
        vnc: make sure we finish disconnect
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      1df8ffb2
    • P
      Merge remote-tracking branch 'remotes/mcayland/tags/qemu-openbios-signed' into staging · 68ab919f
      Peter Maydell 提交于
      Update OpenBIOS images
      
      # gpg: Signature made Tue 19 Jul 2016 07:42:30 BST
      # gpg:                using RSA key 0x5BC2C56FAE0F321F
      # gpg: Good signature from "Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>"
      # Primary key fingerprint: CC62 1AB9 8E82 200D 915C  C9C4 5BC2 C56F AE0F 321F
      
      * remotes/mcayland/tags/qemu-openbios-signed:
        Update OpenBIOS images to e79bca6 built from submodule.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      68ab919f
    • P
      linux-user: Add some new blk ioctls · 4715856a
      Peter Maydell 提交于
      Add some new blk ioctls (these are 0x12,119 through
      to 0x12,127). Several of these are used by mke2fs; this silences
      the warnings:
      
      mke2fs 1.42.12 (29-Aug-2014)
      Unsupported ioctl: cmd=0x127b
      Unsupported ioctl: cmd=0x127a
      warning: Unable to get device geometry for /dev/loop5
      Unsupported ioctl: cmd=0x127c
      Unsupported ioctl: cmd=0x127c
      Unsupported ioctl: cmd=0x1277
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      4715856a
    • P
      linux-user: Handle short lengths in host_to_target_sockaddr() · a1e22192
      Peter Maydell 提交于
      If userspace specifies a short buffer for a target sockaddr,
      the kernel will only copy in as much as it has space for
      (or none at all if the length is zero) -- see the kernel
      move_addr_to_user() function. Mimic this in QEMU's
      host_to_target_sockaddr() routine.
      
      In particular, this fixes a segfault running the LTP
      recvfrom01 test, where the guest makes a recvfrom()
      call with a bad buffer pointer and other parameters which
      cause the kernel to set the addrlen to zero; because we
      did not skip the attempt to swap the sa_family field we
      segfaulted on the bad address.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      a1e22192
    • P
      linux-user: Forget about synchronous signal once it is delivered · 31efaef1
      Peter Maydell 提交于
      Commit 655ed67c which switched synchronous signals to
      benig recorded in ts->sync_signal rather than in a queue
      with every other signal had a bug: we failed to clear
      the flag indicating that a synchronous signal was pending
      when we delivered it. This meant that we would take the signal
      again and again every time the guest made a syscall.
      (This is a bug introduced in my refactoring of Timothy Baldwin's
      original code.)
      
      Fix this by passing in the struct emulated_sigtable* to
      handle_pending_signal(), so that we clear the pending flag
      in the ts->sync_signal struct when handling a synchronous signal.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      31efaef1
    • P
      linux-user: Correct type for LOOP_GET_STATUS{,64} ioctls · f2c2fb50
      Peter Maydell 提交于
      The LOOP_GET_STATUS and LOOP_GET_STATUS64 ioctls were incorrectly
      defined as IOC_W rather than IOC_R, which meant we weren't
      correctly copying the information back from the kernel to the guest.
      The loop_info64 structure definition was also missing a member
      and using the wrong type for several 32-bit fields.
      
      In particular, this meant that "kpartx -d image.img" didn't work
      and "losetup -a" behaved strangely. Correct the ioctl type definitions.
      Reported-by: NChanho Park <chanho61.park@samsung.com>
      Reviewed-by: NLaurent Vivier <laurent@vivier.eu>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      f2c2fb50
    • P
      linux-user: Correct type for BLKSSZGET · a4a2c51f
      Peter Maydell 提交于
      The BLKSSZGET ioctl takes an argument which is a pointer to an int.
      We were incorrectly declaring it to take a pointer to a long, which
      meant that we would incorrectly write to memory which we should not
      if the guest is a 64-bit architecture.
      
      In particular, kpartx uses this ioctl to write to an int on the
      stack, which tends to result in it crashing immediately.
      Reported-by: NChanho Park <chanho61.park@samsung.com>
      Reviewed-by: NLaurent Vivier <laurent@vivier.eu>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      a4a2c51f
    • P
      linux-user: Add loop control ioctls · 884cdc48
      Peter Maydell 提交于
      Add support for the /dev/loop-control ioctls:
       LOOP_CTL_ADD
       LOOP_CTL_REMOVE
       LOOP_CTL_GET_FREE
      
      [RV: fixed to apply to new header guards]
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NLaurent Vivier <laurent@vivier.eu>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      884cdc48
    • P
      linux-user: Check sigsetsize argument to syscalls · c815701e
      Peter Maydell 提交于
      Many syscalls which take a sigset_t argument also take an argument
      giving the size of the sigset_t.  The kernel insists that this
      matches its idea of the type size and fails EINVAL if it is not.
      Implement this logic in QEMU.  (This mostly just means some LTP test
      cases which check error cases now pass.)
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      Reviewed-by: NLaurent Vivier <laurent@vivier.eu>
      c815701e
    • L
      linux-user: add nested netlink types · c5dff280
      Laurent Vivier 提交于
      Nested types are used by the kernel to send link information and
      protocol properties.
      
      We can see following errors with "ip link show":
      
      Unimplemented nested type 26
      Unimplemented nested type 26
      Unimplemented nested type 18
      Unimplemented nested type 26
      Unimplemented nested type 18
      Unimplemented nested type 26
      
      This patch implements nested types 18 (IFLA_LINKINFO) and
      26 (IFLA_AF_SPEC).
      Signed-off-by: NLaurent Vivier <laurent@vivier.eu>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      c5dff280
    • L
      linux-user: convert sockaddr_ll from host to target · a82ea939
      Laurent Vivier 提交于
      As we convert sockaddr for AF_PACKET family for sendto() (target to
      host) we need also to convert this for getsockname() (host to target).
      
      arping uses getsockname() to get the the interface address and uses
      this address with sendto().
      
      Tested with:
      
          /sbin/arping -D -q -c2 -I eno1 192.168.122.88
      
      ...
      getsockname(3, {sa_family=AF_PACKET, proto=0x806, if2,
      pkttype=PACKET_HOST, addr(6)={1, 10c37b6b9a76}, [18]) = 0
      ...
      sendto(3, "..." 28, 0,
             {sa_family=AF_PACKET, proto=0x806, if2, pkttype=PACKET_HOST,
             addr(6)={1, ffffffffffff}, 20) = 28
      ...
      Signed-off-by: NLaurent Vivier <laurent@vivier.eu>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      a82ea939
    • L
      linux-user: add fd_trans helper in do_recvfrom() · c35e1f9c
      Laurent Vivier 提交于
      Fix passwd using netlink audit.
      Signed-off-by: NLaurent Vivier <laurent@vivier.eu>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      c35e1f9c
    • L
      linux-user: fix netlink memory corruption · 7d61d892
      Laurent Vivier 提交于
      Netlink is byte-swapping data in the guest memory (it's bad).
      
      It's ok when the data come from the host as they are generated by the
      host.
      
      But it doesn't work when data come from the guest: the guest can
      try to reuse these data whereas they have been byte-swapped.
      
      This is what happens in glibc:
      
      glibc generates a sequence number in nlh.nlmsg_seq and calls
      sendto() with this nlh. In sendto(), we byte-swap nlmsg.seq.
      
      Later, after the recvmsg(), glibc compares nlh.nlmsg_seq with
      sequence number given in return, and of course it fails (hangs),
      because nlh.nlmsg_seq is not valid anymore.
      
      The involved code in glibc is:
      
      sysdeps/unix/sysv/linux/check_pf.c:make_request()
      ...
        req.nlh.nlmsg_seq = time (NULL);
      ...
        if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0,
                                          (struct sockaddr *) &nladdr,
                                          sizeof (nladdr))) < 0)
      <here req.nlh.nlmsg_seq has been byte-swapped>
      ...
        do
          {
      ...
            ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0));
      ...
            struct nlmsghdr *nlmh;
            for (nlmh = (struct nlmsghdr *) buf;
                 NLMSG_OK (nlmh, (size_t) read_len);
                 nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len))
              {
      <we compare nlmh->nlmsg_seq with corrupted req.nlh.nlmsg_seq>
                if (nladdr.nl_pid != 0 || (pid_t) nlmh->nlmsg_pid != pid
                    || nlmh->nlmsg_seq != req.nlh.nlmsg_seq)
                  continue;
      ...
                else if (nlmh->nlmsg_type == NLMSG_DONE)
                  /* We found the end, leave the loop.  */
                  done = true;
              }
          }
        while (! done);
      
      As we have a continue on "nlmh->nlmsg_seq != req.nlh.nlmsg_seq",
      "done" cannot be set to "true" and we have an infinite loop.
      
      It's why commands like "apt-get update" or "dnf update hangs".
      Signed-off-by: NLaurent Vivier <laurent@vivier.eu>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      7d61d892
    • L
      linux-user: fd_trans_*_data() returns the length · ef759f6f
      Laurent Vivier 提交于
      fd_trans_target_to_host_data() and fd_trans_host_to_target_data() must
      return the length of processed data.
      Signed-off-by: NLaurent Vivier <laurent@vivier.eu>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      ef759f6f
    • P
      Merge remote-tracking branch 'remotes/jasowang/tags/net-pull-request' into staging · d25321f2
      Peter Maydell 提交于
      # gpg: Signature made Tue 19 Jul 2016 03:33:40 BST
      # gpg:                using RSA key 0xEF04965B398D6211
      # gpg: Good signature from "Jason Wang (Jason Wang on RedHat) <jasowang@redhat.com>"
      # 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: 215D 46F4 8246 689E C77F  3562 EF04 965B 398D 6211
      
      * remotes/jasowang/tags/net-pull-request:
        e1000e: fix building without CONFIG_VMXNET3_PCI
        MAINTAINERS: release Scott from being a rocker maintainer
        tap: fix memory leak on failure to create a multiqueue tap device
        net: fix incorrect argument to iov_to_buf
        net: fix incorrect access to pointer
        e1000e: fix incorrect access to pointer
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      d25321f2
    • P
      Merge remote-tracking branch 'remotes/jnsnow/tags/ide-pull-request' into staging · ad31cd4c
      Peter Maydell 提交于
      # gpg: Signature made Mon 18 Jul 2016 23:53:15 BST
      # gpg:                using RSA key 0x7DEF8106AAFC390E
      # 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/ide-pull-request:
        block: ignore flush requests when storage is clean
        tests: in IDE and AHCI tests perform DMA write before flushing
        ide: set retry_unit for PIO and FLUSH requests
        ide: refactor retry_unit set and clear into separate function
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      ad31cd4c
    • P
      Merge remote-tracking branch 'remotes/stefanha/tags/tracing-pull-request' into staging · 0c1b58f2
      Peter Maydell 提交于
      # gpg: Signature made Mon 18 Jul 2016 22:59:55 BST
      # gpg:                using RSA key 0x9CA4ABB381AB73C8
      # 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/tracing-pull-request:
        trace: Add QAPI/QMP interfaces to query and control per-vCPU tracing state
        trace: Allow event name pattern in "info trace-events"
        trace: Conditionally trace events based on their per-vCPU state
        trace: Add per-vCPU tracing states for events with the 'vcpu' property
        trace: Cosmetic changes on fast-path tracing
        disas: Remove unused macro '_'
        trace: Identify events with the 'vcpu' property
        trace: [bsd-user] Commandline arguments to control tracing
        trace: [linux-user] Commandline arguments to control tracing
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      0c1b58f2
    • P
      Merge remote-tracking branch 'remotes/awilliam/tags/vfio-update-20160718.0' into staging · 08b558f0
      Peter Maydell 提交于
      VFIO update 2016-07-18
      
      One fix for 2.7-rc0 which hides the ARI extended capability, fixing
      multifunction support in PCIe configurations where the assigned device
      function topology does not match the host (Alex Williamson)
      
      # gpg: Signature made Mon 18 Jul 2016 18:02:27 BST
      # gpg:                using RSA key 0x239B9B6E3BB08B22
      # gpg: Good signature from "Alex Williamson <alex.williamson@redhat.com>"
      # gpg:                 aka "Alex Williamson <alex@shazbot.org>"
      # gpg:                 aka "Alex Williamson <alwillia@redhat.com>"
      # gpg:                 aka "Alex Williamson <alex.l.williamson@gmail.com>"
      # Primary key fingerprint: 42F6 C04E 540B D1A9 9E7B  8A90 239B 9B6E 3BB0 8B22
      
      * remotes/awilliam/tags/vfio-update-20160718.0:
        vfio/pci: Hide ARI capability
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      08b558f0
    • M
    • S
      target-i386: Remove redundant HF_SOFTMMU_MASK · da6d48e3
      Sergey Fedorov 提交于
      'HF_SOFTMMU_MASK' is only set when 'CONFIG_SOFTMMU' is defined. So
      there's no need in this flag: test 'CONFIG_SOFTMMU' instead.
      Suggested-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NSergey Fedorov <serge.fdrv@gmail.com>
      Signed-off-by: NSergey Fedorov <sergey.fedorov@linaro.org>
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Message-Id: <20160715175852.30749-6-sergey.fedorov@linaro.org>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      da6d48e3
    • P
      block/iscsi: allow caching of the allocation map · e1123a3b
      Peter Lieven 提交于
      until now the allocation map was used only as a hint if a cluster
      is allocated or not. If a block was not allocated (or Qemu had
      no info about the allocation status) a get_block_status call was
      issued to check the allocation status and possibly avoid
      a subsequent read of unallocated sectors. If a block known to be
      allocated the get_block_status call was omitted. In the other case
      a get_block_status call was issued before every read to avoid
      the necessity for a consistent allocation map. To avoid the
      potential overhead of calling get_block_status for each and
      every read request this took only place for the bigger requests.
      
      This patch enhances this mechanism to cache the allocation
      status and avoid calling get_block_status for blocks where
      the allocation status has been queried before. This allows
      for bypassing the read request even for smaller requests and
      additionally omits calling get_block_status for known to be
      unallocated blocks.
      Signed-off-by: NPeter Lieven <pl@kamp.de>
      Message-Id: <1468831940-15556-3-git-send-email-pl@kamp.de>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      e1123a3b
    • P
      block/iscsi: fix rounding in iscsi_allocationmap_set · eb36b953
      Peter Lieven 提交于
      when setting clusters as alloacted the boundaries have
      to be expanded. As Paolo pointed out the calculation of
      the number of clusters is wrong:
      
      Suppose cluster_sectors is 2, sector_num = 1, nb_sectors = 6:
      
      In the "mark allocated" case, you want to set 0..8, i.e.
      cluster_num=0, nb_clusters=4.
      
         0--.--2--.--4--.--6--.--8
         <--|_________________|-->  (<--> = expanded)
      
      Instead you are setting nb_clusters=3, so that 6..8 is not marked.
      
         0--.--2--.--4--.--6--.--8
         <--|______________|!!!     (! = wrong)
      
      Cc: qemu-stable@nongnu.org
      Reported-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NPeter Lieven <pl@kamp.de>
      Message-Id: <1468831940-15556-2-git-send-email-pl@kamp.de>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      eb36b953
    • P
      Move README to markdown · e5dfc5e8
      Pranith Kumar 提交于
      Move the README file to markdown so that it makes the github page look
      prettier. I know that github repo is a mirror and not the official
      repo, but I think it doesn't hurt to have it in markdown format.
      Signed-off-by: NPranith Kumar <bobby.prani@gmail.com>
      Message-Id: <20160715043111.29007-1-bobby.prani@gmail.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      e5dfc5e8
    • E
      block: ignore flush requests when storage is clean · 3ff2f67a
      Evgeny Yakovlev 提交于
      Some guests (win2008 server for example) do a lot of unnecessary
      flushing when underlying media has not changed. This adds additional
      overhead on host when calling fsync/fdatasync.
      
      This change introduces a write generation scheme in BlockDriverState.
      Current write generation is checked against last flushed generation to
      avoid unnessesary flushes.
      
      The problem with excessive flushing was found by a performance test
      which does parallel directory tree creation (from 2 processes).
      Results improved from 0.424 loops/sec to 0.432 loops/sec.
      Each loop creates 10^3 directories with 10 files in each.
      
      This affected some blkdebug testcases that were expecting error logs from
      failure-injected flushes which are now skipped entirely
      (tests 026 071 089).
      
      This also affects the performance of block jobs and thus BLOCK_JOB_READY
      events for driver-mirror and active block-commit commands now arrives
      faster, before QMP send successfully returns to caller (tests 141 144).
      Signed-off-by: NEvgeny Yakovlev <eyakovlev@virtuozzo.com>
      Signed-off-by: NDenis V. Lunev <den@openvz.org>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-id: 1468870792-7411-5-git-send-email-den@openvz.org
      CC: Kevin Wolf <kwolf@redhat.com>
      CC: Max Reitz <mreitz@redhat.com>
      CC: Stefan Hajnoczi <stefanha@redhat.com>
      CC: Fam Zheng <famz@redhat.com>
      CC: John Snow <jsnow@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      3ff2f67a
    • E
      tests: in IDE and AHCI tests perform DMA write before flushing · 2dd7e10d
      Evgeny Yakovlev 提交于
      Due to changes in flush behaviour clean disks stopped generating
      flush_to_disk events and IDE and AHCI tests that test flush commands
      started to fail.
      
      This change adds additional DMA writes to affected tests before sending
      flush commands so that bdrv_flush actually generates flush_to_disk event.
      Signed-off-by: NEvgeny Yakovlev <eyakovlev@virtuozzo.com>
      Signed-off-by: NDenis V. Lunev <den@openvz.org>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-id: 1468870792-7411-4-git-send-email-den@openvz.org
      CC: Kevin Wolf <kwolf@redhat.com>
      CC: Max Reitz <mreitz@redhat.com>
      CC: Stefan Hajnoczi <stefanha@redhat.com>
      CC: Fam Zheng <famz@redhat.com>
      CC: John Snow <jsnow@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      2dd7e10d
    • E
      ide: set retry_unit for PIO and FLUSH requests · 35f78ab4
      Evgeny Yakovlev 提交于
      The following sequence of tests discovered a problem in IDE emulation:
      1. Send DMA write to IDE device 0
      2. Send CMD_FLUSH_CACHE to same IDE device which will be failed by block
      layer using blkdebug script in tests/ide-test:test_retry_flush
      
      When doing DMA request ide/core.c will set s->retry_unit to s->unit in
      ide_start_dma. When dma completes ide_set_inactive sets retry_unit to -1.
      After that ide_flush_cache runs and fails thanks to blkdebug.
      ide_flush_cb calls ide_handle_rw_error which asserts that s->retry_unit
      == s->unit. But s->retry_unit is still -1 after previous DMA completion
      and flush does not use anything related to retry.
      
      This patch restricts retry unit assertion only to ops that actually use
      retry logic.
      Signed-off-by: NEvgeny Yakovlev <eyakovlev@virtuozzo.com>
      Signed-off-by: NDenis V. Lunev <den@openvz.org>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-id: 1468870792-7411-3-git-send-email-den@openvz.org
      CC: Kevin Wolf <kwolf@redhat.com>
      CC: Max Reitz <mreitz@redhat.com>
      CC: Stefan Hajnoczi <stefanha@redhat.com>
      CC: Fam Zheng <famz@redhat.com>
      CC: John Snow <jsnow@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      35f78ab4