mirror of
https://github.com/qemu/qemu.git
synced 2026-02-04 02:24:38 +00:00
migration: Rename save_live_complete_precopy to save_complete
Now after merging the precopy and postcopy version of complete() hook, rename the precopy version from save_live_complete_precopy() to save_complete(). Dropping the "live" when at it, because it's in most cases not live when happening (in precopy). No functional change intended. Reviewed-by: Juraj Marcin <jmarcin@redhat.com> Reviewed-by: Fabiano Rosas <farosas@suse.de> Link: https://lore.kernel.org/r/20250613140801.474264-7-peterx@redhat.com [peterx: squash the fixup that covers a few more doc spots, per Juraj] Signed-off-by: Peter Xu <peterx@redhat.com> Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
@@ -508,8 +508,8 @@ An iterative device must provide:
|
||||
the point that stream bandwidth limits tell it to stop. Each call
|
||||
generates one section.
|
||||
|
||||
- A ``save_live_complete_precopy`` function that must transmit the
|
||||
last section for the device containing any remaining data.
|
||||
- A ``save_complete`` function that must transmit the last section for
|
||||
the device containing any remaining data.
|
||||
|
||||
- A ``load_state`` function used to load sections generated by
|
||||
any of the save functions that generate sections.
|
||||
|
||||
@@ -75,10 +75,10 @@ VFIO implements the device hooks for the iterative approach as follows:
|
||||
in the non-multifd mode.
|
||||
In the multifd mode it just emits either a dummy EOS marker.
|
||||
|
||||
* A ``save_live_complete_precopy`` function that sets the VFIO device in
|
||||
_STOP_COPY state and iteratively copies the data for the VFIO device until
|
||||
the vendor driver indicates that no data remains.
|
||||
In the multifd mode it just emits a dummy EOS marker.
|
||||
* A ``save_complete`` function that sets the VFIO device in _STOP_COPY
|
||||
state and iteratively copies the data for the VFIO device until the
|
||||
vendor driver indicates that no data remains. In the multifd mode it
|
||||
just emits a dummy EOS marker.
|
||||
|
||||
* A ``save_live_complete_precopy_thread`` function that in the multifd mode
|
||||
provides thread handler performing multifd device state transfer.
|
||||
@@ -195,9 +195,9 @@ Live migration save path
|
||||
|
|
||||
Then the VFIO device is put in _STOP_COPY state
|
||||
(FINISH_MIGRATE, _ACTIVE, _STOP_COPY)
|
||||
.save_live_complete_precopy() is called for each active device
|
||||
.save_complete() is called for each active device
|
||||
For the VFIO device: in the non-multifd mode iterate in
|
||||
.save_live_complete_precopy() until
|
||||
.save_complete() until
|
||||
pending data is 0
|
||||
In the multifd mode this iteration is done in
|
||||
.save_live_complete_precopy_thread() instead.
|
||||
|
||||
@@ -2518,7 +2518,7 @@ static void htab_save_cleanup(void *opaque)
|
||||
static SaveVMHandlers savevm_htab_handlers = {
|
||||
.save_setup = htab_save_setup,
|
||||
.save_live_iterate = htab_save_iterate,
|
||||
.save_live_complete_precopy = htab_save_complete,
|
||||
.save_complete = htab_save_complete,
|
||||
.save_cleanup = htab_save_cleanup,
|
||||
.load_state = htab_load,
|
||||
};
|
||||
|
||||
@@ -338,7 +338,7 @@ static const TypeInfo qemu_s390_stattrib_info = {
|
||||
static SaveVMHandlers savevm_s390_stattrib_handlers = {
|
||||
.save_setup = cmma_save_setup,
|
||||
.save_live_iterate = cmma_save_iterate,
|
||||
.save_live_complete_precopy = cmma_save_complete,
|
||||
.save_complete = cmma_save_complete,
|
||||
.state_pending_exact = cmma_state_pending,
|
||||
.state_pending_estimate = cmma_state_pending,
|
||||
.save_cleanup = cmma_save_cleanup,
|
||||
|
||||
@@ -824,7 +824,7 @@ static const SaveVMHandlers savevm_vfio_handlers = {
|
||||
.state_pending_exact = vfio_state_pending_exact,
|
||||
.is_active_iterate = vfio_is_active_iterate,
|
||||
.save_live_iterate = vfio_save_iterate,
|
||||
.save_live_complete_precopy = vfio_save_complete_precopy,
|
||||
.save_complete = vfio_save_complete_precopy,
|
||||
.save_state = vfio_save_state,
|
||||
.load_setup = vfio_load_setup,
|
||||
.load_cleanup = vfio_load_cleanup,
|
||||
|
||||
@@ -78,7 +78,7 @@ typedef struct SaveVMHandlers {
|
||||
void (*save_cleanup)(void *opaque);
|
||||
|
||||
/**
|
||||
* @save_live_complete_precopy
|
||||
* @save_complete
|
||||
*
|
||||
* Transmits the last section for the device containing any
|
||||
* remaining data at the end phase of migration.
|
||||
@@ -95,7 +95,7 @@ typedef struct SaveVMHandlers {
|
||||
*
|
||||
* Returns zero to indicate success and negative for error
|
||||
*/
|
||||
int (*save_live_complete_precopy)(QEMUFile *f, void *opaque);
|
||||
int (*save_complete)(QEMUFile *f, void *opaque);
|
||||
|
||||
/**
|
||||
* @save_live_complete_precopy_thread (invoked in a separate thread)
|
||||
@@ -103,7 +103,7 @@ typedef struct SaveVMHandlers {
|
||||
* Called at the end of a precopy phase from a separate worker thread
|
||||
* in configurations where multifd device state transfer is supported
|
||||
* in order to perform asynchronous transmission of the remaining data in
|
||||
* parallel with @save_live_complete_precopy handlers.
|
||||
* parallel with @save_complete handlers.
|
||||
* When postcopy is enabled, devices that support postcopy will skip this
|
||||
* step.
|
||||
*
|
||||
|
||||
@@ -1248,7 +1248,7 @@ static bool dirty_bitmap_has_postcopy(void *opaque)
|
||||
|
||||
static SaveVMHandlers savevm_dirty_bitmap_handlers = {
|
||||
.save_setup = dirty_bitmap_save_setup,
|
||||
.save_live_complete_precopy = dirty_bitmap_save_complete,
|
||||
.save_complete = dirty_bitmap_save_complete,
|
||||
.has_postcopy = dirty_bitmap_has_postcopy,
|
||||
.state_pending_exact = dirty_bitmap_state_pending,
|
||||
.state_pending_estimate = dirty_bitmap_state_pending,
|
||||
|
||||
@@ -4548,7 +4548,7 @@ void postcopy_preempt_shutdown_file(MigrationState *s)
|
||||
static SaveVMHandlers savevm_ram_handlers = {
|
||||
.save_setup = ram_save_setup,
|
||||
.save_live_iterate = ram_save_iterate,
|
||||
.save_live_complete_precopy = ram_save_complete,
|
||||
.save_complete = ram_save_complete,
|
||||
.has_postcopy = ram_has_postcopy,
|
||||
.state_pending_exact = ram_state_pending_exact,
|
||||
.state_pending_estimate = ram_state_pending_estimate,
|
||||
|
||||
@@ -1496,7 +1496,7 @@ void qemu_savevm_state_complete_postcopy(QEMUFile *f)
|
||||
int ret;
|
||||
|
||||
QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
|
||||
if (!se->ops || !se->ops->save_live_complete_precopy) {
|
||||
if (!se->ops || !se->ops->save_complete) {
|
||||
continue;
|
||||
}
|
||||
if (se->ops->is_active) {
|
||||
@@ -1509,7 +1509,7 @@ void qemu_savevm_state_complete_postcopy(QEMUFile *f)
|
||||
qemu_put_byte(f, QEMU_VM_SECTION_END);
|
||||
qemu_put_be32(f, se->section_id);
|
||||
|
||||
ret = se->ops->save_live_complete_precopy(f, se->opaque);
|
||||
ret = se->ops->save_complete(f, se->opaque);
|
||||
trace_savevm_section_end(se->idstr, se->section_id, ret);
|
||||
save_section_footer(f, se);
|
||||
if (ret < 0) {
|
||||
@@ -1583,7 +1583,7 @@ int qemu_savevm_state_complete_precopy_iterable(QEMUFile *f, bool in_postcopy)
|
||||
if (!se->ops ||
|
||||
(in_postcopy && se->ops->has_postcopy &&
|
||||
se->ops->has_postcopy(se->opaque)) ||
|
||||
!se->ops->save_live_complete_precopy) {
|
||||
!se->ops->save_complete) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1598,7 +1598,7 @@ int qemu_savevm_state_complete_precopy_iterable(QEMUFile *f, bool in_postcopy)
|
||||
|
||||
save_section_header(f, se, QEMU_VM_SECTION_END);
|
||||
|
||||
ret = se->ops->save_live_complete_precopy(f, se->opaque);
|
||||
ret = se->ops->save_complete(f, se->opaque);
|
||||
trace_savevm_section_end(se->idstr, se->section_id, ret);
|
||||
save_section_footer(f, se);
|
||||
if (ret < 0) {
|
||||
|
||||
Reference in New Issue
Block a user