[libvirt] tunnelled migration with libvirt 0.9.0

Jason Krieg jason.krieg at collax.com
Wed Apr 20 11:13:51 UTC 2011


On 04/20/2011 12:23 PM, Wen Congyang wrote:
> At 04/20/2011 05:41 PM, Jason Krieg Write:
>> Hi,
>>
>> is tunnelled migration with libvirt 0.9.0 and qemu-kvm 0.14.0 broken ?
>>
>> all I get is an error "unknown migration protocol"
>>
>> while looking at the code in src/qemu/qemu_migration.c
>>
>> src/qemu/qemu_migration.c:
>>
>>      /* Start the QEMU daemon, with the same command-line arguments plus
>>       * -incoming stdin (which qemu_command might convert to exec:cat or
>> fd:n)
>>       */
>>      internalret = qemuProcessStart(dconn, driver, vm, "stdin", true,
>> dataFD[1],
>>                                     NULL, VIR_VM_OP_MIGRATE_IN_START);
>>
>>
>>
>> migrateFrom is set to "stdin" but in src/qemu/qemu_command.c
>> there is no such match which ends in the above error.
> Yes, the tunnelled migration has been broken.
>
> Please applied the following patch and try it again:
>
>  From 55dac9d193644b7957ea730b8739633cd185d494 Mon Sep 17 00:00:00 2001
> From: Wen Congyang<wency at cn.fujitsu.com>
> Date: Wed, 20 Apr 2011 18:20:12 +0800
> Subject: [PATCH] fix tunnelled migration's regression
>
> If the migrateFrom is "stdio" not "stdin", qemuBuildCommandLine()
> will convert it to exec:cat or fd:n.
>
> ---
>   src/qemu/qemu_migration.c |    4 ++--
>   1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index 43741e1..bba76d5 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -316,9 +316,9 @@ qemuMigrationPrepareTunnel(struct qemud_driver *driver,
>           goto endjob;
>       }
>       /* Start the QEMU daemon, with the same command-line arguments plus
> -     * -incoming stdin (which qemu_command might convert to exec:cat or fd:n)
> +     * -incoming stdio (which qemu_command might convert to exec:cat or fd:n)
>        */
> -    internalret = qemuProcessStart(dconn, driver, vm, "stdin", true, dataFD[1],
> +    internalret = qemuProcessStart(dconn, driver, vm, "stdio", true, dataFD[1],
>                                      NULL, VIR_VM_OP_MIGRATE_IN_START);
>       if (internalret<  0) {
>           qemuAuditDomainStart(vm, "migrated", false);


that was my first guess but it does not work the remote monitor socket 
does not show up

libvirt is running as root so it should not be a permission problem

qemuMonitorOpenUnix:289 : monitor socket did not show up.: Connection 
refused
qemuProcessWaitForMonitor:1059 : internal error process exited while 
connecting to monitor: Migration failed. Exit code fd:14(-22), exiting.








More information about the libvir-list mailing list