[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 09/23] multifd: Make zstd compression method not use iovs
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [PATCH v3 09/23] multifd: Make zstd compression method not use iovs |
Date: |
Mon, 29 Nov 2021 17:16:20 +0000 |
User-agent: |
Mutt/2.1.3 (2021-09-10) |
* Juan Quintela (quintela@redhat.com) wrote:
> Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
> migration/multifd-zstd.c | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/migration/multifd-zstd.c b/migration/multifd-zstd.c
> index a8b104f4ee..2d5b61106c 100644
> --- a/migration/multifd-zstd.c
> +++ b/migration/multifd-zstd.c
> @@ -13,6 +13,7 @@
> #include "qemu/osdep.h"
> #include <zstd.h>
> #include "qemu/rcu.h"
> +#include "exec/ramblock.h"
> #include "exec/target_page.h"
> #include "qapi/error.h"
> #include "migration.h"
> @@ -111,8 +112,8 @@ static void zstd_send_cleanup(MultiFDSendParams *p, Error
> **errp)
> */
> static int zstd_send_prepare(MultiFDSendParams *p, Error **errp)
> {
> - struct iovec *iov = p->pages->iov;
> struct zstd_data *z = p->data;
> + size_t page_size = qemu_target_page_size();
> int ret;
> uint32_t i;
>
> @@ -126,8 +127,8 @@ static int zstd_send_prepare(MultiFDSendParams *p, Error
> **errp)
> if (i == p->pages->num - 1) {
> flush = ZSTD_e_flush;
> }
> - z->in.src = iov[i].iov_base;
> - z->in.size = iov[i].iov_len;
> + z->in.src = p->pages->block->host + p->pages->offset[i];
> + z->in.size = page_size;
> z->in.pos = 0;
>
> /*
> @@ -256,7 +257,8 @@ static int zstd_recv_pages(MultiFDRecvParams *p, Error
> **errp)
> {
> uint32_t in_size = p->next_packet_size;
> uint32_t out_size = 0;
> - uint32_t expected_size = p->pages->num * qemu_target_page_size();
> + size_t page_size = qemu_target_page_size();
> + uint32_t expected_size = p->pages->num * page_size;
> uint32_t flags = p->flags & MULTIFD_FLAG_COMPRESSION_MASK;
> struct zstd_data *z = p->data;
> int ret;
> @@ -278,10 +280,8 @@ static int zstd_recv_pages(MultiFDRecvParams *p, Error
> **errp)
> z->in.pos = 0;
>
> for (i = 0; i < p->pages->num; i++) {
> - struct iovec *iov = &p->pages->iov[i];
> -
> - z->out.dst = iov->iov_base;
> - z->out.size = iov->iov_len;
> + z->out.dst = p->pages->block->host + p->pages->offset[i];
> + z->out.size = page_size;
> z->out.pos = 0;
>
> /*
> @@ -295,8 +295,8 @@ static int zstd_recv_pages(MultiFDRecvParams *p, Error
> **errp)
> do {
> ret = ZSTD_decompressStream(z->zds, &z->out, &z->in);
> } while (ret > 0 && (z->in.size - z->in.pos > 0)
> - && (z->out.pos < iov->iov_len));
> - if (ret > 0 && (z->out.pos < iov->iov_len)) {
> + && (z->out.pos < page_size));
> + if (ret > 0 && (z->out.pos < page_size)) {
> error_setg(errp, "multifd %d: decompressStream buffer too small",
> p->id);
> return -1;
> --
> 2.33.1
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
- [PATCH v3 08/23] multifd: Fill offset and block for reception, (continued)
- [PATCH v3 08/23] multifd: Fill offset and block for reception, Juan Quintela, 2021/11/24
- [PATCH v3 10/23] multifd: Make zlib compression method not use iovs, Juan Quintela, 2021/11/24
- [PATCH v3 07/23] multifd: remove used parameter from send_recv_pages() method, Juan Quintela, 2021/11/24
- [PATCH v3 04/23] multifd: Add missing documention, Juan Quintela, 2021/11/24
- [PATCH v3 09/23] multifd: Make zstd compression method not use iovs, Juan Quintela, 2021/11/24
- Re: [PATCH v3 09/23] multifd: Make zstd compression method not use iovs,
Dr. David Alan Gilbert <=
- [PATCH v3 11/23] multifd: Move iov from pages to params, Juan Quintela, 2021/11/24
- [PATCH v3 12/23] multifd: Make zlib use iov's, Juan Quintela, 2021/11/24
- [PATCH v3 06/23] multifd: remove used parameter from send_prepare() method, Juan Quintela, 2021/11/24
- [PATCH v3 13/23] multifd: Make zstd use iov's, Juan Quintela, 2021/11/24
- [PATCH v3 15/23] multifd: Use a single writev on the send side, Juan Quintela, 2021/11/24