1. 16 9月, 2019 28 次提交
  2. 13 9月, 2019 12 次提交
    • P
      Merge remote-tracking branch 'remotes/amarkovic/tags/mips-queue-sep-12-2019' into staging · 138985c1
      Peter Maydell 提交于
      MIPS queue for September 12th, 2019
      
      # gpg: Signature made Thu 12 Sep 2019 17:26:10 BST
      # gpg:                using RSA key D4972A8967F75A65
      # gpg: Good signature from "Aleksandar Markovic <amarkovic@wavecomp.com>" [unknown]
      # gpg: WARNING: This key is not certified with a trusted signature!
      # gpg:          There is no indication that the signature belongs to the owner.
      # Primary key fingerprint: 8526 FBF1 5DA3 811F 4A01  DD75 D497 2A89 67F7 5A65
      
      * remotes/amarkovic/tags/mips-queue-sep-12-2019:
        target/mips: gdbstub: Revert commit 8e0b373f
        hw/mips/mips_jazz: Remove no-longer-necessary override of do_unassigned_access
        target/mips: Switch to do_transaction_failed() hook
        hw/mips/mips_jazz: Override do_transaction_failed hook
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      138985c1
    • P
      Merge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20190912a' into staging · 85182c96
      Peter Maydell 提交于
      Migration pull 2019-09-12
      
      New feature:
        UUID validation check from Yury Kotov
      
      plus a bunch of fixes.
      
      # gpg: Signature made Thu 12 Sep 2019 14:48:28 BST
      # gpg:                using RSA key 45F5C71B4A0CB7FB977A9FA90516331EBC5BFDE7
      # gpg: Good signature from "Dr. David Alan Gilbert (RH2) <dgilbert@redhat.com>" [full]
      # Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A  9FA9 0516 331E BC5B FDE7
      
      * remotes/dgilbert/tags/pull-migration-20190912a:
        migration: fix one typo in comment of function migration_total_bytes()
        migration/qemu-file: fix potential buf waste for extra buf_index adjustment
        migration/qemu-file: remove check on writev_buffer in qemu_put_compression_data
        migration: Fix postcopy bw for recovery
        tests/migration: Add a test for validate-uuid capability
        tests/libqtest: Allow setting expected exit status
        migration: Add validate-uuid capability
        qemu-file: Rework old qemu_fflush comment
        migration: register_savevm_live doesn't need dev
        hw/net/vmxnet3: Fix leftover unregister_savevm
        migration: cleanup check on ops in savevm.handlers iterations
        migration: multifd_send_thread always post p->sem_sync when error happen
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      85182c96
    • P
      Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging · 3d9442ee
      Peter Maydell 提交于
      Block layer patches:
      
      - qcow2: Allow overwriting multiple compressed clusters at once for
        better performance
      - nfs: add support for nfs_umount
      - file-posix: write_zeroes fixes
      - qemu-io, blockdev-create, pr-manager: Fix crashes and memory leaks
      - qcow2: Fix the calculation of the maximum L2 cache size
      - vpc: Fix return code for vpc_co_create()
      - blockjob: Code cleanup
      - iotests improvements (e.g. for use with valgrind)
      
      # gpg: Signature made Fri 13 Sep 2019 11:19:19 BST
      # gpg:                using RSA key 7F09B272C88F2FD6
      # gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
      # Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6
      
      * remotes/kevin/tags/for-upstream: (23 commits)
        qcow2: Stop overwriting compressed clusters one by one
        block/create: Do not abort if a block driver is not available
        qemu-io: Don't leak pattern file in error path
        iotests: extend sleeping time under Valgrind
        iotests: extended timeout under Valgrind
        iotests: Valgrind fails with nonexistent directory
        iotests: Add casenotrun report to bash tests
        iotests: exclude killed processes from running under Valgrind
        iotests: allow Valgrind checking all QEMU processes
        block/nfs: add support for nfs_umount
        block/nfs: tear down aio before nfs_close
        iotests: skip 232 when run tests as root
        iotests: Test blockdev-create for vpc
        iotests: Restrict nbd Python tests to nbd
        iotests: Restrict file Python tests to file
        iotests: Add supported protocols to execute_test()
        vpc: Return 0 from vpc_co_create() on success
        file-posix: Fix has_write_zeroes after NO_FALLBACK
        pr-manager: Fix invalid g_free() crash bug
        iotests: Test reverse sub-cluster qcow2 writes
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      3d9442ee
    • P
      Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging · cc9c8b82
      Peter Maydell 提交于
      Pull request
      
      # gpg: Signature made Wed 11 Sep 2019 15:36:02 BST
      # gpg:                using RSA key 8695A8BFD3F97CDAAC35775A9CA4ABB381AB73C8
      # gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>" [full]
      # gpg:                 aka "Stefan Hajnoczi <stefanha@gmail.com>" [full]
      # Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35  775A 9CA4 ABB3 81AB 73C8
      
      * remotes/stefanha/tags/block-pull-request:
        virtio-blk: Cancel the pending BH when the dataplane is reset
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      cc9c8b82
    • A
      qcow2: Stop overwriting compressed clusters one by one · bf3d78ae
      Alberto Garcia 提交于
      handle_alloc() tries to find as many contiguous clusters that need
      copy-on-write as possible in order to allocate all of them at the same
      time.
      
      However, compressed clusters are only overwritten one by one, so let's
      say that we have an image with 1024 consecutive compressed clusters:
      
         qemu-img create -f qcow2 hd.qcow2 64M
         for f in `seq 0 64 65472`; do
            qemu-io -c "write -c ${f}k 64k" hd.qcow2
         done
      
      In this case trying to overwrite the whole image with one large write
      request results in 1024 separate allocations:
      
         qemu-io -c "write 0 64M" hd.qcow2
      
      This restriction comes from commit 095a9c58 from 2008.
      Nowadays QEMU can overwrite multiple compressed clusters just fine,
      and in fact it already does: as long as the first cluster that
      handle_alloc() finds is not compressed, all other compressed clusters
      in the same batch will be overwritten in one go:
      
         qemu-img create -f qcow2 hd.qcow2 64M
         qemu-io -c "write -z 0 64k" hd.qcow2
         for f in `seq 64 64 65472`; do
            qemu-io -c "write -c ${f}k 64k" hd.qcow2
         done
      
      Compared to the previous one, overwriting this image on my computer
      goes from 8.35s down to 230ms.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Reviewed-by: John Snow <jsnow@redhat.com
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      bf3d78ae
    • P
      block/create: Do not abort if a block driver is not available · d90d5cae
      Philippe Mathieu-Daudé 提交于
      The 'blockdev-create' QMP command was introduced as experimental
      feature in commit b0292b85, using the assert() debug call.
      It got promoted to 'stable' command in 3fb588a0, but the
      assert call was not removed.
      
      Some block drivers are optional, and bdrv_find_format() might
      return a NULL value, triggering the assertion.
      
      Stable code is not expected to abort, so return an error instead.
      
      This is easily reproducible when libnfs is not installed:
      
        ./configure
        [...]
        module support    no
        Block whitelist (rw)
        Block whitelist (ro)
        libiscsi support  yes
        libnfs support    no
        [...]
      
      Start QEMU:
      
        $ qemu-system-x86_64 -S -qmp unix:/tmp/qemu.qmp,server,nowait
      
      Send the 'blockdev-create' with the 'nfs' driver:
      
        $ ( cat << 'EOF'
        {'execute': 'qmp_capabilities'}
        {'execute': 'blockdev-create', 'arguments': {'job-id': 'x', 'options': {'size': 0, 'driver': 'nfs', 'location': {'path': '/', 'server': {'host': '::1', 'type': 'inet'}}}}, 'id': 'x'}
        EOF
        ) | socat STDIO UNIX:/tmp/qemu.qmp
        {"QMP": {"version": {"qemu": {"micro": 50, "minor": 1, "major": 4}, "package": "v4.1.0-733-g89ea03a7"}, "capabilities": ["oob"]}}
        {"return": {}}
      
      QEMU crashes:
      
        $ gdb qemu-system-x86_64 core
        Program received signal SIGSEGV, Segmentation fault.
        (gdb) bt
        #0  0x00007ffff510957f in raise () at /lib64/libc.so.6
        #1  0x00007ffff50f3895 in abort () at /lib64/libc.so.6
        #2  0x00007ffff50f3769 in _nl_load_domain.cold.0 () at /lib64/libc.so.6
        #3  0x00007ffff5101a26 in .annobin_assert.c_end () at /lib64/libc.so.6
        #4  0x0000555555d7e1f1 in qmp_blockdev_create (job_id=0x555556baee40 "x", options=0x555557666610, errp=0x7fffffffc770) at block/create.c:69
        #5  0x0000555555c96b52 in qmp_marshal_blockdev_create (args=0x7fffdc003830, ret=0x7fffffffc7f8, errp=0x7fffffffc7f0) at qapi/qapi-commands-block-core.c:1314
        #6  0x0000555555deb0a0 in do_qmp_dispatch (cmds=0x55555645de70 <qmp_commands>, request=0x7fffdc005c70, allow_oob=false, errp=0x7fffffffc898) at qapi/qmp-dispatch.c:131
        #7  0x0000555555deb2a1 in qmp_dispatch (cmds=0x55555645de70 <qmp_commands>, request=0x7fffdc005c70, allow_oob=false) at qapi/qmp-dispatch.c:174
      
      With this patch applied, QEMU returns a QMP error:
      
        {'execute': 'blockdev-create', 'arguments': {'job-id': 'x', 'options': {'size': 0, 'driver': 'nfs', 'location': {'path': '/', 'server': {'host': '::1', 'type': 'inet'}}}}, 'id': 'x'}
        {"id": "x", "error": {"class": "GenericError", "desc": "Block driver 'nfs' not found or not supported"}}
      
      Cc: qemu-stable@nongnu.org
      Reported-by: NXu Tian <xutian@redhat.com>
      Signed-off-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      d90d5cae
    • K
      qemu-io: Don't leak pattern file in error path · c8e68b43
      Kevin Wolf 提交于
      qemu_io_alloc_from_file() needs to close the pattern file even if some
      error occurred.
      
      Setting f = NULL in the success path and checking it for NULL in the
      error path isn't strictly necessary at this point, but let's do it
      anyway in case someone later adds a 'goto error' after closing the file.
      
      Coverity: CID 1405303
      Fixes: 4d731510Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Reviewed-by: NStefano Garzarella <sgarzare@redhat.com>
      c8e68b43
    • A
      iotests: extend sleeping time under Valgrind · 4e08bee4
      Andrey Shinkevich 提交于
      To synchronize the time when QEMU is running longer under the Valgrind,
      increase the sleeping time in the test 247.
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      4e08bee4
    • A
      iotests: extended timeout under Valgrind · fbd1c378
      Andrey Shinkevich 提交于
      As the iotests run longer under the Valgrind, the QEMU_COMM_TIMEOUT is
      to be increased in the test cases 028, 183 and 192 when running under
      the Valgrind.
      Suggested-by: NRoman Kagan <rkagan@virtuozzo.com>
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Reviewed-by: NVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      fbd1c378
    • A
      iotests: Valgrind fails with nonexistent directory · ad20319a
      Andrey Shinkevich 提交于
      The Valgrind uses the exported variable TMPDIR and fails if the
      directory does not exist. Let us exclude such a test case from
      being run under the Valgrind and notify the user of it.
      Suggested-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      ad20319a
    • A
      iotests: Add casenotrun report to bash tests · 5ff1c2c8
      Andrey Shinkevich 提交于
      The new function _casenotrun() is to be invoked if a test case cannot
      be run for some reason. The user will be notified by a message passed
      to the function. It is the caller's responsibility to make skipped a
      particular test.
      Suggested-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Reviewed-by: NCleber Rosa <crosa@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      5ff1c2c8
    • A
      iotests: exclude killed processes from running under Valgrind · 8af224d6
      Andrey Shinkevich 提交于
       The Valgrind tool fails to manage its termination in multi-threaded
       processes when they raise the signal SIGKILL. The bug has been reported
       to the Valgrind maintainers and was registered as the bug #409141:
       https://bugs.kde.org/show_bug.cgi?id=409141
       Let's exclude such test cases from running under the Valgrind until a
       new version with the bug fix is released because checking for the
       memory issues is covered by other test cases.
      Suggested-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NAndrey Shinkevich <andrey.shinkevich@virtuozzo.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      8af224d6