Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
migration: stop tracking ram writes when cancelling background migration
Currently, it is only done when the iteration finishes successfully.
Not cleaning up the userfaultfd write protection can lead to
symptoms/issues such as the process hanging in memmove or GDB not
being able to attach.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
Message-Id: <20230526115908.196171-1-f.ebner@proxmox.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
  • Loading branch information
foxmox authored and Juan Quintela committed Jun 1, 2023
1 parent a4c6275 commit 3a8b81f
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions migration/migration.c
Expand Up @@ -2400,13 +2400,6 @@ static void bg_migration_completion(MigrationState *s)
{
int current_active_state = s->state;

/*
* Stop tracking RAM writes - un-protect memory, un-register UFFD
* memory ranges, flush kernel wait queues and wake up threads
* waiting for write fault to be resolved.
*/
ram_write_tracking_stop();

if (s->state == MIGRATION_STATUS_ACTIVE) {
/*
* By this moment we have RAM content saved into the migration stream.
Expand Down Expand Up @@ -2788,6 +2781,13 @@ static void migration_iteration_finish(MigrationState *s)

static void bg_migration_iteration_finish(MigrationState *s)
{
/*
* Stop tracking RAM writes - un-protect memory, un-register UFFD
* memory ranges, flush kernel wait queues and wake up threads
* waiting for write fault to be resolved.
*/
ram_write_tracking_stop();

qemu_mutex_lock_iothread();
switch (s->state) {
case MIGRATION_STATUS_COMPLETED:
Expand Down

0 comments on commit 3a8b81f

Please sign in to comment.