[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