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