qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL 1/3] Migration: Generate the completed event only


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] [PULL 1/3] Migration: Generate the completed event only when we complete
Date: Thu, 15 Oct 2015 17:12:25 +0100
User-agent: Mutt/1.5.24 (2015-08-30)

* Christian Borntraeger (address@hidden) wrote:
> Am 15.10.2015 um 08:27 schrieb Juan Quintela:
> > From: "Dr. David Alan Gilbert" <address@hidden>
> > 
> > The current migration-completed event is generated a bit too early,
> > which means that an eager libvirt that's ready to go as soon
> > as it sees the event ends up racing with the actual end of migration.
> > 
> > This corresponds to RH bug:
> > https://bugzilla.redhat.com/show_bug.cgi?id=1271145
> 
> Is that something for stable?

Hmm, yes, it probably should be.

cc'd in.

Dave

> 
> 
> > 
> > Signed-off-by: Dr. David Alan Gilbert <address@hidden>
> > Reviewed-by: Juan Quintela <address@hidden>
> > Reviewed-by: Amit Shah <address@hidden>
> > xSigned-off-by: Juan Quintela <address@hidden>
> 
> 
> > ---
> >  migration/migration.c | 8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> > 
> > diff --git a/migration/migration.c b/migration/migration.c
> > index b7de9b7..3d40f24 100644
> > --- a/migration/migration.c
> > +++ b/migration/migration.c
> > @@ -294,12 +294,12 @@ static void process_incoming_migration_co(void 
> > *opaque)
> >          migrate_decompress_threads_join();
> >          exit(EXIT_FAILURE);
> >      }
> > -    migrate_generate_event(MIGRATION_STATUS_COMPLETED);
> >      qemu_announce_self();
> > 
> >      /* Make sure all file formats flush their mutable metadata */
> >      bdrv_invalidate_cache_all(&local_err);
> >      if (local_err) {
> > +        migrate_generate_event(MIGRATION_STATUS_FAILED);
> >          error_report_err(local_err);
> >          migrate_decompress_threads_join();
> >          exit(EXIT_FAILURE);
> > @@ -320,6 +320,12 @@ static void process_incoming_migration_co(void *opaque)
> >          runstate_set(global_state_get_runstate());
> >      }
> >      migrate_decompress_threads_join();
> > +    /*
> > +     * This must happen after any state changes since as soon as an 
> > external
> > +     * observer sees this event they might start to prod at the VM assuming
> > +     * it's ready to use.
> > +     */
> > +    migrate_generate_event(MIGRATION_STATUS_COMPLETED);
> >  }
> > 
> >  void process_incoming_migration(QEMUFile *f)
> > 
> 
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]