All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kurz <gkurz@linux.vnet.ibm.com>
To: "Andreas Färber" <afaerber@suse.de>
Cc: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <famz@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Alexander Graf <agraf@suse.de>,
	qemu-devel@nongnu.org, Anthony Liguori <aliguori@amazon.com>,
	Amit Shah <amit.shah@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [PATCH RFC 1/8] virtio: add subsections to the migration stream
Date: Thu, 15 May 2014 15:49:24 +0200	[thread overview]
Message-ID: <20140515154924.6502cd43@bahia.local> (raw)
In-Reply-To: <5374AC4F.4000507@suse.de>

On Thu, 15 May 2014 14:00:15 +0200
Andreas Färber <afaerber@suse.de> wrote:

> Am 15.05.2014 12:16, schrieb Michael S. Tsirkin:
> > On Thu, May 15, 2014 at 12:11:12PM +0200, Andreas Färber wrote:
> >> Am 15.05.2014 12:03, schrieb Michael S. Tsirkin:
> >>> On Thu, May 15, 2014 at 11:58:25AM +0200, Andreas Färber wrote:
> >>>> Am 15.05.2014 11:52, schrieb Michael S. Tsirkin:
> >>>>> On Thu, May 15, 2014 at 11:20:18AM +0200, Andreas Färber wrote:
> >>>>>> Am 15.05.2014 09:04, schrieb Greg Kurz:
> >>>>>>> On Thu, 15 May 2014 12:16:35 +0530
> >>>>>>> Amit Shah <amit.shah@redhat.com> wrote:
> >>>>>>>> On (Thu) 15 May 2014 [09:23:51], Michael S. Tsirkin wrote:
> >>>>>>>>> On Thu, May 15, 2014 at 11:34:25AM +0530, Amit Shah wrote:
> >>>>>>>>>> On (Wed) 14 May 2014 [17:41:38], Greg Kurz wrote:
> >>>>>>>>>>> Since each virtio device is streamed in its own section, the idea is to
> >>>>>>>>>>> stream subsections between the end of the device section and the start
> >>>>>>>>>>> of the next sections. This allows an older QEMU to complain and exit
> >>>>>>>>>>> when fed with subsections:
> >>>>>>>>>>>
> >>>>>>>>>>> Unknown savevm section type 5
> >>>>>>>>>>> Error -22 while loading VM state
> >>>>>>>>>>
> >>>>>>>>>> Please make this configurable -- either via configure or device
> >>>>>>>>>> properties.  That avoids having to break existing configurations that
> >>>>>>>>>> work without this patch.
> >>>>>>
> >>>>>> Since backwards migration is not supported upstream, wouldn't it be
> >>>>>> easiest to just add support for the subsection marker and skipping to
> >>>>>> the end of section in that downstream?
> >>>>>
> >>>>> Backwards and forwards migration need to be supported,
> >>>>> customers told us repeatedly. So some downstreams support this
> >>>>> and not supporting it upstream just means downstreams need
> >>>>> to do their own thing.
> >>>>>
> >>>>> As importantly, ping-pong migration is the only
> >>>>> reliable way to stress migration.
> >>>>>
> >>>>> So if we want to test cross-version we need it to work
> >>>>> both way.
> >>>>>
> >>>>> Finally, the real issue and difficulty with cross-version migration is
> >>>>> making VM behave in a backwards compatible way.  Serializing in a
> >>>>> compatible way is a trivial problem, or would be if the code wasn't a
> >>>>> mess :) Once you do the hard part, breaking migration because of the
> >>>>> trivial serialization issue is just silly.  And special-casing forward
> >>>>> migration does not make code simpler, it really only leads to
> >>>>> proliferation of hacks and lack of symmetry.
> >>>>>
> >>>>> So yes it's a useful feature, and no not supporting it does
> >>>>> not help anyway.
> >>>>
> >>>> It seems you misunderstand. I was not saying it's not useful.
> >>>>
> >>>> My point is that VMStateSubsections added in newer versions (and thus
> >>>> not existing in older versions) need to be handled for any
> >>>> VMState-converted devices. So why can't we make that work for virtio too?
> >>>
> >>> Sure.
> >>> AFAIK the way to this works is by adding an "field_exists" callback,
> >>> and not sending the section when we are in a compat mode.
> >>
> >> OK, but upstream always sends the latest version today.
> >> So isn't that
> >> just two ifs that you would need to add in save and load functions added
> >> here for the downstream? x86_64 is unaffected from ppc's endianness
> >> changes and you still do ppc64 BE, so there's no real functional problem
> >> for RHEL, is there?
> > 
> > I'm sorry I don't understand what you are saying here.
> > Simply put, if you specify a compatible -M then your
> > device should behave, and migrate, exactly like and old
> > qemu did.
> 
> Whatever the version_id fields are for, upstream QEMU *always* saves the
> newest version_id format that it knows. There is no mechanism that I'm
> aware of in upstream QEMU for migrating device fields dependent on -M.
> So a device in QEMU only migrates exactly like an old QEMU did if
> neither fields nor subsections were added.
> 
> Subsections are usually migrated based on whether the state differs from
> the default state (didn't check whether the final patch does this
> correctly here, but doesn't matter for 1/8 concept). So for x86 the

For this first round, subsections are sent unconditionally. I will change
that.

> subsection should *never* get written and thus not be a problem for you.
> For ppc64 it should not get written either, unless you care about
> migration from SLES12 or upstream ppc64le to RHEL ppc64.
> As I understood the IRC discussion Alex and me had with Greg about this,
> this is copying the exact code VMState uses to write its subsections, so
> there would be no forward migration problems at all once we convert to
> VMState and VMStateSubsections. The only question remaining is how does
> your downstream react when it encounters a subsection marker for
> subsections it doesn't know - which is not something upstream can solve
> for you unless you contribute backwards migration support upstream.
> 
> Don't forget that Greg is introducing subsection support *because of*
> your backwards migration wish, so telling him not to add subsections
> because of backwards migration is really weird! Either subsections work
> with your downstream or they don't; if they don't, then you have much
> larger problems than can be solved by blocking this one section for ppc.
> Therefore I was saying if your downstream forgot to handle the case of a
> non-VMState device having subsections, then it may be easier to fix
> exactly that than make Greg jump through more hoops here for a
> theoretical problem you are unlikely to encounter on your downstream.
> 
> Andreas
> 



-- 
Gregory Kurz                                     kurzgreg@fr.ibm.com
                                                 gkurz@linux.vnet.ibm.com
Software Engineer @ IBM/Meiosys                  http://www.ibm.com
Tel +33 (0)562 165 496

"Anarchy is about taking complete responsibility for yourself."
        Alan Moore.

  parent reply	other threads:[~2014-05-15 13:49 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-14 15:41 [Qemu-devel] [PATCH RFC 0/8] virtio: migrate new properties Greg Kurz
2014-05-14 15:41 ` [Qemu-devel] [PATCH RFC 1/8] virtio: add subsections to the migration stream Greg Kurz
2014-05-15  6:04   ` Amit Shah
2014-05-15  6:23     ` Michael S. Tsirkin
2014-05-15  6:46       ` Amit Shah
2014-05-15  7:04         ` Greg Kurz
2014-05-15  9:20           ` Andreas Färber
2014-05-15  9:52             ` Michael S. Tsirkin
2014-05-15  9:58               ` Andreas Färber
2014-05-15 10:03                 ` Michael S. Tsirkin
2014-05-15 10:11                   ` Andreas Färber
2014-05-15 10:16                     ` Michael S. Tsirkin
2014-05-15 12:00                       ` Andreas Färber
2014-05-15 12:20                         ` Michael S. Tsirkin
2014-05-15 13:47                           ` Markus Armbruster
2014-05-15 13:49                         ` Greg Kurz [this message]
2014-05-15 12:33               ` Markus Armbruster
2014-05-15 12:58                 ` Michael S. Tsirkin
2014-05-15 13:35                   ` Greg Kurz
2014-05-15 10:08             ` Greg Kurz
2014-05-15 10:12               ` Michael S. Tsirkin
2014-05-15 10:21                 ` Greg Kurz
2014-05-15 10:16               ` Greg Kurz
2014-05-16  9:14               ` Fam Zheng
2014-05-16  9:22                 ` Andreas Färber
2014-05-16  9:40                   ` Fam Zheng
2014-05-16  9:48                     ` Greg Kurz
2014-05-17 18:29           ` Michael S. Tsirkin
2014-05-15  7:14         ` Michael S. Tsirkin
2014-05-15  6:49     ` Greg Kurz
2014-05-15  6:55       ` Amit Shah
2014-05-15  7:12       ` Michael S. Tsirkin
2014-05-14 15:41 ` [Qemu-devel] [PATCH RFC 2/8] virtio-net: migrate subsections Greg Kurz
2014-05-14 15:41 ` [Qemu-devel] [PATCH RFC 3/8] virtio-blk: " Greg Kurz
2014-05-14 15:42 ` [Qemu-devel] [PATCH RFC 4/8] virtio-scsi: " Greg Kurz
2014-05-14 15:42 ` [Qemu-devel] [PATCH RFC 5/8] virtio-serial: " Greg Kurz
2014-05-14 15:42 ` [Qemu-devel] [PATCH RFC 6/8] virtio-balloon: " Greg Kurz
2014-05-14 15:42 ` [Qemu-devel] [PATCH RFC 7/8] virtio-rng: " Greg Kurz
2014-05-14 15:42 ` [Qemu-devel] [PATCH RFC 8/8] virtio: add endian-ambivalent support to VirtIODevice Greg Kurz
     [not found]   ` <5384A8D2.8050104@redhat.com>
     [not found]     ` <20140529111253.4ff55199@bahia.local>
     [not found]       ` <538708FA.4070309@redhat.com>
2014-06-12  7:43         ` Greg Kurz
2014-06-12  7:54           ` Michael S. Tsirkin
2014-06-12  8:47             ` Greg Kurz
2014-06-12  9:05               ` Michael S. Tsirkin
2014-06-12  9:06               ` Alexander Graf
2014-06-12  8:55             ` Alexander Graf
2014-06-12  9:07               ` Michael S. Tsirkin
2014-06-12  9:08                 ` Alexander Graf
2014-06-12  8:55           ` Paolo Bonzini
2014-06-12  8:57             ` Alexander Graf
2014-06-12  9:06             ` Greg Kurz
2014-06-12  9:19               ` Paolo Bonzini
2014-06-12  9:37                 ` Michael S. Tsirkin
2014-06-12  9:39                   ` Paolo Bonzini
2014-06-12  9:43                     ` Alexander Graf
2014-06-12 10:14                       ` Greg Kurz
2014-06-12 10:39                         ` Alexander Graf
2014-06-12 10:50                           ` Greg Kurz
2014-06-12 10:58                             ` Alexander Graf
2014-06-12 10:59                             ` Michael S. Tsirkin
2014-06-12 11:10                               ` Greg Kurz
2014-06-12 10:57                         ` Michael S. Tsirkin
2014-06-12 10:56                       ` Michael S. Tsirkin
2014-06-12 10:55                     ` Michael S. Tsirkin

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=20140515154924.6502cd43@bahia.local \
    --to=gkurz@linux.vnet.ibm.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=aliguori@amazon.com \
    --cc=amit.shah@redhat.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=stefanha@redhat.com \
    /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.