migration/multifd: Move header prepare/fill into send_prepare()
commit25a1f8787597f6906b151b2f73ae6cc92a31de57
authorPeter Xu <peterx@redhat.com>
Fri, 2 Feb 2024 10:28:47 +0000 (2 18:28 +0800)
committerPeter Xu <peterx@redhat.com>
Mon, 5 Feb 2024 06:42:10 +0000 (5 14:42 +0800)
treebb94c42e3ec46d55660295ee8dd276ddbfa62f7e
parent452b205702335ddd45554aaf0eb37baf50bdfa00
migration/multifd: Move header prepare/fill into send_prepare()

This patch redefines the interfacing of ->send_prepare().  It further
simplifies multifd_send_thread() especially on zero copy.

Now with the new interface, we require the hook to do all the work for
preparing the IOVs to send.  After it's completed, the IOVs should be ready
to be dumped into the specific multifd QIOChannel later.

So now the API looks like:

  p->pages ----------->  send_prepare() -------------> IOVs

This also prepares for the case where the input can be extended to even not
any p->pages.  But that's for later.

This patch will achieve similar goal of what Fabiano used to propose here:

https://lore.kernel.org/r/20240126221943.26628-1-farosas@suse.de

However the send() interface may not be necessary.  I'm boldly attaching a
"Co-developed-by" for Fabiano.

Co-developed-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Link: https://lore.kernel.org/r/20240202102857.110210-14-peterx@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
migration/multifd-zlib.c
migration/multifd-zstd.c
migration/multifd.c
migration/multifd.h