On Sun, Feb 09, 2025 at 11:20:00PM +0100, Stefano Brivio wrote: > Introduce facilities for guest migration on top of vhost-user > infrastructure. Add migration facilities based on top of the current > vhost-user infrastructure, moving vu_migrate() and related functions > to migrate.c. > > Versioned migration stages define function pointers to be called on > source or target, or data sections that need to be transferred. > > The migration header consists of a magic number, a version number for the > encoding, and a "compat_version" which represents the oldest version which > is compatible with the current one. We don't use it yet, but that allows > for the future possibility of backwards compatible protocol extensions. > > Co-authored-by: David Gibson > Signed-off-by: David Gibson > Signed-off-by: Stefano Brivio Reviewed-by: David Gibson with the exception of one nit, which I hope to send a fixup patch for today: [snip] > +/** > + * struct migrate_stage - Callbacks and parameters for one stage of migration > + * @name: Stage name (for debugging) > + * @source: Callback to implement this stage on the source > + * @target: Callback to implement this stage on the target > + * @iov: Optional data section to transfer > + */ > +struct migrate_stage { > + const char *name; > + int (*source)(struct ctx *c, const struct migrate_stage *stage, int fd); > + int (*target)(struct ctx *c, const struct migrate_stage *stage, int fd); > + > + /* Add here separate rollback callbacks if needed */ > + > + struct iovec iov; We're no longer using this @iov field, and it can be removed. -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson