[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v1 20/26] kvm: vmi: intercept live migration
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [RFC PATCH v1 20/26] kvm: vmi: intercept live migration |
Date: |
Tue, 28 Apr 2020 14:43:20 +0100 |
User-agent: |
Mutt/1.13.4 (2020-02-15) |
* Adalbert Lazăr (address@hidden) wrote:
> On Tue, 28 Apr 2020 13:24:39 +0100, "Dr. David Alan Gilbert" <address@hidden>
> wrote:
> > * Adalbert Lazăr (address@hidden) wrote:
> > > On Mon, 27 Apr 2020 20:08:55 +0100, "Dr. David Alan Gilbert"
> > > <address@hidden> wrote:
> > > > * Adalbert Lazăr (address@hidden) wrote:
> > > > > From: Marian Rotariu <address@hidden>
> > > > >
> > > > > It is possible that the introspection tool has made some changes
> > > > > inside
> > > > > the introspected VM which can make the guest crash if the
> > > > > introspection
> > > > > connection is suddenly closed.
> > > > >
> > > > > When the live migration starts, for now, the introspection tool is
> > > > > signaled to remove its hooks from the introspected VM.
> > > > >
> > > > > CC: Juan Quintela <address@hidden>
> > > > > CC: "Dr. David Alan Gilbert" <address@hidden>
> > > > > Signed-off-by: Marian Rotariu <address@hidden>
> > > > > Signed-off-by: Adalbert Lazăr <address@hidden>
> > > >
> > > > OK, so this isn't too intrusive to the migration code; and other than
> > > > renaming 'start_live_migration_thread' to
> > > > 'start_outgoing_migration_thread' I think I'd be OK with this,
> > > >
> > > > but it might depend what your overall aim is.
> > > >
> > > > For example, you might be better intercepting each migration_state
> > > > change in your notifier, that's much finer grain than just the start of
> > > > migration.
> > >
> > > Thank you, Dave.
> > >
> > > We want to intercept the live migration and 'block' it while the guest
> > > is running (some changes made to the guest by the introspection app has
> > > to be undone while the vCPUs are in certain states).
> > >
> > > I'm not sure what is the best way to block these kind of events
> > > (including the pause/shutdown commands). If calling main_loop_wait()
> > > is enough (patch [22/26] kvm: vmi: add 'async_unhook' property [1])
> > > then we can drop a lot of code.
> > >
> > > The use of a notifier will be nice, but from what I understand, we can't
> > > block the migration from a notification callback.
> >
> > Oh, if your intention is *just* to block a migration starting then you
> > can use 'migrate_add_blocker' - see hw/9pfs/9p.c for an example where
> > it's used and then removed; they use it to stop migration while the fs
> > is mounted. That causes an attempt to start a migration to give an
> > error (of your choosing).
>
> One use case is to do VM introspection all the time the guest is running.
> From the user perspective, the pause/suspend/shutdown/snapshot/migrate
> commands should work regardless if the VM is currently introspected
> or not. Our first option was to delay these commands for a couple of
> seconds when the VM is introspected, while the introspection app reverts
> its changes, without blocking the vCPUs.
Ah OK, so it's not really about blocking it completely; just delaying it
a bit; in that case add_blocker is the wrong thing.
> I'll see if we can mix the migrate notifier with migrate_add_blocker(),
> or add a new migration state. To block the migration (with an error)
> is our second option, because the user doing this might not be allowed
> to stop the VM introspection.
Maybe the right thing is to do something just like
MIGRATION_STATUS_WAIT_UNPLUG, it's right near the start of the thread.
Again it's job is just to make the migration wait while it does some
stuff before it can let migration continue.
Dave
> Thank you,
> Adalbert
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK
- [RFC PATCH v1 23/26] kvm: vmi: intercept shutdown, (continued)
- [RFC PATCH v1 23/26] kvm: vmi: intercept shutdown, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 16/26] kvm: vmi: intercept pause/resume, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 25/26] kvm: vmi: extend handshake to include the e820 table, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 26/26] kvm: vmi: add 'command' and 'event' properties, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 10/26] kvm: vmi: add the handshake with the introspection tool, Adalbert Lazăr, 2020/04/14
- [RFC PATCH v1 20/26] kvm: vmi: intercept live migration, Adalbert Lazăr, 2020/04/14
Re: [RFC PATCH v1 00/26] VM introspection, no-reply, 2020/04/14
Re: [RFC PATCH v1 00/26] VM introspection, no-reply, 2020/04/14