From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: "Eduardo Habkost" <ehabkost@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Juan Quintela" <quintela@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
qemu-devel@nongnu.org,
"Shameerali Kolothum Thodi"
<shameerali.kolothum.thodi@huawei.com>,
"Shannon Zhao" <shannon.zhao@linaro.org>,
"Igor Mammedov" <imammedo@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>
Subject: Re: [PATCH RFC] memory: Don't allow to resize RAM while migrating
Date: Fri, 14 Feb 2020 11:02:26 +0000 [thread overview]
Message-ID: <20200214110226.GD3283@work-vm> (raw)
In-Reply-To: <cd295e35-72ca-e335-35be-f38bb9026e48@redhat.com>
* David Hildenbrand (david@redhat.com) wrote:
> On 14.02.20 11:42, Dr. David Alan Gilbert wrote:
> > * David Hildenbrand (david@redhat.com) wrote:
> >> On 14.02.20 11:25, Dr. David Alan Gilbert wrote:
> >>> * David Hildenbrand (david@redhat.com) wrote:
> >>>> Resizing while migrating is dangerous and does not work as expected.
> >>>> The whole migration code works on the usable_length of ram blocks and does
> >>>> not expect this to change at random points in time.
> >>>>
> >>>> Precopy: The ram block size must not change on the source, after
> >>>> ram_save_setup(), so as long as the guest is still running on the source.
> >>>>
> >>>> Postcopy: The ram block size must not change on the target, after
> >>>> synchronizing the RAM block list (ram_load_precopy()).
> >>>>
> >>>> AFAIKS, resizing can be trigger *after* (but not during) a reset in
> >>>> ACPI code by the guest
> >>>> - hw/arm/virt-acpi-build.c:acpi_ram_update()
> >>>> - hw/i386/acpi-build.c:acpi_ram_update()
> >>>>
> >>>> I see no easy way to work around this. Fail hard instead of failing
> >>>> somewhere in migration code due to strange other reasons. AFAIKs, the
> >>>> rebuilts will be triggered during reboot, so this should not affect
> >>>> running guests, but only guests that reboot at a very bad time and
> >>>> actually require size changes.
> >>>>
> >>>> Let's further limit the impact by checking if an actual resize of the
> >>>> RAM (in number of pages) is required.
> >>>>
> >>>> Don't perform the checks in qemu_ram_resize(), as that's called during
> >>>> migration when syncing the used_length. Update documentation.
> >>>
> >>> Interesting; we need to do something about this - but banning resets
> >>> during migration is a bit harsh; and aborting the source VM is really
> >>> nasty - for a precopy especially we shouldn't kill the source VM,
> >>> we should just abort the migration.
> >>
> >> Any alternative, easy solutions to handle this? I do wonder how often
> >> this will actually trigger in real life.
> >
> > Well it's not that hard to abort a migration (I'm not sure we've got a
> > convenient wrapper to do it - but it shouldn't be hard to add).
> >
>
> We do have qmp_migrate_cancel(). I hope that can be called under BQL.
Well it's a monitor command so I think so; although it's not really
designed for an error - it's a user action. Doing a
migrate_set_error(..) followed by a qemu_file_shutdown is probably a
good bet.
> Can that be called in both, precopy and postcopy case? I assume in the
> precopy, it's easy.
The problem is during postcopy you're toast when that happens because
you can't restart; however, can this happen once we're actually in
postcopy? It's a little different - if it happens before the transition
to postcopy then it's the same as precopy; if it happens afterwards..
well it's going to happen ont he destination side and that's quite
different.
Dave
>
> --
> Thanks,
>
> David / dhildenb
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2020-02-14 11:03 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-13 17:20 [PATCH RFC] memory: Don't allow to resize RAM while migrating David Hildenbrand
2020-02-13 18:32 ` Peter Xu
2020-02-13 19:42 ` David Hildenbrand
2020-02-13 20:56 ` Peter Xu
2020-02-14 9:17 ` David Hildenbrand
2020-02-14 15:56 ` Peter Xu
2020-02-14 16:45 ` David Hildenbrand
2020-02-13 19:09 ` Juan Quintela
2020-02-13 19:38 ` David Hildenbrand
2020-02-14 10:25 ` Dr. David Alan Gilbert
2020-02-14 10:32 ` David Hildenbrand
2020-02-14 10:42 ` Dr. David Alan Gilbert
2020-02-14 10:46 ` David Hildenbrand
2020-02-14 11:02 ` Dr. David Alan Gilbert [this message]
2020-02-14 11:08 ` David Hildenbrand
2020-02-14 12:02 ` David Hildenbrand
2020-02-14 12:46 ` Juan Quintela
2020-02-14 14:00 ` David Hildenbrand
2020-02-14 15:14 ` Dr. David Alan Gilbert
2020-02-14 17:29 ` Peter Xu
2020-02-14 17:32 ` David Hildenbrand
2020-02-14 18:11 ` Peter Xu
2020-02-14 18:26 ` David Hildenbrand
2020-02-14 19:44 ` Peter Xu
2020-02-14 20:04 ` David Hildenbrand
2020-02-14 20:38 ` Peter Xu
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=20200214110226.GD3283@work-vm \
--to=dgilbert@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=david@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=richard.henderson@linaro.org \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=shannon.zhao@linaro.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.