diff options
| author | Maciej S. Szmigiero <maciej.szmigiero@oracle.com> | 2025-03-04 23:03:41 +0100 |
|---|---|---|
| committer | Cédric Le Goater <clg@redhat.com> | 2025-03-06 06:47:33 +0100 |
| commit | 0525b91a0b993f95d29b2ea84155e7e4366c120e (patch) | |
| tree | 9d7e0dcbcbd22df607e4e7147eef119f1715e9fb /migration/multifd-nocomp.c | |
| parent | 7ecfab1ddd3e6678c6a0b12d348d82cfaaa406ff (diff) | |
| download | focaccia-qemu-0525b91a0b993f95d29b2ea84155e7e4366c120e.tar.gz focaccia-qemu-0525b91a0b993f95d29b2ea84155e7e4366c120e.zip | |
migration/multifd: Device state transfer support - send side
A new function multifd_queue_device_state() is provided for device to queue its state for transmission via a multifd channel. Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> Link: https://lore.kernel.org/qemu-devel/ebd55768d3e5fecb5eb3f197bad9c0c07e5bc084.1741124640.git.maciej.szmigiero@oracle.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
Diffstat (limited to 'migration/multifd-nocomp.c')
| -rw-r--r-- | migration/multifd-nocomp.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/migration/multifd-nocomp.c b/migration/multifd-nocomp.c index e46e79d8b2..c008046523 100644 --- a/migration/multifd-nocomp.c +++ b/migration/multifd-nocomp.c @@ -14,6 +14,7 @@ #include "exec/ramblock.h" #include "exec/target_page.h" #include "file.h" +#include "migration-stats.h" #include "multifd.h" #include "options.h" #include "qapi/error.h" @@ -85,6 +86,13 @@ static void multifd_nocomp_send_cleanup(MultiFDSendParams *p, Error **errp) return; } +static void multifd_ram_prepare_header(MultiFDSendParams *p) +{ + p->iov[0].iov_len = p->packet_len; + p->iov[0].iov_base = p->packet; + p->iovs_num++; +} + static void multifd_send_prepare_iovs(MultiFDSendParams *p) { MultiFDPages_t *pages = &p->data->u.ram; @@ -118,7 +126,7 @@ static int multifd_nocomp_send_prepare(MultiFDSendParams *p, Error **errp) * Only !zerocopy needs the header in IOV; zerocopy will * send it separately. */ - multifd_send_prepare_header(p); + multifd_ram_prepare_header(p); } multifd_send_prepare_iovs(p); @@ -133,6 +141,8 @@ static int multifd_nocomp_send_prepare(MultiFDSendParams *p, Error **errp) if (ret != 0) { return -1; } + + stat64_add(&mig_stats.multifd_bytes, p->packet_len); } return 0; @@ -431,7 +441,7 @@ int multifd_ram_flush_and_sync(QEMUFile *f) bool multifd_send_prepare_common(MultiFDSendParams *p) { MultiFDPages_t *pages = &p->data->u.ram; - multifd_send_prepare_header(p); + multifd_ram_prepare_header(p); multifd_send_zero_page_detect(p); if (!pages->normal_num) { |