v10: Fix and simplify mirror_cow_align. [Max]
v9: Fix the one bug Max found:
"shrink *= chunk_sectors".
v8: Rebase onto master (didn't pick up Max's rev-by due to non-trivial code
change).
The conflict is around removed lines about "max_iov" and "IOV_MAX" due to
commit 3515727f3, but this also reveals this series forgot that check. So
this revision adds it back:
- Two new fields in MirrorBlockJob are added to cache size info:
target_cluster_sectors and max_iov.
- mirror_align_cow compares nb_chunks and max_iov, and cut the tail
appropriately.
- The orphan trace point is removed from trace-events.
Patch 1 rewrites mirror_iteration. Patch 2 is a small DRY cleaning up.
The main benefit is copying unallocated sectors (both zeroed and discarded)
doesn't go through the iov setup loop, as they don't need it.
Fam Zheng (2):
mirror: Rewrite mirror_iteration
mirror: Add mirror_wait_for_io
block/mirror.c | 351 +++++++++++++++++++++++++++------------------
tests/qemu-iotests/109.out | 80 +++++------
trace-events | 1 -
3 files changed, 251 insertions(+), 181 deletions(-)
--
2.4.3