* Juan Quintela (quint...@redhat.com) wrote: > Signed-off-by: Juan Quintela <quint...@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilb...@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 / dgilb...@redhat.com / Manchester, UK