diff mbox

migration: qmp_migrate(): keep working after syntax error

Message ID 20140102111709.3684c332@redhat.com
State New
Headers show

Commit Message

Luiz Capitulino Jan. 2, 2014, 4:17 p.m. UTC
If a user or QMP client enter a bad syntax for the migrate
command in QMP/HMP, then the migrate command will never succeed
from that point on.

For example, if you enter:

(qemu) migrate tcp;0:4444
migrate: Parameter 'uri' expects a valid migration protocol

Then the migrate command will always fail from now on:

(qemu) migrate tcp:0:4444
migrate: There's a migration process in progress

The problem is that qmp_migrate() sets the migration status to
MIG_STATE_SETUP and doesn't reset it on syntax error. This bug
was introduced by commit 29ae8a4133082e16970c9d4be09f4b6a15034617.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 migration.c | 1 +
 1 file changed, 1 insertion(+)

Comments

mrhines@linux.vnet.ibm.com Jan. 3, 2014, 1:28 a.m. UTC | #1
On 01/03/2014 12:17 AM, Luiz Capitulino wrote:
> If a user or QMP client enter a bad syntax for the migrate
> command in QMP/HMP, then the migrate command will never succeed
> from that point on.
>
> For example, if you enter:
>
> (qemu) migrate tcp;0:4444
> migrate: Parameter 'uri' expects a valid migration protocol
>
> Then the migrate command will always fail from now on:
>
> (qemu) migrate tcp:0:4444
> migrate: There's a migration process in progress
>
> The problem is that qmp_migrate() sets the migration status to
> MIG_STATE_SETUP and doesn't reset it on syntax error. This bug
> was introduced by commit 29ae8a4133082e16970c9d4be09f4b6a15034617.
>
> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
> ---
>   migration.c | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/migration.c b/migration.c
> index 2b1ab20..557195a 100644
> --- a/migration.c
> +++ b/migration.c
> @@ -437,6 +437,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
>   #endif
>       } else {
>           error_set(errp, QERR_INVALID_PARAMETER_VALUE, "uri", "a valid migration protocol");
> +        s->state = MIG_STATE_ERROR;
>           return;
>       }
>
>
Reviewed-by: Michael R. Hines <mrhines@us.ibm.com>
diff mbox

Patch

diff --git a/migration.c b/migration.c
index 2b1ab20..557195a 100644
--- a/migration.c
+++ b/migration.c
@@ -437,6 +437,7 @@  void qmp_migrate(const char *uri, bool has_blk, bool blk,
 #endif
     } else {
         error_set(errp, QERR_INVALID_PARAMETER_VALUE, "uri", "a valid migration protocol");
+        s->state = MIG_STATE_ERROR;
         return;
     }