On Fri, May 28, 2021 at 05:16:28PM +0300, Vladimir Sementsov-Ogievskiy wrote: > @@ -183,6 +184,7 @@ static BlockCopyTask *block_copy_task_create(BlockCopyState *s, > .call_state = call_state, > .offset = offset, > .bytes = bytes, > + .copy_range = s->use_copy_range, > }; > qemu_co_queue_init(&task->wait_queue); > QLIST_INSERT_HEAD(&s->tasks, task, list); > @@ -342,11 +344,17 @@ static coroutine_fn int block_copy_task_run(AioTaskPool *pool, > * > * No sync here: nor bitmap neighter intersecting requests handling, only copy. > * > + * @copy_range is in-out argument: if *copy_range is false, copy_range is not s/is in-out argument/is an in-out argument/ > + * done. If *copy_range is true, copy_range attempt is done. If copy_range s/copy_range attempt is done/copy_range is attempted/ > + * attempt failed, the function fallback to usual read+write and *copy_range is If the copy_range attempt fails, the function falls back to the usual read+write and ...