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