[libvirt] [PATCH 2/2] qemu: Forbid migration of machines with I/O errors

Michal Privoznik mprivozn at redhat.com
Tue Jun 11 12:40:07 UTC 2013


On 11.06.2013 14:39, Peter Krempa wrote:
> On 06/11/13 14:05, Michal Privoznik wrote:
>> On 11.06.2013 11:49, Peter Krempa wrote:
>>> Such machine can't be successuflly migrated unles the I/O error has
>>> recovered and might lead to data corruption. Forbid this kind of
>>> migration.
>>> ---
>>>   src/qemu/qemu_migration.c | 10 ++++++++++
>>>   1 file changed, 10 insertions(+)
>>>
>>> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
>>> index 8e57521..97daaa0 100644
>>> --- a/src/qemu/qemu_migration.c
>>> +++ b/src/qemu/qemu_migration.c
>>> @@ -1423,6 +1423,7 @@ qemuMigrationIsAllowed(virQEMUDriverPtr driver,
>>> virDomainObjPtr vm,
>>>                          virDomainDefPtr def, bool remote)
>>>   {
>>>       int nsnapshots;
>>> +    int pauseReason;
>>>       bool forbid;
>>>       int i;
>>>
>>> @@ -1445,6 +1446,15 @@ qemuMigrationIsAllowed(virQEMUDriverPtr
>>> driver, virDomainObjPtr vm,
>>>                                  nsnapshots);
>>>                   return false;
>>>               }
>>> +
>>> +            /* cancel migration if disk I/O error is emitted while
>>> migrating */
>>> +            if (virDomainObjGetState(vm, &pauseReason) ==
>>> VIR_DOMAIN_PAUSED &&
>>> +                pauseReason == VIR_DOMAIN_PAUSED_IOERROR) {
>>> +                virReportError(VIR_ERR_OPERATION_INVALID, "%s",
>>> +                               _("cannot migrate domain with I/O
>>> error"));
>>> +                return false;
>>> +            }
>>> +
>>>           }
>>>
>>>           if (virDomainHasDiskMirror(vm)) {
>>>
>>
>> Do we want to document this behaviour change?
> 
> How about:
> 
> diff --git a/src/libvirt.c b/src/libvirt.c
> index 620dbdd..6413a1e 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -5809,41 +5809,42 @@ error:
>   * guest ABI,
>   *
>   * If a hypervisor supports renaming domains during migration,
>   * the dname parameter specifies the new name for the domain.
>   * Setting dname to NULL keeps the domain name the same.  If domain
>   * renaming is not supported by the hypervisor, dname must be NULL or
>   * else an error will be returned.
>   *
>   * The maximum bandwidth (in MiB/s) that will be used to do migration
>   * can be specified with the bandwidth parameter.  If set to 0,
>   * libvirt will choose a suitable default.  Some hypervisors do
>   * not support this feature and will return an error if bandwidth
>   * is not 0.
>   *
>   * To see which features are supported by the current hypervisor,
>   * see virConnectGetCapabilities, /capabilities/host/migration_features.
>   *
>   * There are many limitations on migration imposed by the underlying
>   * technology - for example it may not be possible to migrate between
>   * different processors even with the same architecture, or between
> - * different types of hypervisor.
> + * different types of hypervisor. Migration of domains that encountered
> + * errors may not be possible.

And continue with: "Moreover, in case of I/O error, depending on
hypervisor the migration may be canceled."

ACK

Michal




More information about the libvir-list mailing list