1. 21 11月, 2017 15 次提交
    • A
      block: Close a BlockDriverState completely even when bs->drv is NULL · 50a3efb0
      Alberto Garcia 提交于
      bdrv_close() skips much of its logic when bs->drv is NULL. This is
      fine when we're closing a BlockDriverState that has just been created
      (because e.g the initialization process failed), but it's not enough
      in other cases.
      
      For example, when a valid qcow2 image is found to be corrupted then
      QEMU marks it as such in the file header and then sets bs->drv to
      NULL in order to make the BlockDriverState unusable. When that BDS is
      later closed then many of its data structures are not freed (leaking
      their memory) and none of its children are detached. This results in
      bdrv_close_all() failing to close all BDSs and making this assertion
      fail when QEMU is being shut down:
      
         bdrv_close_all: Assertion `QTAILQ_EMPTY(&all_bdrv_states)' failed.
      
      This patch makes bdrv_close() do the full uninitialization process
      in all cases. This fixes the problem with corrupted images and still
      works fine with freshly created BDSs.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Message-id: 20171106145345.12038-1-berto@igalia.com
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      50a3efb0
    • K
      block: Error out on load_vm with active dirty bitmaps · 70a5afed
      Kevin Wolf 提交于
      Loading a snapshot invalidates the bitmap. Just marking all blocks dirty
      is not a useful response in practice, instead the user needs to be aware
      that we switch to a completely different state. If they are okay with
      losing the dirty bitmap, they can just explicitly delete it.
      
      This effectively reverts commit 04dec3c3.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NDenis V. Lunev <den@openvz.org>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      70a5afed
    • K
    • K
      0b62bcbc
    • K
      block: Don't request I/O permission with BDRV_O_NO_IO · 1f4ad7d3
      Kevin Wolf 提交于
      'qemu-img info' makes sense even when BLK_PERM_CONSISTENT_READ cannot be
      granted because of a block job in a running qemu process. It already
      sets BDRV_O_NO_IO to indicate that it doesn't access the guest visible
      data at all.
      
      Check the BDRV_O_NO_IO flags in blk_new_open(), so that I/O related
      permissions are not unnecessarily requested and 'qemu-img info' can work
      even if BLK_PERM_CONSISTENT_READ cannot be granted.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NFam Zheng <famz@redhat.com>
      Reviewed-by: NAlberto Garcia <berto@igalia.com>
      1f4ad7d3
    • K
      block: Don't use BLK_PERM_CONSISTENT_READ for format probing · dacaa162
      Kevin Wolf 提交于
      For format probing, we don't really care whether all of the image
      content is consistent. The only thing we're looking at is the image
      header, and specifically the magic numbers that are expected to never
      change, no matter how inconsistent the guest visible disk content is.
      
      Therefore, don't request BLK_PERM_CONSISTENT_READ. This allows to use
      format probing, e.g. in the context of 'qemu-img info', even while the
      guest visible data in the image is inconsistent during a running block
      job.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NFam Zheng <famz@redhat.com>
      dacaa162
    • M
      scripts/make-release: ship u-boot source as a tarball · d0dead3b
      Michael Roth 提交于
      The u-boot sources we ship currently cause problems with unpacking on
      a case-insensitive filesystem due to path conflicts. This has been
      fixed in upstream u-boot via commit 610eec7f, but since it is not
      yet included in an official release we implement this approach as a
      temporary workaround.
      
      Once we move to a u-boot containing commit 610eec7f we should revert
      this patch.
      
      Cc: qemu-stable@nongnu.org
      Cc: Alexander Graf <agraf@suse.de>
      Cc: Richard Henderson <richard.henderson@linaro.org>
      Cc: Thomas Huth <thuth@redhat.com>
      Cc: Peter Maydell <peter.maydell@linaro.org>
      Suggested-by: NRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      Message-id: 20171107205201.10207-1-mdroth@linux.vnet.ibm.com
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      d0dead3b
    • P
      accel/tcg: Handle atomic accesses to notdirty memory correctly · 34d49937
      Peter Maydell 提交于
      To do a write to memory that is marked as notdirty, we need
      to invalidate any TBs we have cached for that memory, and
      update the cpu physical memory dirty flags for VGA and migration.
      The slowpath code in notdirty_mem_write() does all this correctly,
      but the new atomic handling code in atomic_mmu_lookup() doesn't
      do anything at all, it just clears the dirty bit in the TLB.
      
      The effect of this bug is that if the first write to a notdirty
      page for which we have cached TBs is by a guest atomic access,
      we fail to invalidate the TBs and subsequently will execute
      incorrect code. This can be seen by trying to run 'javac' on AArch64.
      
      Use the new notdirty_call_before() and notdirty_call_after()
      functions to correctly handle the update to notdirty memory
      in the atomic codepath.
      
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Message-id: 1511201308-23580-3-git-send-email-peter.maydell@linaro.org
      34d49937
    • P
      exec.c: Factor out before/after actions for notdirty memory writes · 27266271
      Peter Maydell 提交于
      The function notdirty_mem_write() has a sequence of actions
      it has to do before and after the actual business of writing
      data to host RAM to ensure that dirty flags are correctly
      updated and we flush any TCG translations for the region.
      We need to do this also in other places that write directly
      to host RAM, most notably the TCG atomic helper functions.
      Pull out the before and after pieces into their own functions.
      
      We use an API where the prepare function stashes the various
      bits of information about the write into a struct for the
      complete function to use, because in the calls for the atomic
      helpers the place where the complete function will be called
      doesn't have the information to hand.
      
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-id: 1511201308-23580-2-git-send-email-peter.maydell@linaro.org
      27266271
    • P
      Merge remote-tracking branch 'remotes/mdroth/tags/qga-pull-2017-11-20-tag' into staging · a61d3439
      Peter Maydell 提交于
      qemu-ga patch queue for 2.11
      
      * fix potential overflow in network interface stats reporting
      
      # gpg: Signature made Mon 20 Nov 2017 20:56:05 GMT
      # gpg:                using RSA key 0x3353C9CEF108B584
      # gpg: Good signature from "Michael Roth <flukshun@gmail.com>"
      # gpg:                 aka "Michael Roth <mdroth@utexas.edu>"
      # gpg:                 aka "Michael Roth <mdroth@linux.vnet.ibm.com>"
      # Primary key fingerprint: CEAC C9E1 5534 EBAB B82D  3FA0 3353 C9CE F108 B584
      
      * remotes/mdroth/tags/qga-pull-2017-11-20-tag:
        qga: replace GetIfEntry with GetIfEntry2 for interface stats
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      a61d3439
    • P
      Merge remote-tracking branch 'remotes/riku/tags/pull-linux-user-20171120' into staging · 1b4e6e8c
      Peter Maydell 提交于
      late linux-user fixes for Qemu 2.11
      
      # gpg: Signature made Mon 20 Nov 2017 21:19:00 GMT
      # gpg:                using RSA key 0xB44890DEDE3C9BC0
      # gpg: Good signature from "Riku Voipio <riku.voipio@iki.fi>"
      # gpg:                 aka "Riku Voipio <riku.voipio@linaro.org>"
      # Primary key fingerprint: FF82 03C8 C391 98AE 0581  41EF B448 90DE DE3C 9BC0
      
      * remotes/riku/tags/pull-linux-user-20171120:
        linux-user: Fix calculation of auxv length
        linux-user: Handle rt_sigaction correctly for SPARC
        linux-user/sparc: Put address for data faults where linux-user expects it
        linux-user/ppc: Report correct fault address for data faults
        linux-user/s390x: Mask si_addr for SIGSEGV
        linux-user: return EINVAL from prctl(PR_*_SECCOMP)
        linux-user: fix 'finshed' typo in comment
        linux-user/syscall.c: Handle SH4's exceptional alignment for p{read, write}64
        linux-user: Handle TARGET_MAP_STACK and TARGET_MAP_HUGETLB
        linux-user/hppa: Fix TARGET_F_RDLCK, TARGET_F_WRLCK, TARGET_F_UNLCK
        linux-user/hppa: Fix TARGET_MAP_TYPE
        linux-user/hppa: Fix typo for TARGET_NR_epoll_wait
        linux-user/hppa: Fix cpu_clone_regs
        linux-user/hppa: Fix TARGET_SA_* defines
        linux-user: Restrict usage of sa_restorer
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      1b4e6e8c
    • P
      Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20171120' into staging · 5f49d73c
      Peter Maydell 提交于
      target-arm queue:
       * hw/arm: Silence xlnx-ep108 deprecation warning during tests
       * hw/arm/aspeed: Unlock SCU when running kernel
       * arm: check regime, not current state, for ATS write PAR format
       * nvic: Fix ARMv7M MPU_RBAR reads
       * target/arm: Report GICv3 sysregs present in ID registers if needed
      
      # gpg: Signature made Mon 20 Nov 2017 17:35:25 GMT
      # gpg:                using RSA key 0x3C2525ED14360CDE
      # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>"
      # gpg:                 aka "Peter Maydell <pmaydell@gmail.com>"
      # gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>"
      # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE
      
      * remotes/pmaydell/tags/pull-target-arm-20171120:
        hw/arm: Silence xlnx-ep108 deprecation warning during tests
        hw/arm/aspeed: Unlock SCU when running kernel
        arm: check regime, not current state, for ATS write PAR format
        nvic: Fix ARMv7M MPU_RBAR reads
        target/arm: Report GICv3 sysregs present in ID registers if needed
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      5f49d73c
    • Z
      qga: replace GetIfEntry with GetIfEntry2 for interface stats · df83eabd
      ZhiPeng Lu 提交于
      The data obtained by GetIfEntry is 32 bits, and it may overflow. Thus
      using GetIfEntry2 instead of GetIfEntry.
      Signed-off-by: NZhiPeng Lu <lu.zhipeng@zte.com.cn>
      *avoid CamelCase variable names
      *update field names for MIB_IFROW -> MIB_IF_ROW2
      *dynamically probe for GetIfIndex2 to deal with older OSs
      *check return value from get_interface_index
      Signed-off-by: NMichael Roth <mdroth@linux.vnet.ibm.com>
      df83eabd
    • P
      Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20171120-v1' into staging · 3da87f77
      Peter Maydell 提交于
      Fix storing cpu status (both kvm and tcg), locking around diag 308
      (tcg only) and a non-zero variable in the s390-ccw bios.
      
      # gpg: Signature made Mon 20 Nov 2017 15:18:05 GMT
      # gpg:                using RSA key 0xDECF6B93C6F02FAF
      # gpg: Good signature from "Cornelia Huck <conny@cornelia-huck.de>"
      # gpg:                 aka "Cornelia Huck <huckc@linux.vnet.ibm.com>"
      # gpg:                 aka "Cornelia Huck <cornelia.huck@de.ibm.com>"
      # gpg:                 aka "Cornelia Huck <cohuck@kernel.org>"
      # gpg:                 aka "Cornelia Huck <cohuck@redhat.com>"
      # Primary key fingerprint: C3D0 D66D C362 4FF6 A8C0  18CE DECF 6B93 C6F0 2FAF
      
      * remotes/cohuck/tags/s390x-20171120-v1:
        pc-bios/s390-ccw.img: update image
        pc-bios/s390-ccw: Fix problem with invalid virtio-scsi LUN when rebooting
        s390x/tcg: fix DIAG 308 with > 1 VCPU (MTTCG)
        s390x: fix storing CPU status (again)
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      3da87f77
    • P
      Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.11-20171120' into staging · b2996bb4
      Peter Maydell 提交于
      ppc patch queue 2017-11-20
      
      Here's the current queue of ppc patches.  These 2 patches are both
      more complex than I'd ideally like this late in the 2.11 cycle.
      However, they do fix important bugs, so I think it's worth it on
      balance.
      
      # gpg: Signature made Mon 20 Nov 2017 03:27:19 GMT
      # gpg:                using RSA key 0x6C38CACA20D9B392
      # gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>"
      # gpg:                 aka "David Gibson (Red Hat) <dgibson@redhat.com>"
      # gpg:                 aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>"
      # gpg:                 aka "David Gibson (kernel.org) <dwg@kernel.org>"
      # Primary key fingerprint: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392
      
      * remotes/dgibson/tags/ppc-for-2.11-20171120:
        spapr: reset DRCs after devices
        target/ppc: Update setting of cpu features to account for compat modes
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      b2996bb4
  2. 20 11月, 2017 20 次提交
  3. 18 11月, 2017 5 次提交
    • P
      Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging · 2e020834
      Peter Maydell 提交于
      Block layer patches for 2.11.0-rc2
      
      # gpg: Signature made Fri 17 Nov 2017 17:58:36 GMT
      # gpg:                using RSA key 0x7F09B272C88F2FD6
      # gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>"
      # Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6
      
      * remotes/kevin/tags/for-upstream: (25 commits)
        iotests: Make 087 pass without AIO enabled
        block: Make bdrv_next() keep strong references
        qcow2: Fix overly broad madvise()
        qcow2: Refuse to get unaligned offsets from cache
        qcow2: Add bounds check to get_refblock_offset()
        block: Guard against NULL bs->drv
        qcow2: Unaligned zero cluster in handle_alloc()
        qcow2: check_errors are fatal
        qcow2: reject unaligned offsets in write compressed
        iotests: Add test for failing qemu-img commit
        tests: Add check-qobject for equality tests
        iotests: Add test for non-string option reopening
        block: qobject_is_equal() in bdrv_reopen_prepare()
        qapi: Add qobject_is_equal()
        qapi/qlist: Add qlist_append_null() macro
        qapi/qnull: Add own header
        qcow2: fix image corruption on commit with persistent bitmap
        iotests: test clearing unknown autoclear_features by qcow2
        block: Fix permissions in image activation
        qcow2: fix image corruption after committing qcow2 image into base
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      2e020834
    • K
      Merge remote-tracking branch 'mreitz/tags/pull-block-2017-11-17' into queue-block · d5a49c6e
      Kevin Wolf 提交于
      Block patches for 2.11.0-rc2
      
      # gpg: Signature made Fri Nov 17 18:22:07 2017 CET
      # gpg:                using RSA key F407DB0061D5CF40
      # gpg: Good signature from "Max Reitz <mreitz@redhat.com>"
      # Primary key fingerprint: 91BE B60A 30DB 3E88 57D1  1829 F407 DB00 61D5 CF40
      
      * mreitz/tags/pull-block-2017-11-17:
        iotests: Make 087 pass without AIO enabled
        block: Make bdrv_next() keep strong references
        qcow2: Fix overly broad madvise()
        qcow2: Refuse to get unaligned offsets from cache
        qcow2: Add bounds check to get_refblock_offset()
        block: Guard against NULL bs->drv
        qcow2: Unaligned zero cluster in handle_alloc()
        qcow2: check_errors are fatal
        qcow2: reject unaligned offsets in write compressed
        iotests: Add test for failing qemu-img commit
        tests: Add check-qobject for equality tests
        iotests: Add test for non-string option reopening
        block: qobject_is_equal() in bdrv_reopen_prepare()
        qapi: Add qobject_is_equal()
        qapi/qlist: Add qlist_append_null() macro
        qapi/qnull: Add own header
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      d5a49c6e
    • M
      iotests: Make 087 pass without AIO enabled · c0012e9a
      Max Reitz 提交于
      If AIO has not been enabled in the qemu build that is to be tested, we
      should skip the "aio=native without O_DIRECT" test instead of failing.
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      Message-id: 20171115180732.31753-1-mreitz@redhat.com
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      c0012e9a
    • M
      block: Make bdrv_next() keep strong references · 5e003f17
      Max Reitz 提交于
      On one hand, it is a good idea for bdrv_next() to return a strong
      reference because ideally nearly every pointer should be refcounted.
      This fixes intermittent failure of iotest 194.
      
      On the other, it is absolutely necessary for bdrv_next() itself to keep
      a strong reference to both the BB (in its first phase) and the BDS (at
      least in the second phase) because when called the next time, it will
      dereference those objects to get a link to the next one.  Therefore, it
      needs these objects to stay around until then.  Just storing the pointer
      to the next in the iterator is not really viable because that pointer
      might become invalid as well.
      
      Both arguments taken together means we should probably just invoke
      bdrv_ref() and blk_ref() in bdrv_next().  This means we have to assert
      that bdrv_next() is always called from the main loop, but that was
      probably necessary already before this patch and judging from the
      callers, it also looks to actually be the case.
      
      Keeping these strong references means however that callers need to give
      them up if they decide to abort the iteration early.  They can do so
      through the new bdrv_next_cleanup() function.
      Suggested-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      Message-id: 20171110172545.32609-1-mreitz@redhat.com
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      5e003f17
    • M
      qcow2: Fix overly broad madvise() · 08546bcf
      Max Reitz 提交于
      @mem_size and @offset are both size_t, thus subtracting them from one
      another will just return a big size_t if mem_size < offset -- even more
      obvious here because the result is stored in another size_t.
      
      Checking that result to be positive is therefore not sufficient to
      exclude the case that offset > mem_size.  Thus, we currently sometimes
      issue an madvise() over a very large address range.
      
      This is triggered by iotest 163, but with -m64, this does not result in
      tangible problems.  But with -m32, this test produces three segfaults,
      all of which are fixed by this patch.
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      Message-id: 20171114184127.24238-1-mreitz@redhat.com
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NAlberto Garcia <berto@igalia.com>
      Reviewed-by: NDarren Kenny <darren.kenny@oracle.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      08546bcf