From: Juan Quintela <quintela@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: Peter Xu <peterx@redhat.com>,
lvivier@redhat.com, qemu-devel@nongnu.org, dgilbert@redhat.com
Subject: Re: [Qemu-devel] [PATCH 2/3] migration: Remove use of old MigrationParams
Date: Mon, 15 May 2017 11:48:31 +0200 [thread overview]
Message-ID: <87lgpyfo28.fsf@secure.mitica> (raw)
In-Reply-To: <5bab598f-30eb-fcf6-9d06-8f683b466414@redhat.com> (Eric Blake's message of "Fri, 12 May 2017 14:59:29 -0500")
Eric Blake <eblake@redhat.com> wrote:
> On 05/12/2017 05:55 AM, Juan Quintela wrote:
>>>> @@ -1239,6 +1240,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
>>>> }
>>>>
>>>> if (has_inc && inc) {
>>>> + migrate_set_block_enabled(s, true);
>>>> migrate_set_block_shared(s, true);
>>>
>>> [2]
>>>
>>> IIUC for [1] & [2] we are solving the same problem that "shared"
>>> depends on "enabled" bit. Would it be good to unitfy this dependency
>>> somewhere? E.g., by changing migrate_set_block_shared() into:
>>>
>>> void migrate_set_block_shared(MigrationState *s, bool value)
>>> {
>>> s->enabled_capabilities[MIGRATION_CAPABILITY_BLOCK_SHARED] = value;
>>> if (value) {
>>> migrate_set_block_enabled(s, true);
>>> }
>>> }
>>
>> ok with this.
>
> Or, as I commented on 1/3, maybe having a single property that is a
> tri-state enum value, instead of 2 separate boolean properties, might be
> nicer (but certainly a bit more complex to code up).
If you teach me how to do the qapi/qmp part, I will do the other bits.
I don't really care if we do it one way or the other.
>> I will add once here that when we disable block enabled, we also disable
>> shared, or just let it that way?
>>
>>> Another thing to mention: after switching to the capability interface,
>>> we'll cache the "enabled" and "shared" bits now while we don't cache
>>> it before, right? IIUC it'll affect behavior of such sequence:
>>>
>>> - 1st migrate with enabled=1, shared=1, then
>>> - 2nd migrate with enabled=0, shared=0
>>>
>>> Before the series, the 2nd migrate will use enabled=shared=0, but
>>> after the series it should be using enabled=shared=1. Not sure whether
>>> this would be a problem (or I missed anything?).
>>
>> We can't be consistent with both old/new way.
>>
>> Old way: we always setup the capabilities on command line (that should
>> have been deprecated long, long ago)
>
> Well, the easy way out is to have the HMP migrate command (I assume
> that's what you mean by "on command line") explicitly clear the
> parameters if it is called without the -b/-i flag. So the start of each
> migration is what changes the properties, so long as you are still using
> HMP to start the migration. Or, on the QMP side, since 'migrate' has
> optional 'blk' and 'inc' booleans, basically leave the settings alone if
> the parameters were omitted, and explicitly update the property to the
> value of those parameters if they were present.
We are going to have trouble whatever way that we do it, or we start
doing lots of strange things.
Forget about qmp, we are going to assume that it is consistent with hmp.
migrate_set_capabilities block_enabled on
migrate -b .....
Should migrate disable the block_enabled capability? Give one
warning/error?
And notice that this only matter if we do a migration, we cancel/get one
error, and then we migrate again.
What I tried to do is assume that -b/-i arguments don't exist. And if
the user use them, we implement its behaviour with the minimal fuss
possibly.
Only way that I can think of being consistent and bug compatible will be
to store:
- old block_shared/enanbeld capability value
- if we set -b/-i on the command line
In migration cleanup do the right thing depending on this four
variables. I think that it is adding lots of complexity for very few
improvement.
> Or is the proposal that we are also going to simplify the QMP 'migrate'
> command to get rid of crufty parameters?
I didn't read it that way, but I would not oppose O:-)
Later, Juan.
next prev parent reply other threads:[~2017-05-15 9:48 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-11 16:32 [Qemu-devel] [PATCH v2 0/3] Remove old MigrationParams Juan Quintela
2017-05-11 16:32 ` [Qemu-devel] [PATCH 1/3] migration: Create block capabilities for shared and enable Juan Quintela
2017-05-12 19:52 ` Eric Blake
2017-05-15 9:41 ` Juan Quintela
2017-05-15 9:46 ` Dr. David Alan Gilbert
2017-05-15 14:24 ` Eric Blake
2017-05-15 15:38 ` Markus Armbruster
2017-05-15 16:06 ` Juan Quintela
2017-05-16 6:49 ` Markus Armbruster
2017-05-15 15:56 ` Juan Quintela
2017-05-11 16:32 ` [Qemu-devel] [PATCH 2/3] migration: Remove use of old MigrationParams Juan Quintela
2017-05-12 3:40 ` Peter Xu
2017-05-12 10:55 ` Juan Quintela
2017-05-12 19:59 ` Eric Blake
2017-05-15 9:48 ` Juan Quintela [this message]
2017-05-15 10:43 ` Dr. David Alan Gilbert
2017-05-15 14:28 ` Eric Blake
2017-05-15 15:59 ` Juan Quintela
2017-05-15 16:06 ` Markus Armbruster
2017-05-15 16:33 ` Juan Quintela
2017-05-15 16:38 ` Dr. David Alan Gilbert
2017-05-15 16:56 ` Juan Quintela
2017-05-15 17:27 ` Dr. David Alan Gilbert
2017-05-15 17:35 ` Juan Quintela
2017-05-15 17:38 ` Dr. David Alan Gilbert
2017-05-15 17:45 ` Juan Quintela
2017-05-15 18:32 ` Dr. David Alan Gilbert
2017-05-16 7:25 ` Markus Armbruster
2017-05-16 8:00 ` Juan Quintela
2017-05-15 10:05 ` Peter Xu
2017-05-11 16:32 ` [Qemu-devel] [PATCH 3/3] migration: Remove " Juan Quintela
2017-05-12 2:01 ` [Qemu-devel] [PATCH v2 0/3] " Hailiang Zhang
-- strict thread matches above, loose matches on Subject: below --
2017-04-25 10:30 [Qemu-devel] [PATCH " Juan Quintela
2017-04-25 10:30 ` [Qemu-devel] [PATCH 2/3] migration: Remove use of " Juan Quintela
2017-04-28 16:55 ` Dr. David Alan Gilbert
2017-05-04 8:51 ` Juan Quintela
2017-05-04 9:14 ` Hailiang Zhang
2017-05-11 16:33 ` Juan Quintela
2017-05-12 2:02 ` Hailiang Zhang
2017-04-28 18:49 ` Eric Blake
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=87lgpyfo28.fsf@secure.mitica \
--to=quintela@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=lvivier@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.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.