if (priv) {
mon->objectAddNoWrap = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_JSON);
mon->queryNamedBlockNodesFlat = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_QMP_QUERY_NAMED_BLOCK_NODES_FLAT);
+ mon->blockjobMaskProtocol = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKJOB_BACKING_MASK_PROTOCOL);
}
if (virSetCloseExec(mon->fd) < 0) {
g_autoptr(virJSONValue) cmd = NULL;
g_autoptr(virJSONValue) reply = NULL;
virTristateBool autodismiss = VIR_TRISTATE_BOOL_NO;
+ virTristateBool backingProtocol = VIR_TRISTATE_BOOL_ABSENT;
+
+ if (mon->blockjobMaskProtocol)
+ backingProtocol = VIR_TRISTATE_BOOL_YES;
cmd = qemuMonitorJSONMakeCommand("block-commit",
"s:device", device,
"S:backing-file", backingName,
"T:auto-finalize", autofinalize,
"T:auto-dismiss", autodismiss,
+ "T:backing-mask-protocol", backingProtocol,
NULL);
if (!cmd)
return -1;
g_autoptr(virJSONValue) reply = NULL;
virTristateBool autofinalize = VIR_TRISTATE_BOOL_YES;
virTristateBool autodismiss = VIR_TRISTATE_BOOL_NO;
+ virTristateBool backingProtocol = VIR_TRISTATE_BOOL_ABSENT;
+
+ if (mon->blockjobMaskProtocol)
+ backingProtocol = VIR_TRISTATE_BOOL_YES;
if (!(cmd = qemuMonitorJSONMakeCommand("block-stream",
"s:device", device,
"S:backing-file", backingName,
"T:auto-finalize", autofinalize,
"T:auto-dismiss", autodismiss,
+ "T:backing-mask-protocol", backingProtocol,
NULL)))
return -1;