From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: "Samuel Thibault" <samuel.thibault@gnu.org>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>,
"Juan Quintela" <quintela@redhat.com>,
"Jan Kiszka" <jan.kiszka@siemens.com>,
"Jason Wang" <jasowang@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 1/1] RFC: net/slirp: link with libslirp
Date: Tue, 12 Feb 2019 10:43:35 +0000 [thread overview]
Message-ID: <20190212104335.GB2715@work-vm> (raw)
In-Reply-To: <20190212103115.GF9386@redhat.com>
* Daniel P. Berrangé (berrange@redhat.com) wrote:
> On Mon, Feb 11, 2019 at 11:22:27PM +0100, Samuel Thibault wrote:
> > Marc-André Lureau, le lun. 11 févr. 2019 12:34:47 +0100, a ecrit:
> > > On Mon, Feb 11, 2019 at 12:09 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
> > > >
> > > > On Fri, Feb 08, 2019 at 07:12:26PM +0100, Marc-André Lureau wrote:
> > > > > Once libslirp has received its first release, we can link with the
> > > > > external libslirp library.
> > > > >
> > > > > The migration data should be compatible with current and older qemu
> > > > > versions (same compatibility as today). See "slirp: add state
> > > > > saving/loading" patch. However, the content should be treated as a
> > > > > blob, as the format may change eventually in the future.
> > > >
> > > > How are we going to manage live migration compat if libslirp changes
> > > > the blob content ?
> > > >
> > > > Bear in mind that we need to support all existing QEMU releases live
> > > > migrating to effectively all future QEMU releases, with all future
> > > > libslirp releases, in *both* directions. ie arbitrarily newer
> > > > libslirp needs to be able to emit a blob format that can be read
> > > > by arbitrarily older slirp inside QEMU.
> > >
> > > Right, this is all supported currently with the proposed patch set,
> > > since it is effectively the same code.
> > >
> > > So register_savevm_live() get passed slirp_state_version() (currently == 4)
> > >
> > > & slirp_state_load() get the version_id from QEMU.
> >
> > Mmm, but do we guarantee that the current version of slirp will be able
> > to read blobs produced by future versions of slirp?
> >
> > Future extensions of the format would have to be so that the current
> > version could discard their content without issues.
> >
> > Perhaps qemu should actually explicitly pass 4 to
> > register_savevm_live(), for that function to only record that format
> > (and thus get compatibility of course) and only bump to greater values
> > when qemu is modified to make use of a functionality which requires
> > extending the blob format, which then makes it unreadable by older qemu
> > releases, but that is fine for qemu.
>
> If QEMU wants to make use of functionality that requires the new blob
> format, it would have to restrict that based on machine type. That way
> it can ensure full compatibility with old QEMU.
Library compatibility for migration blobs is messy; we've had the same
problem with usbredir.
It's very difficult to keep track of; for example lets say that libslirp
gets used by 3 or 4 different projects, and the package maintainer for
libslirp in your favorite distro updates it - it's not necessarily
obvious to them that doing so could break qemu migration.
The ideal way is to work in terms of features and not versions; so that
a machine type can enable libslirp-feature-foo in the new machine type
and only then will the migration contents change.
Dave
> Regards,
> Daniel
> --
> |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org -o- https://fstop138.berrange.com :|
> |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
prev parent reply other threads:[~2019-02-12 10:43 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-08 18:12 [Qemu-devel] [PATCH 1/1] RFC: net/slirp: link with libslirp Marc-André Lureau
2019-02-08 21:56 ` Philippe Mathieu-Daudé
2019-02-09 13:17 ` Samuel Thibault
2019-02-10 21:37 ` Peter Maydell
2019-02-11 10:49 ` Marc-André Lureau
2019-02-11 11:09 ` Daniel P. Berrangé
2019-02-11 11:34 ` Marc-André Lureau
2019-02-11 11:41 ` Daniel P. Berrangé
2019-02-11 22:22 ` Samuel Thibault
2019-02-12 10:31 ` Daniel P. Berrangé
2019-02-12 10:43 ` Dr. David Alan Gilbert [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190212104335.GB2715@work-vm \
--to=dgilbert@redhat.com \
--cc=berrange@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=jasowang@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=samuel.thibault@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.