}
+static void
+qemuMigrationNBDReportMirrorError(virDomainDiskDefPtr disk,
+ const char *errmsg)
+{
+ if (errmsg) {
+ virReportError(VIR_ERR_OPERATION_FAILED,
+ _("migration of disk %s failed: %s"),
+ disk->dst, errmsg);
+ } else {
+ virReportError(VIR_ERR_OPERATION_FAILED,
+ _("migration of disk %s failed"), disk->dst);
+ }
+}
+
+
/**
* qemuMigrationSrcNBDStorageCopyReady:
* @vm: domain
status = qemuBlockJobUpdateDisk(vm, asyncJob, disk, &error);
if (status == VIR_DOMAIN_BLOCK_JOB_FAILED) {
- if (error) {
- virReportError(VIR_ERR_OPERATION_FAILED,
- _("migration of disk %s failed: %s"),
- disk->dst, error);
- VIR_FREE(error);
- } else {
- virReportError(VIR_ERR_OPERATION_FAILED,
- _("migration of disk %s failed"), disk->dst);
- }
+ qemuMigrationNBDReportMirrorError(disk, error);
return -1;
}
VIR_FREE(error);
switch (status) {
case VIR_DOMAIN_BLOCK_JOB_FAILED:
if (check) {
- if (error) {
- virReportError(VIR_ERR_OPERATION_FAILED,
- _("migration of disk %s failed: %s"),
- disk->dst, error);
- } else {
- virReportError(VIR_ERR_OPERATION_FAILED,
- _("migration of disk %s failed"), disk->dst);
- }
+ qemuMigrationNBDReportMirrorError(disk, error);
failed = true;
}
ATTRIBUTE_FALLTHROUGH;
case VIR_DOMAIN_BLOCK_JOB_FAILED:
case VIR_DOMAIN_BLOCK_JOB_CANCELED:
if (failNoJob) {
- if (error) {
- virReportError(VIR_ERR_OPERATION_FAILED,
- _("migration of disk %s failed: %s"),
- disk->dst, error);
- } else {
- virReportError(VIR_ERR_OPERATION_FAILED,
- _("migration of disk %s failed"), disk->dst);
- }
+ qemuMigrationNBDReportMirrorError(disk, error);
goto cleanup;
}
ATTRIBUTE_FALLTHROUGH;