1. 28 10月, 2009 1 次提交
  2. 15 10月, 2009 1 次提交
    • K
      qcow2: Bring synchronous read/write back to life · ef845c3b
      Kevin Wolf 提交于
      When the synchronous read and write functions were dropped, they were replaced
      by generic emulation functions. Unfortunately, these emulation functions don't
      provide the same semantics as the original functions did.
      
      The original bdrv_read would mean that we read some data synchronously and that
      we won't be interrupted during this read. The latter assumption is no longer
      true with the emulation function which needs to use qemu_aio_poll and therefore
      allows the callback of any other concurrent AIO request to be run during the
      read. Which in turn means that (meta)data read earlier could have changed and
      be invalid now. qcow2 is not prepared to work in this way and it's just scary
      how many places there are where other requests could run.
      
      I'm not sure yet where exactly it breaks, but you'll see breakage with virtio
      on qcow2 with a backing file. Providing synchronous functions again fixes the
      problem for me.
      
      Patchworks-ID: 35437
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      ef845c3b
  3. 05 10月, 2009 1 次提交
    • K
      qcow2: Increase maximum cluster size to 2 MB · 80ee15a6
      Kevin Wolf 提交于
      This patch increases the maximum qcow2 cluster size to 2 MB. Starting with 128k
      clusters, L2 tables span 2 GB or more of virtual disk space, causing 32 bit
      truncation and wraparound of signed integers. Therefore some variables need to
      use a larger data type.
      
      While being at reviewing data types, change some integers that are used for
      array indices to unsigned. In some places they were checked against some upper
      limit but not for negative values. This could avoid potential segfaults with
      corrupted qcow2 images.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      80ee15a6
  4. 12 9月, 2009 1 次提交
    • B
      Fix sys-queue.h conflict for good · 72cf2d4f
      Blue Swirl 提交于
      Problem: Our file sys-queue.h is a copy of the BSD file, but there are
      some additions and it's not entirely compatible. Because of that, there have
      been conflicts with system headers on BSD systems. Some hacks have been
      introduced in the commits 15cc9235,
      f40d7537,
      96555a96 and
      3990d09a but the fixes were fragile.
      
      Solution: Avoid the conflict entirely by renaming the functions and the
      file. Revert the previous hacks.
      Signed-off-by: NBlue Swirl <blauwirbel@gmail.com>
      72cf2d4f
  5. 10 9月, 2009 1 次提交
    • K
      qcow2: Order concurrent AIO requests on the same unallocated cluster · f214978a
      Kevin Wolf 提交于
      When two AIO requests write to the same cluster, and this cluster is
      unallocated, currently both requests allocate a new cluster and the second one
      merges the first one when it is completed. This means an cluster allocation, a
      read and a cluster deallocation which cause some overhead. If we simply let the
      second request wait until the first one is done, we improve overall performance
      with AIO requests (specifially, qcow2/virtio combinations).
      
      This patch maintains a list of in-flight requests that have allocated new
      clusters. A second request touching the same cluster is limited so that it
      either doesn't touch the allocation of the first request (so it can have a
      non-overlapping allocation) or it waits for the first request to complete.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      f214978a
  6. 11 7月, 2009 1 次提交
  7. 17 6月, 2009 4 次提交