[Qemu-devel] [PATCH v2 0/9] block: Fix dst reading after tail copy offloading

Fam Zheng posted 9 patches 7 years, 4 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180705073701.10558-1-famz@redhat.com
Test checkpatch passed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test s390x passed
There is a newer version of this series
block/blkdebug.c          |   2 +-
block/blkreplay.c         |   2 +-
block/block-backend.c     |   2 +-
block/copy-on-read.c      |   2 +-
block/file-posix.c        |   2 +
block/io.c                | 163 +++++++++++++++++++++++++-------------
block/iscsi.c             |   3 +
block/mirror.c            |   2 +-
block/qcow2-refcount.c    |   2 +-
block/raw-format.c        |   2 +-
block/throttle.c          |   2 +-
block/trace-events        |   6 ++
include/block/block.h     |   4 +-
include/block/block_int.h |   4 +-
14 files changed, 130 insertions(+), 68 deletions(-)
[Qemu-devel] [PATCH v2 0/9] block: Fix dst reading after tail copy offloading
Posted by Fam Zheng 7 years, 4 months ago
Qcow2 allocates new clusters after the end of the file. If it is the destinaton
of copy offloading, we must adjust dst->bs->total_sectors. Otherwise, further
reads will drop to the "beyond EOF" code path and return zeroes, which problem
is caught by iotests 222.

Follow the logic in the normal write code and update bs->total_sectors after
I/O is done.

While at it, add a few convenient trace points to aid future debug experiences
in the topic.

Fam Zheng (9):
  block: Add copy offloading trace points
  block: Use BdrvChild to discard
  block: Use uint64_t for BdrvTrackedRequest byte fields
  block: Extract common write req handling
  block: Fix handling of image enlarging write
  block: Use common req handling for discard
  block: Use common req handling in copy offloading
  block: Fix bdrv_co_truncate overlap check
  block: Use common write req handling in truncate

 block/blkdebug.c          |   2 +-
 block/blkreplay.c         |   2 +-
 block/block-backend.c     |   2 +-
 block/copy-on-read.c      |   2 +-
 block/file-posix.c        |   2 +
 block/io.c                | 163 +++++++++++++++++++++++++-------------
 block/iscsi.c             |   3 +
 block/mirror.c            |   2 +-
 block/qcow2-refcount.c    |   2 +-
 block/raw-format.c        |   2 +-
 block/throttle.c          |   2 +-
 block/trace-events        |   6 ++
 include/block/block.h     |   4 +-
 include/block/block_int.h |   4 +-
 14 files changed, 130 insertions(+), 68 deletions(-)

-- 
2.17.1


Re: [Qemu-devel] [PATCH v2 0/9] block: Fix dst reading after tail copy offloading
Posted by Kevin Wolf 7 years, 4 months ago
Am 05.07.2018 um 09:36 hat Fam Zheng geschrieben:
> Qcow2 allocates new clusters after the end of the file. If it is the destinaton
> of copy offloading, we must adjust dst->bs->total_sectors. Otherwise, further
> reads will drop to the "beyond EOF" code path and return zeroes, which problem
> is caught by iotests 222.
> 
> Follow the logic in the normal write code and update bs->total_sectors after
> I/O is done.
> 
> While at it, add a few convenient trace points to aid future debug experiences
> in the topic.

Apart from the comments I made, this series also conflicts with
Vladimir's "[PATCH v3 0/4] fix image fleecing". Can you please rebase on
top of his series for the next version?

Kevin