On Mon, Nov 16, 2020 at 02:38:12PM +0000, Stefan Hajnoczi wrote:
> On Wed, Nov 11, 2020 at 03:41:59PM +0000, Dr. David Alan Gilbert wrote:
> > * Stefan Hajnoczi (stefa...@redhat.com) wrote:
> > > On Wed, Nov 11, 2020 at 12:56:26PM +0000, Dr. David Alan Gilbert wrote:
> > > > * Stefan Hajnoczi (stefa...@redhat.com) wrote:
> > > > > Orchestrating Migrations
> > > > > ------------------------
> > > > > In order to migrate a device a *migration parameter list* must first 
> > > > > be built
> > > > > on the source. Each migration parameter is added to the list if it is 
> > > > > in
> > > > > effect. For example, the migration parameter list for a device with
> > > > > new-feature=off,num-queues=4 would be num-queues=4 if the new-feature 
> > > > > migration
> > > > > parameter was introduced with the off value disabling its effect.
> > > > 
> > > > What component builds that list (i.e. what component needs to know the
> > > > history that new-feature=off was the default - ah I think you answer
> > > > that below).
> > > 
> > > Yep. Thanks for noting this. I'll need to reorder things so it is clear.
> > > 
> > > > > The following conditions must be met to establish migration 
> > > > > compatibility:
> > > > > 
> > > > > 1. The source and destination device model strings match.
> > > > > 
> > > > > 2. Each migration parameter name from the migration parameter list is 
> > > > > supported
> > > > >    by the destination. For example, the destination supports the 
> > > > > num-queues
> > > > >    migration parameter.
> > > > > 
> > > > > 3. Each migration parameter value from the migration parameter list is
> > > > >    supported by the destination. For example, the destination supports
> > > > >    num-queues=4.
> > > > 
> > > > Hmm, are combinations of parameter checks needed - i.e. is it possible
> > > > that a destination supports    num-queues=4 and  new-feature=on/off -
> > > > but only supports new-feature=on when num-queues>2 ?
> > > 
> > > Yes, it's possible but cannot be expressed in the migration info JSON.
> > > 
> > > We need to choose a level of expressiveness that will be useful enough
> > > without being complex. In the extreme the migration info would contain
> > > Turing complete validation expressions (e.g. JavaScript) so that any
> > > relationship can be expressed, but I doubt that complexity is needed.
> > > The other extreme is just booleans and (opaque) strings for maximum
> > > simplicity.
> > > 
> > > If the syntax is not expressive enough then it's impossible to check
> > > migration compatibility without actually creating a new device instance
> > > on the destination. Daniel Berrange raised the requirement of checking
> > > migration compatibility without creating the device since this helps
> > > with selecting a migration destination.
> > 
> > Right, but my worry isn't the JSON description, it's the set of 3
> > conditions above; they need to state that only some combinations need to
> > be valid.
> 
> Yes, the proposed syntax is simply not expressive enough. The migration
> compatibility check will pass and then the destination will refuse to
> set up the device (before the device state is transferred).
> 
> Any suggestions for a syntax without full-blown arithmetic and logic
> expressions?
> 
> > > Any ideas for a better syntax?
> > 
> > I'd be happy with a --param name=value   repeatedly, but also know that
> > some option parsers don't like that.
> 
> Another wart, Sphinx considers repeated options an error so you cannot
> document options using rST option syntax. I remember having this problem
> when documenting virtiofsd's command-line options :).
> 
> If something comes to mind please let me know. I'm not set on a
> particular syntax, but I'd like to choose the one that is both
> human-friendly and compatible with option parsers while avoiding
> namespace collisions with the device implementation's own options.
> 
> Stefan


I think the simplest way is just to include and open-source tool
for figuring all this out together with qemu.
Any vendor interested in supporting migration with qemu
will then just submit a patch for that tool.

This will also help make sure this interface
is not just a way to bypass GPL, we can ask that the
supporting server is opensource.

And it will help us guide vendors towards supporting migration
correctly.

-- 
MST


Reply via email to