[libvirt PATCH v2 03/81] Introduce VIR_DOMAIN_RUNNING_POSTCOPY_FAILED

Peter Krempa pkrempa at redhat.com
Mon Jun 6 12:35:10 UTC 2022


On Mon, Jun 06, 2022 at 14:29:20 +0200, Peter Krempa wrote:
> On Wed, Jun 01, 2022 at 14:49:03 +0200, Jiri Denemark wrote:
> > This new "post-copy failed" reason for the running state will be used on
> > the destination host when post-copy migration fails while the domain is
> > already running there.
> > 
> > Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> > ---
> > 
> > Notes:
> >     Version 2:
> >     - documented both VIR_DOMAIN_RUNNING_POSTCOPY_FAILED and
> >       VIR_DOMAIN_PAUSED_POSTCOPY_FAILED possibilities on the destination
> > 
> >  examples/c/misc/event-test.c     |  3 +++
> >  include/libvirt/libvirt-domain.h |  2 ++
> >  src/conf/domain_conf.c           |  1 +
> >  src/libvirt-domain.c             | 26 +++++++++++++++++++-------
> >  src/qemu/qemu_domain.c           |  3 +++
> >  tools/virsh-domain-event.c       |  3 ++-
> >  tools/virsh-domain-monitor.c     |  1 +
> >  7 files changed, 31 insertions(+), 8 deletions(-)
> 
> [...]
> 
> > diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
> > index e3ced700b8..b9f1d73d5a 100644
> > --- a/src/libvirt-domain.c
> > +++ b/src/libvirt-domain.c
> > @@ -9764,10 +9764,16 @@ virDomainMigrateGetMaxSpeed(virDomainPtr domain,
> >   * at most once no matter how fast it changes. On the other hand once the
> >   * guest is running on the destination host, the migration can no longer be
> >   * rolled back because none of the hosts has complete state. If this happens,
> > - * libvirt will leave the domain paused on both hosts with
> > - * VIR_DOMAIN_PAUSED_POSTCOPY_FAILED reason. It's up to the upper layer to
> > - * decide what to do in such case. Because of this, libvirt will refuse to
> > - * cancel post-copy migration via virDomainAbortJob.
> > + * libvirt will leave the domain paused on the source host with
> > + * VIR_DOMAIN_PAUSED_POSTCOPY_FAILED reason. The domain on the destination host
> > + * will either remain running with VIR_DOMAIN_RUNNING_POSTCOPY_FAILED reason if
> > + * libvirt loses control over the migration (e.g., the daemon is restarted or
> > + * libvirt connection is broken) while QEMU is still able to continue migrating
> > + * memory pages from the source to the destination or it will be paused with
> > + * VIR_DOMAIN_PAUSED_POSTCOPY_FAILED if even the connection between QEMU
> > + * processes gets broken. It's up to the upper layer to decide what to do in
> 
> I presume this bit is still up for discussion, right? Currently with the
> RFC patch 81 you'd attempt to pause it but qemu will break anyways IIUC.
> 
> If that is the case, this should for now document it properly.

Never mind. I've re-read the paragraph (and code in next patch and
noticed that it's meant on the source side, which makes sense.

Reviewed-by: Peter Krempa <pkrempa at redhat.com>


More information about the libvir-list mailing list