1. 06 2月, 2020 12 次提交
    • A
      qcow2: Tighten cluster_offset alignment assertions · 344ffea9
      Alberto Garcia 提交于
      qcow2_alloc_cluster_offset() and qcow2_get_cluster_offset() always
      return offsets that are cluster-aligned so don't just check that they
      are sector-aligned.
      
      The check in qcow2_co_preadv_task() is also replaced by an assertion
      for the same reason.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Message-id: 558ba339965f858bede4c73ce3f50f0c0493597d.1579374329.git.berto@igalia.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      344ffea9
    • A
      qcow2: Don't round the L1 table allocation up to the sector size · ef97d608
      Alberto Garcia 提交于
      The L1 table is read from disk using the byte-based bdrv_pread() and
      is never accessed beyond its last element, so there's no need to
      allocate more memory than that.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Message-id: b2e27214ec7b03a585931bcf383ee1ac3a641a10.1579374329.git.berto@igalia.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      ef97d608
    • T
      iotests: Enable more tests in the 'auto' group to improve test coverage · ce95a15e
      Thomas Huth 提交于
      According to Kevin, tests 030, 040 and 041 are among the most valuable
      tests that we have, so we should always run them if possible, even if
      they take a little bit longer.
      
      According to Max, it would be good to have a test for iothreads and
      migration. 127 and 256 seem to be good candidates for iothreads. For
      migration, let's enable 181 and 203 (which also tests iothreads).
      (091 would be a good candidate for migration, too, but Alex Bennée
      reported that this test fails on ZFS file systems, so it can't be
      included yet)
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Message-id: 20200121095205.26323-7-thuth@redhat.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      ce95a15e
    • T
      iotests: Skip Python-based tests if QEMU does not support virtio-blk · cd205828
      Thomas Huth 提交于
      We are going to enable some of the python-based tests in the "auto" group,
      and these tests require virtio-blk to work properly. Running iotests
      without virtio-blk likely does not make too much sense anyway, so instead
      of adding a check for the availability of virtio-blk to each and every
      test (which does not sound very appealing), let's rather add a check for
      this a central spot in the "check" script instead (so that it is still
      possible to run "make check" for qemu-system-tricore for example).
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Message-id: 20200121095205.26323-6-thuth@redhat.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      cd205828
    • T
      iotests: Check for the availability of the required devices in 267 and 127 · 9bdabfbe
      Thomas Huth 提交于
      We are going to enable 127 in the "auto" group, but it only works if
      virtio-scsi and scsi-hd are available - which is not the case with
      QEMU binaries like qemu-system-tricore for example, so we need a
      proper check for the availability of these devices here.
      
      A very similar problem exists in iotest 267 - it has been added to
      the "auto" group already, but requires virtio-blk and thus currently
      fails with qemu-system-tricore for example. Let's also add aproper
      check there.
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Message-id: 20200121095205.26323-5-thuth@redhat.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      9bdabfbe
    • T
      iotests: Test 183 does not work on macOS and OpenBSD · 30ad36f5
      Thomas Huth 提交于
      In the long run, we might want to add test 183 to the "auto" group
      (but it still fails occasionally, so we cannot do that yet). However,
      when running 183 in Cirrus-CI on macOS, or with our vm-build-openbsd
      target, it currently always fails with an "Timeout waiting for return
      on handle 0" error.
      
      Let's mark it as supported only on systems where the test is working
      most of the time (i.e. Linux, FreeBSD and NetBSD).
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Message-id: 20200121095205.26323-4-thuth@redhat.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      30ad36f5
    • T
      iotests: Test 041 only works on certain systems · 877d18f2
      Thomas Huth 提交于
      041 works fine on Linux, FreeBSD, NetBSD and OpenBSD, but fails on macOS.
      Let's mark it as only supported on the systems where we know that it is
      working fine.
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Message-id: 20200121095205.26323-3-thuth@redhat.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      877d18f2
    • J
      iotests: remove 'linux' from default supported platforms · 72b29030
      John Snow 提交于
      verify_platform will check an explicit whitelist and blacklist instead.
      The default will now be assumed to be allowed to run anywhere.
      
      For tests that do not specify their platforms explicitly, this has the effect of
      enabling these tests on non-linux platforms. For tests that always specified
      linux explicitly, there is no change.
      
      For Python tests on FreeBSD at least; only seven python tests fail:
      045 147 149 169 194 199 211
      
      045 and 149 appear to be misconfigurations,
      147 and 194 are the AF_UNIX path too long error,
      169 and 199 are bitmap migration bugs, and
      211 is a bug that shows up on Linux platforms, too.
      
      This is at least good evidence that these tests are not Linux-only. If
      they aren't suitable for other platforms, they should be disabled on a
      per-platform basis as appropriate.
      
      Therefore, let's switch these on and deal with the failures.
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NJohn Snow <jsnow@redhat.com>
      Message-id: 20200121095205.26323-2-thuth@redhat.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      72b29030
    • A
      qcow2: Use a GString in report_unsupported_feature() · 7cdca2e2
      Alberto Garcia 提交于
      This is a bit more efficient than having to allocate and free memory
      for each item.
      
      The default size (60) is enough for all the existing incompatible
      features or the "Unknown incompatible feature" message.
      Suggested-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Message-id: 20200115135626.19442-1-berto@igalia.com
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: NStefano Garzarella <sgarzare@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      7cdca2e2
    • P
      block: fix memleaks in bdrv_refresh_filename · cb895614
      Pan Nengyuan 提交于
      If we call the qmp 'query-block' while qemu is working on
      'block-commit', it will cause memleaks, the memory leak stack is as
      follow:
      
      Indirect leak of 12360 byte(s) in 3 object(s) allocated from:
          #0 0x7f80f0b6d970 in __interceptor_calloc (/lib64/libasan.so.5+0xef970)
          #1 0x7f80ee86049d in g_malloc0 (/lib64/libglib-2.0.so.0+0x5249d)
          #2 0x55ea95b5bb67 in qdict_new /mnt/sdb/qemu-4.2.0-rc0/qobject/qdict.c:29
          #3 0x55ea956cd043 in bdrv_refresh_filename /mnt/sdb/qemu-4.2.0-rc0/block.c:6427
          #4 0x55ea956cc950 in bdrv_refresh_filename /mnt/sdb/qemu-4.2.0-rc0/block.c:6399
          #5 0x55ea956cc950 in bdrv_refresh_filename /mnt/sdb/qemu-4.2.0-rc0/block.c:6399
          #6 0x55ea956cc950 in bdrv_refresh_filename /mnt/sdb/qemu-4.2.0-rc0/block.c:6399
          #7 0x55ea958818ea in bdrv_block_device_info /mnt/sdb/qemu-4.2.0-rc0/block/qapi.c:56
          #8 0x55ea958879de in bdrv_query_info /mnt/sdb/qemu-4.2.0-rc0/block/qapi.c:392
          #9 0x55ea9588b58f in qmp_query_block /mnt/sdb/qemu-4.2.0-rc0/block/qapi.c:578
          #10 0x55ea95567392 in qmp_marshal_query_block qapi/qapi-commands-block-core.c:95
      
      Indirect leak of 4120 byte(s) in 1 object(s) allocated from:
          #0 0x7f80f0b6d970 in __interceptor_calloc (/lib64/libasan.so.5+0xef970)
          #1 0x7f80ee86049d in g_malloc0 (/lib64/libglib-2.0.so.0+0x5249d)
          #2 0x55ea95b5bb67 in qdict_new /mnt/sdb/qemu-4.2.0-rc0/qobject/qdict.c:29
          #3 0x55ea956cd043 in bdrv_refresh_filename /mnt/sdb/qemu-4.2.0-rc0/block.c:6427
          #4 0x55ea956cc950 in bdrv_refresh_filename /mnt/sdb/qemu-4.2.0-rc0/block.c:6399
          #5 0x55ea956cc950 in bdrv_refresh_filename /mnt/sdb/qemu-4.2.0-rc0/block.c:6399
          #6 0x55ea9569f301 in bdrv_backing_attach /mnt/sdb/qemu-4.2.0-rc0/block.c:1064
          #7 0x55ea956a99dd in bdrv_replace_child_noperm /mnt/sdb/qemu-4.2.0-rc0/block.c:2283
          #8 0x55ea956b9b53 in bdrv_replace_node /mnt/sdb/qemu-4.2.0-rc0/block.c:4196
          #9 0x55ea956b9e49 in bdrv_append /mnt/sdb/qemu-4.2.0-rc0/block.c:4236
          #10 0x55ea958c3472 in commit_start /mnt/sdb/qemu-4.2.0-rc0/block/commit.c:306
          #11 0x55ea94b68ab0 in qmp_block_commit /mnt/sdb/qemu-4.2.0-rc0/blockdev.c:3459
          #12 0x55ea9556a7a7 in qmp_marshal_block_commit qapi/qapi-commands-block-core.c:407
      
      Fixes: bb808d5fReported-by: NEuler Robot <euler.robot@huawei.com>
      Signed-off-by: NPan Nengyuan <pannengyuan@huawei.com>
      Message-id: 20200116085600.24056-1-pannengyuan@huawei.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      cb895614
    • A
      block: Use a GString in bdrv_perm_names() · e2a7423a
      Alberto Garcia 提交于
      This is a bit more efficient than having to allocate and free memory
      for each new permission.
      
      The default size (30) is enough for "consistent read, write, resize".
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Message-id: 20200110171518.22168-1-berto@igalia.com
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      e2a7423a
    • A
      qcow2: Assert that host cluster offsets fit in L2 table entries · 3a75a870
      Alberto Garcia 提交于
      The standard cluster descriptor in L2 table entries has a field to
      store the host cluster offset. When we need to get that offset from an
      entry we use L2E_OFFSET_MASK to ensure that we only use the bits that
      belong to that field.
      
      But while that mask is used every time we read from an L2 entry, it
      is never used when we write to it. Due to the QCOW_MAX_CLUSTER_OFFSET
      limit set in the cluster allocation code QEMU can never produce
      offsets that don't fit in that field so any such offset would indicate
      a bug in QEMU.
      
      Compressed cluster descriptors contain two fields (host cluster offset
      and size of the compressed data) and the situation with them is
      similar. In this case the masks are not constant but are stored in the
      csize_mask and cluster_offset_mask fields of BDRVQcow2State.
      Signed-off-by: NAlberto Garcia <berto@igalia.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-id: 20200113161146.20099-1-berto@igalia.com
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      3a75a870
  2. 05 2月, 2020 18 次提交
  3. 04 2月, 2020 10 次提交