Am 07.06.2017 um 16:08 hat Alberto Garcia geschrieben:
> Instead of passing a single buffer pointer to do_perform_cow_write(),
> pass a QEMUIOVector. This will allow us to merge the write requests
> for the COW regions and the actual data into a single one.
> 
> Although do_perform_cow_read() does not strictly need to change its
> API, we're doing it here as well for consistency.
> 
> Signed-off-by: Alberto Garcia <be...@igalia.com>
> ---
>  block/qcow2-cluster.c | 51 
> ++++++++++++++++++++++++---------------------------
>  1 file changed, 24 insertions(+), 27 deletions(-)

> @@ -807,22 +798,25 @@ static int perform_cow(BlockDriverState *bs, QCowL2Meta 
> *m)
>      /* The part of the buffer where the end region is located */
>      end_buffer = start_buffer + buffer_size - end->nb_bytes;
>  
> +    qemu_iovec_init(&qiov, 3);
> +

You don't actually make use of more than one iovec in this patch. And
after the last patch, the value is potentially too low - which isn't
fatal because this is not a fixed maximum, but just a hint, but it can
cause unnecessary memory allocations.

It would probably be better to use 1 here and change it into
2 + m->data_qiov->niov when you add write merging.

Kevin

Reply via email to