]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: blockjob: Add helper to convert monitor job status to internal state
authorPeter Krempa <pkrempa@redhat.com>
Mon, 10 Dec 2018 15:56:53 +0000 (16:56 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 18 Jul 2019 15:59:34 +0000 (17:59 +0200)
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

index 3186afccc2bece6329c4f3b5e6b373ad1ed267a1..d9e27e8cf6c18464fb7b7e6fa3161a353883c8f4 100644 (file)
@@ -516,3 +516,44 @@ qemuBlockJobGetByDisk(virDomainDiskDefPtr disk)
 
     return virObjectRef(job);
 }
+
+
+/**
+ * @monitorstatus: Status of the blockjob from qemu monitor (qemuMonitorJobStatus)
+ *
+ * Converts the block job status from the monitor to the one used by
+ * qemuBlockJobData. If the status is unknown or does not require any handling
+ * QEMU_BLOCKJOB_TYPE_LAST is returned.
+ */
+qemuBlockjobState
+qemuBlockjobConvertMonitorStatus(int monitorstatus)
+{
+    qemuBlockjobState ret = QEMU_BLOCKJOB_STATE_LAST;
+
+    switch ((qemuMonitorJobStatus) monitorstatus) {
+    case QEMU_MONITOR_JOB_STATUS_READY:
+        ret = QEMU_BLOCKJOB_STATE_READY;
+        break;
+
+    case QEMU_MONITOR_JOB_STATUS_CONCLUDED:
+        ret = QEMU_BLOCKJOB_STATE_CONCLUDED;
+        break;
+
+    case QEMU_MONITOR_JOB_STATUS_UNKNOWN:
+    case QEMU_MONITOR_JOB_STATUS_CREATED:
+    case QEMU_MONITOR_JOB_STATUS_RUNNING:
+    case QEMU_MONITOR_JOB_STATUS_PAUSED:
+    case QEMU_MONITOR_JOB_STATUS_STANDBY:
+    case QEMU_MONITOR_JOB_STATUS_WAITING:
+    case QEMU_MONITOR_JOB_STATUS_PENDING:
+    case QEMU_MONITOR_JOB_STATUS_ABORTING:
+    case QEMU_MONITOR_JOB_STATUS_UNDEFINED:
+    case QEMU_MONITOR_JOB_STATUS_NULL:
+    case QEMU_MONITOR_JOB_STATUS_LAST:
+    default:
+        break;
+    }
+
+    return ret;
+
+}
index 743f47ee896b1dc5728c2783c70d02224673283f..a558b0a5a24b52d4ded8e41b0c0bfbb2dfcf044b 100644 (file)
@@ -134,3 +134,6 @@ void qemuBlockJobSyncEnd(virDomainObjPtr vm,
 qemuBlockJobDataPtr
 qemuBlockJobGetByDisk(virDomainDiskDefPtr disk)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
+
+qemuBlockjobState
+qemuBlockjobConvertMonitorStatus(int monitorstatus);