]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: blockjob: Remove error propagation from qemuBlockJobUpdateDisk
authorPeter Krempa <pkrempa@redhat.com>
Tue, 4 Dec 2018 12:51:46 +0000 (13:51 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 17 Jan 2019 16:12:50 +0000 (17:12 +0100)
The job error can be safely accessed in the job structure, so we don't
need to propagate it through qemuBlockJobUpdateDisk.

Drop the propagation and refactor any caller that pased non-NULL error.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_blockjob.c
src/qemu/qemu_blockjob.h
src/qemu/qemu_driver.c
src/qemu/qemu_migration.c

index ce4717a2d23e2da2bd191e7f046b54e97c08b578..7b9805641362fa43c3758cac8e54b3d83803a050 100644 (file)
@@ -343,23 +343,15 @@ qemuBlockJobEventProcessLegacy(virQEMUDriverPtr driver,
 int
 qemuBlockJobUpdateDisk(virDomainObjPtr vm,
                        int asyncJob,
-                       virDomainDiskDefPtr disk,
-                       char **error)
+                       virDomainDiskDefPtr disk)
 {
     qemuBlockJobDataPtr job = QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob;
     qemuDomainObjPrivatePtr priv = vm->privateData;
     int state = job->newstate;
 
-    if (error)
-        *error = NULL;
-
     if (state != -1) {
         qemuBlockJobEventProcessLegacy(priv->driver, vm, job, asyncJob);
         job->newstate = -1;
-        if (error)
-            VIR_STEAL_PTR(*error, job->errmsg);
-        else
-            VIR_FREE(job->errmsg);
     }
 
     return state;
@@ -410,6 +402,6 @@ qemuBlockJobSyncEndDisk(virDomainObjPtr vm,
                         virDomainDiskDefPtr disk)
 {
     VIR_DEBUG("disk=%s", disk->dst);
-    qemuBlockJobUpdateDisk(vm, asyncJob, disk, NULL);
+    qemuBlockJobUpdateDisk(vm, asyncJob, disk);
     QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob->synchronous = false;
 }
index a6a2f8b7c7f09cba48b759cfe3e3414a0e8d1003..7c82c28768a760d9cd41824fe1deba7caf3136b6 100644 (file)
@@ -98,8 +98,7 @@ qemuBlockJobStartupFinalize(qemuBlockJobDataPtr job);
 
 int qemuBlockJobUpdateDisk(virDomainObjPtr vm,
                            int asyncJob,
-                           virDomainDiskDefPtr disk,
-                           char **error);
+                           virDomainDiskDefPtr disk);
 
 void qemuBlockJobSyncBegin(qemuBlockJobDataPtr job);
 void qemuBlockJobSyncEndDisk(virDomainObjPtr vm,
index 2f78d1144d20e6c0faab9f0d79a1bd7f64d28552..df1a81f6991410a58c9613979492b13ed2b8d074 100644 (file)
@@ -4740,7 +4740,7 @@ processBlockJobEvent(virQEMUDriverPtr driver,
 
     job->newstate = status;
 
-    qemuBlockJobUpdateDisk(vm, QEMU_ASYNC_JOB_NONE, disk, NULL);
+    qemuBlockJobUpdateDisk(vm, QEMU_ASYNC_JOB_NONE, disk);
 
  endjob:
     qemuBlockJobStartupFinalize(job);
@@ -17445,13 +17445,13 @@ qemuDomainBlockJobAbort(virDomainPtr dom,
      * do the waiting while still holding the VM job, to prevent newly
      * scheduled block jobs from confusing us. */
     if (!async) {
-        qemuBlockJobUpdateDisk(vm, QEMU_ASYNC_JOB_NONE, disk, NULL);
+        qemuBlockJobUpdateDisk(vm, QEMU_ASYNC_JOB_NONE, disk);
         while (qemuBlockJobIsRunning(job)) {
             if (virDomainObjWait(vm) < 0) {
                 ret = -1;
                 goto endjob;
             }
-            qemuBlockJobUpdateDisk(vm, QEMU_ASYNC_JOB_NONE, disk, NULL);
+            qemuBlockJobUpdateDisk(vm, QEMU_ASYNC_JOB_NONE, disk);
         }
     }
 
index 97cb53fd651b9952cc7f6840683e6d0c26d62060..bf6209c15043d3b7938248ecf7fd62a4fa53bc1b 100644 (file)
@@ -464,13 +464,14 @@ qemuMigrationDstStopNBDServer(virQEMUDriverPtr driver,
 
 
 static void
-qemuMigrationNBDReportMirrorError(virDomainDiskDefPtr disk,
-                                  const char *errmsg)
+qemuMigrationNBDReportMirrorError(virDomainDiskDefPtr disk)
 {
-    if (errmsg) {
+    qemuBlockJobDataPtr job = QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob;
+
+    if (job->errmsg) {
         virReportError(VIR_ERR_OPERATION_FAILED,
                        _("migration of disk %s failed: %s"),
-                       disk->dst, errmsg);
+                       disk->dst, job->errmsg);
     } else {
         virReportError(VIR_ERR_OPERATION_FAILED,
                        _("migration of disk %s failed"), disk->dst);
@@ -500,17 +501,15 @@ qemuMigrationSrcNBDStorageCopyReady(virDomainObjPtr vm,
     for (i = 0; i < vm->def->ndisks; i++) {
         virDomainDiskDefPtr disk = vm->def->disks[i];
         qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
-        char *error = NULL;
 
         if (!diskPriv->migrating)
             continue;
 
-        status = qemuBlockJobUpdateDisk(vm, asyncJob, disk, &error);
+        status = qemuBlockJobUpdateDisk(vm, asyncJob, disk);
         if (status == VIR_DOMAIN_BLOCK_JOB_FAILED) {
-            qemuMigrationNBDReportMirrorError(disk, error);
+            qemuMigrationNBDReportMirrorError(disk);
             return -1;
         }
-        VIR_FREE(error);
 
         if (disk->mirrorState != VIR_DOMAIN_DISK_MIRROR_STATE_READY)
             notReady++;
@@ -551,16 +550,15 @@ qemuMigrationSrcNBDCopyCancelled(virDomainObjPtr vm,
     for (i = 0; i < vm->def->ndisks; i++) {
         virDomainDiskDefPtr disk = vm->def->disks[i];
         qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
-        char *error = NULL;
 
         if (!diskPriv->migrating)
             continue;
 
-        status = qemuBlockJobUpdateDisk(vm, asyncJob, disk, &error);
+        status = qemuBlockJobUpdateDisk(vm, asyncJob, disk);
         switch (status) {
         case VIR_DOMAIN_BLOCK_JOB_FAILED:
             if (check) {
-                qemuMigrationNBDReportMirrorError(disk, error);
+                qemuMigrationNBDReportMirrorError(disk);
                 failed = true;
             }
             ATTRIBUTE_FALLTHROUGH;
@@ -576,8 +574,6 @@ qemuMigrationSrcNBDCopyCancelled(virDomainObjPtr vm,
 
         if (status == VIR_DOMAIN_BLOCK_JOB_COMPLETED)
             completed++;
-
-        VIR_FREE(error);
     }
 
     /* Updating completed block job drops the lock thus we have to recheck
@@ -625,17 +621,16 @@ qemuMigrationSrcNBDCopyCancelOne(virQEMUDriverPtr driver,
 {
     qemuDomainObjPrivatePtr priv = vm->privateData;
     char *diskAlias = NULL;
-    char *error = NULL;
     int ret = -1;
     int status;
     int rv;
 
-    status = qemuBlockJobUpdateDisk(vm, asyncJob, disk, &error);
+    status = qemuBlockJobUpdateDisk(vm, asyncJob, disk);
     switch (status) {
     case VIR_DOMAIN_BLOCK_JOB_FAILED:
     case VIR_DOMAIN_BLOCK_JOB_CANCELED:
         if (failNoJob) {
-            qemuMigrationNBDReportMirrorError(disk, error);
+            qemuMigrationNBDReportMirrorError(disk);
             goto cleanup;
         }
         ATTRIBUTE_FALLTHROUGH;
@@ -659,7 +654,6 @@ qemuMigrationSrcNBDCopyCancelOne(virQEMUDriverPtr driver,
 
  cleanup:
     VIR_FREE(diskAlias);
-    VIR_FREE(error);
     return ret;
 }