goto endjob;
}
- if (qemuDomainObjEnterMonitorAsync(priv->driver, vm, QEMU_ASYNC_JOB_BACKUP) < 0)
- goto endjob;
- blockNamedNodeData = qemuMonitorBlockGetNamedNodeData(priv->mon);
- if (qemuDomainObjExitMonitor(priv->driver, vm) < 0 || !blockNamedNodeData)
+ if (!(blockNamedNodeData = qemuBlockGetNamedNodeData(vm, QEMU_ASYNC_JOB_BACKUP)))
goto endjob;
if ((ndd = qemuBackupDiskPrepareData(vm, def, incremental, blockNamedNodeData,
return NULL;
}
+
+
+virHashTablePtr
+qemuBlockGetNamedNodeData(virDomainObjPtr vm,
+ qemuDomainAsyncJob asyncJob)
+{
+ qemuDomainObjPrivatePtr priv = vm->privateData;
+ virQEMUDriverPtr driver = priv->driver;
+ g_autoptr(virHashTable) blockNamedNodeData = NULL;
+
+ if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
+ return NULL;
+
+ blockNamedNodeData = qemuMonitorBlockGetNamedNodeData(priv->mon);
+
+ if (qemuDomainObjExitMonitor(driver, vm) < 0 || !blockNamedNodeData)
+ return NULL;
+
+ return g_steal_pointer(&blockNamedNodeData);
+}
qemuBlockNamedNodeDataGetBitmapByName(virHashTablePtr blockNamedNodeData,
virStorageSourcePtr src,
const char *bitmap);
+
+virHashTablePtr
+qemuBlockGetNamedNodeData(virDomainObjPtr vm,
+ qemuDomainAsyncJob asyncJob);
if (!(actions = virJSONValueNewArray()))
return -1;
- if (blockdev) {
- if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
- return -1;
-
- blockNamedNodeData = qemuMonitorBlockGetNamedNodeData(priv->mon);
-
- if (qemuDomainObjExitMonitor(driver, vm) < 0 || !blockNamedNodeData)
- return -1;
- }
+ if (blockdev &&
+ !(blockNamedNodeData = qemuBlockGetNamedNodeData(vm, asyncJob)))
+ return -1;
/* prepare a list of objects to use in the vm definition so that we don't
* have to roll back later */
priv->qemuCaps)))
goto endjob;
} else {
- qemuDomainObjEnterMonitor(driver, vm);
- blockNamedNodeData = qemuMonitorBlockGetNamedNodeData(priv->mon);
- if (qemuDomainObjExitMonitor(driver, vm) < 0 || !blockNamedNodeData)
+ if (!(blockNamedNodeData = qemuBlockGetNamedNodeData(vm, QEMU_ASYNC_JOB_NONE)))
goto endjob;
if (qemuBlockStorageSourceCreateDetectSize(blockNamedNodeData,