Devel
Threads by month
- ----- 2026 -----
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- 19 participants
- 40176 discussions
Pavel Hrdina (3):
qemu_snapshot: remove memory snapshot when deleting external snapshot
qemu_snapshot: refactor qemuSnapshotDeleteExternalPrepare
NEWS: document external memory snapshot bug fixes
NEWS.rst | 7 +++++++
src/qemu/qemu_snapshot.c | 42 ++++++++++++++++++++++++++--------------
2 files changed, 34 insertions(+), 15 deletions(-)
--
2.39.1
2
6
v1 here:
https://listman.redhat.com/archives/libvir-list/2023-February/237622.html
diff to v1:
* reduced test files (thanks Andrea)
* removed redundant check for address type (noticed by Peter)
* plugging the device directly into pcie.0 if its address was not
specified
Kristina Hanicova (6):
qemu: introduce QEMU_CAPS_DEVICE_PANIC_PCI
conf: add panic model 'pvpanic'
tests: add test cases for device pvpanic-pci
qemu: assign PCI address to device pvpanic-pci
tests: add case for pvpanic-pci without address
docs: document panic device 'pvpanic-pci'
docs/formatdomain.rst | 1 +
src/conf/domain_conf.c | 1 +
src/conf/domain_conf.h | 1 +
src/conf/schemas/domaincommon.rng | 1 +
src/qemu/qemu_capabilities.c | 2 ++
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 17 +++++++++
src/qemu/qemu_domain_address.c | 34 +++++++++++++++++-
src/qemu/qemu_validate.c | 14 ++++++++
.../caps_6.0.0.aarch64.xml | 1 +
.../caps_6.0.0.x86_64.xml | 1 +
.../caps_6.1.0.x86_64.xml | 1 +
.../caps_6.2.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 1 +
.../caps_6.2.0.x86_64.xml | 1 +
.../caps_7.0.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 1 +
.../caps_7.0.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_7.1.0.ppc64.xml | 1 +
.../caps_7.1.0.x86_64.xml | 1 +
.../caps_7.2.0.x86_64.xml | 1 +
.../caps_8.0.0.riscv64.xml | 1 +
.../caps_8.0.0.x86_64.xml | 1 +
.../pvpanic-pci-aarch64.aarch64-latest.args | 36 +++++++++++++++++++
.../qemuxml2argvdata/pvpanic-pci-aarch64.xml | 20 +++++++++++
...invalid-address-aarch64.aarch64-latest.err | 1 +
.../pvpanic-pci-invalid-address-aarch64.xml | 20 +++++++++++
...pci-no-address-aarch64.aarch64-latest.args | 36 +++++++++++++++++++
.../pvpanic-pci-no-address-aarch64.xml | 18 ++++++++++
.../pvpanic-pci-x86_64.x86_64-latest.args | 34 ++++++++++++++++++
tests/qemuxml2argvdata/pvpanic-pci-x86_64.xml | 24 +++++++++++++
tests/qemuxml2argvtest.c | 5 +++
.../pvpanic-pci-aarch64.aarch64-latest.xml | 32 +++++++++++++++++
...-pci-no-address-aarch64.aarch64-latest.xml | 32 +++++++++++++++++
.../pvpanic-pci-x86_64.x86_64-latest.xml | 32 +++++++++++++++++
tests/qemuxml2xmltest.c | 4 +++
36 files changed, 379 insertions(+), 1 deletion(-)
create mode 100644 tests/qemuxml2argvdata/pvpanic-pci-aarch64.aarch64-latest.args
create mode 100644 tests/qemuxml2argvdata/pvpanic-pci-aarch64.xml
create mode 100644 tests/qemuxml2argvdata/pvpanic-pci-invalid-address-aarch64.aarch64-latest.err
create mode 100644 tests/qemuxml2argvdata/pvpanic-pci-invalid-address-aarch64.xml
create mode 100644 tests/qemuxml2argvdata/pvpanic-pci-no-address-aarch64.aarch64-latest.args
create mode 100644 tests/qemuxml2argvdata/pvpanic-pci-no-address-aarch64.xml
create mode 100644 tests/qemuxml2argvdata/pvpanic-pci-x86_64.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/pvpanic-pci-x86_64.xml
create mode 100644 tests/qemuxml2xmloutdata/pvpanic-pci-aarch64.aarch64-latest.xml
create mode 100644 tests/qemuxml2xmloutdata/pvpanic-pci-no-address-aarch64.aarch64-latest.xml
create mode 100644 tests/qemuxml2xmloutdata/pvpanic-pci-x86_64.x86_64-latest.xml
--
2.39.1
2
8
Some minor docs/rpm issues found in testing
Daniel P. Berrangé (3):
docs: refer to --firmware instead of --loader
rpm: add missing deps for the virt-qemu-sev-validate
docs/kbase: fix example for SEV validation
docs/kbase/launch_security_sev.rst | 13 +++++++------
docs/manpages/virt-qemu-sev-validate.rst | 4 ++--
libvirt.spec.in | 2 ++
3 files changed, 11 insertions(+), 8 deletions(-)
--
2.39.2
2
4
[PATCH] tests: qemucapabilitiesdata: Update for the qemu-8.0 development cycle
by Peter Krempa 21 Feb '23
by Peter Krempa 21 Feb '23
21 Feb '23
Update to v7.2.0-1550-g79b677d658:
Notable changes:
- the 'stream' netdev backend supports 'reconnect'
- 'ide-cf' device added
- 'sgx-aex-notify' and 'sgx-edeccssa' cpu properties added
- 'pvrdma' device added
- 'qio-channel-rdma' channel added
- 'query-audiodevs` command added
- block graph info changes
- added specific information for 'file' node ('extent-size-hint')
- format specific info for 'vmdk' nodes changed
- 'query-migrationthreads' command added
- deprecated 'sga' device removed
- deprecated 'password' option of SPICE protocol removed
- deprecated 'section-size' property of return value of 'query-sgx'
removed
- 'x-early-migration' property for 'virtio-mem' added
- 'x-native-hotplug' renamed to 'x-do-not-expose-native-hotplug-cap'
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
.../caps_8.0.0.x86_64.replies | 3746 ++++++++++-------
.../caps_8.0.0.x86_64.xml | 6 +-
2 files changed, 2291 insertions(+), 1461 deletions(-)
diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies
index c3525f1bf8..a41b3e1825 100644
--- a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.replies
@@ -21,7 +21,7 @@
"minor": 2,
"major": 7
},
- "package": "v7.2.0-333-g222059a0fc"
+ "package": "v7.2.0-1550-g79b677d658"
},
"id": "libvirt-2"
}
@@ -1059,57 +1059,63 @@
"meta-type": "command",
"arg-type": "0"
},
+ {
+ "name": "query-migrationthreads",
+ "ret-type": "[165]",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
{
"name": "snapshot-save",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "165"
+ "arg-type": "166"
},
{
"name": "snapshot-load",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "166"
+ "arg-type": "167"
},
{
"name": "snapshot-delete",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "167"
+ "arg-type": "168"
},
{
"name": "transaction",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "168"
+ "arg-type": "169"
},
{
"name": "trace-event-get-state",
- "ret-type": "[170]",
+ "ret-type": "[171]",
"meta-type": "command",
- "arg-type": "169"
+ "arg-type": "170"
},
{
"name": "trace-event-set-state",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "171"
+ "arg-type": "172"
},
{
"name": "qmp_capabilities",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "172"
+ "arg-type": "173"
},
{
"name": "query-version",
- "ret-type": "173",
+ "ret-type": "174",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-commands",
- "ret-type": "[174]",
+ "ret-type": "[175]",
"meta-type": "command",
"arg-type": "0"
},
@@ -1121,63 +1127,63 @@
},
{
"name": "query-qmp-schema",
- "ret-type": "[175]",
+ "ret-type": "[176]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "qom-list",
- "ret-type": "[177]",
+ "ret-type": "[178]",
"meta-type": "command",
- "arg-type": "176"
+ "arg-type": "177"
},
{
"name": "qom-get",
"ret-type": "any",
"meta-type": "command",
- "arg-type": "178"
+ "arg-type": "179"
},
{
"name": "qom-set",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "179"
+ "arg-type": "180"
},
{
"name": "qom-list-types",
- "ret-type": "[181]",
+ "ret-type": "[182]",
"meta-type": "command",
- "arg-type": "180"
+ "arg-type": "181"
},
{
"name": "qom-list-properties",
- "ret-type": "[177]",
+ "ret-type": "[178]",
"meta-type": "command",
- "arg-type": "182"
+ "arg-type": "183"
},
{
"name": "object-add",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "183"
+ "arg-type": "184"
},
{
"name": "object-del",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "184"
+ "arg-type": "185"
},
{
"name": "device-list-properties",
- "ret-type": "[177]",
+ "ret-type": "[178]",
"meta-type": "command",
- "arg-type": "185"
+ "arg-type": "186"
},
{
"name": "device_add",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "186",
+ "arg-type": "187",
"features": [
"json-cli",
"json-cli-hotplug"
@@ -1187,51 +1193,51 @@
"name": "device_del",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "187"
+ "arg-type": "188"
},
{
"name": "DEVICE_DELETED",
"meta-type": "event",
- "arg-type": "188"
+ "arg-type": "189"
},
{
"name": "DEVICE_UNPLUG_GUEST_ERROR",
"meta-type": "event",
- "arg-type": "189"
+ "arg-type": "190"
},
{
"name": "query-cpus-fast",
- "ret-type": "[190]",
+ "ret-type": "[191]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-machines",
- "ret-type": "[191]",
+ "ret-type": "[192]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-current-machine",
- "ret-type": "192",
+ "ret-type": "193",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-target",
- "ret-type": "193",
+ "ret-type": "194",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-uuid",
- "ret-type": "194",
+ "ret-type": "195",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-vm-generation-id",
- "ret-type": "195",
+ "ret-type": "196",
"meta-type": "command",
"arg-type": "0"
},
@@ -1261,7 +1267,7 @@
},
{
"name": "query-kvm",
- "ret-type": "196",
+ "ret-type": "197",
"meta-type": "command",
"arg-type": "0"
},
@@ -1269,23 +1275,23 @@
"name": "memsave",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "197"
+ "arg-type": "198"
},
{
"name": "pmemsave",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "198"
+ "arg-type": "199"
},
{
"name": "query-memdev",
- "ret-type": "[199]",
+ "ret-type": "[200]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-hotpluggable-cpus",
- "ret-type": "[200]",
+ "ret-type": "[201]",
"meta-type": "command",
"arg-type": "0"
},
@@ -1293,53 +1299,53 @@
"name": "set-numa-node",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "201"
+ "arg-type": "202"
},
{
"name": "balloon",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "202"
+ "arg-type": "203"
},
{
"name": "query-balloon",
- "ret-type": "203",
+ "ret-type": "204",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "BALLOON_CHANGE",
"meta-type": "event",
- "arg-type": "204"
+ "arg-type": "205"
},
{
"name": "query-memory-size-summary",
- "ret-type": "205",
+ "ret-type": "206",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-memory-devices",
- "ret-type": "[206]",
+ "ret-type": "[207]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "MEMORY_DEVICE_SIZE_CHANGE",
"meta-type": "event",
- "arg-type": "207"
+ "arg-type": "208"
},
{
"name": "MEM_UNPLUG_ERROR",
"meta-type": "event",
- "arg-type": "208",
+ "arg-type": "209",
"features": [
"deprecated"
]
},
{
"name": "x-query-irq",
- "ret-type": "209",
+ "ret-type": "210",
"meta-type": "command",
"arg-type": "0",
"features": [
@@ -1348,7 +1354,7 @@
},
{
"name": "x-query-jit",
- "ret-type": "209",
+ "ret-type": "210",
"meta-type": "command",
"arg-type": "0",
"features": [
@@ -1357,7 +1363,7 @@
},
{
"name": "x-query-numa",
- "ret-type": "209",
+ "ret-type": "210",
"meta-type": "command",
"arg-type": "0",
"features": [
@@ -1366,7 +1372,7 @@
},
{
"name": "x-query-opcount",
- "ret-type": "209",
+ "ret-type": "210",
"meta-type": "command",
"arg-type": "0",
"features": [
@@ -1375,7 +1381,7 @@
},
{
"name": "x-query-profile",
- "ret-type": "209",
+ "ret-type": "210",
"meta-type": "command",
"arg-type": "0",
"features": [
@@ -1384,7 +1390,7 @@
},
{
"name": "x-query-ramblock",
- "ret-type": "209",
+ "ret-type": "210",
"meta-type": "command",
"arg-type": "0",
"features": [
@@ -1393,7 +1399,7 @@
},
{
"name": "x-query-rdma",
- "ret-type": "209",
+ "ret-type": "210",
"meta-type": "command",
"arg-type": "0",
"features": [
@@ -1402,7 +1408,7 @@
},
{
"name": "x-query-roms",
- "ret-type": "209",
+ "ret-type": "210",
"meta-type": "command",
"arg-type": "0",
"features": [
@@ -1411,7 +1417,7 @@
},
{
"name": "x-query-usb",
- "ret-type": "209",
+ "ret-type": "210",
"meta-type": "command",
"arg-type": "0",
"features": [
@@ -1422,23 +1428,23 @@
"name": "dumpdtb",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "210"
+ "arg-type": "211"
},
{
"name": "query-cpu-model-expansion",
- "ret-type": "216",
+ "ret-type": "217",
"meta-type": "command",
- "arg-type": "215"
+ "arg-type": "216"
},
{
"name": "query-cpu-definitions",
- "ret-type": "[217]",
+ "ret-type": "[218]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-replay",
- "ret-type": "218",
+ "ret-type": "219",
"meta-type": "command",
"arg-type": "0"
},
@@ -1446,7 +1452,7 @@
"name": "replay-break",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "219"
+ "arg-type": "220"
},
{
"name": "replay-delete-break",
@@ -1458,18 +1464,18 @@
"name": "replay-seek",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "220"
+ "arg-type": "221"
},
{
"name": "yank",
"ret-type": "0",
"allow-oob": true,
"meta-type": "command",
- "arg-type": "221"
+ "arg-type": "222"
},
{
"name": "query-yank",
- "ret-type": "[222]",
+ "ret-type": "[223]",
"allow-oob": true,
"meta-type": "command",
"arg-type": "0"
@@ -1478,17 +1484,17 @@
"name": "add_client",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "223"
+ "arg-type": "224"
},
{
"name": "query-name",
- "ret-type": "224",
+ "ret-type": "225",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-iothreads",
- "ret-type": "[225]",
+ "ret-type": "[226]",
"meta-type": "command",
"arg-type": "0"
},
@@ -1517,7 +1523,7 @@
"name": "human-monitor-command",
"ret-type": "str",
"meta-type": "command",
- "arg-type": "226",
+ "arg-type": "227",
"features": [
"savevm-monitor-nodes"
]
@@ -1526,47 +1532,47 @@
"name": "getfd",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "227"
+ "arg-type": "228"
},
{
"name": "closefd",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "228"
+ "arg-type": "229"
},
{
"name": "add-fd",
- "ret-type": "230",
+ "ret-type": "231",
"meta-type": "command",
- "arg-type": "229"
+ "arg-type": "230"
},
{
"name": "remove-fd",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "231"
+ "arg-type": "232"
},
{
"name": "query-fdsets",
- "ret-type": "[232]",
+ "ret-type": "[233]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-command-line-options",
- "ret-type": "[234]",
+ "ret-type": "[235]",
"meta-type": "command",
- "arg-type": "233"
+ "arg-type": "234"
},
{
"name": "RTC_CHANGE",
"meta-type": "event",
- "arg-type": "235"
+ "arg-type": "236"
},
{
"name": "VFU_CLIENT_HANGUP",
"meta-type": "event",
- "arg-type": "236"
+ "arg-type": "237"
},
{
"name": "rtc-reset-reinjection",
@@ -1576,19 +1582,19 @@
},
{
"name": "query-sev",
- "ret-type": "237",
+ "ret-type": "238",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-sev-launch-measure",
- "ret-type": "238",
+ "ret-type": "239",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-sev-capabilities",
- "ret-type": "239",
+ "ret-type": "240",
"meta-type": "command",
"arg-type": "0"
},
@@ -1596,58 +1602,64 @@
"name": "sev-inject-launch-secret",
"ret-type": "0",
"meta-type": "command",
- "arg-type": "240"
+ "arg-type": "241"
},
{
"name": "query-sev-attestation-report",
- "ret-type": "242",
+ "ret-type": "243",
"meta-type": "command",
- "arg-type": "241"
+ "arg-type": "242"
},
{
"name": "query-sgx",
- "ret-type": "245",
+ "ret-type": "246",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-sgx-capabilities",
- "ret-type": "245",
+ "ret-type": "246",
+ "meta-type": "command",
+ "arg-type": "0"
+ },
+ {
+ "name": "query-audiodevs",
+ "ret-type": "[247]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-acpi-ospm-status",
- "ret-type": "[246]",
+ "ret-type": "[248]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "ACPI_DEVICE_OST",
"meta-type": "event",
- "arg-type": "247"
+ "arg-type": "249"
},
{
"name": "query-pci",
- "ret-type": "[248]",
+ "ret-type": "[250]",
"meta-type": "command",
"arg-type": "0"
},
{
"name": "query-stats",
- "ret-type": "[250]",
+ "ret-type": "[252]",
"meta-type": "command",
- "arg-type": "249"
+ "arg-type": "251"
},
{
"name": "query-stats-schemas",
- "ret-type": "[252]",
+ "ret-type": "[254]",
"meta-type": "command",
- "arg-type": "251"
+ "arg-type": "253"
},
{
"name": "x-query-virtio",
- "ret-type": "[253]",
+ "ret-type": "[255]",
"meta-type": "command",
"arg-type": "0",
"features": [
@@ -1656,36 +1668,36 @@
},
{
"name": "x-query-virtio-status",
- "ret-type": "255",
+ "ret-type": "257",
"meta-type": "command",
- "arg-type": "254",
+ "arg-type": "256",
"features": [
"unstable"
]
},
{
"name": "x-query-virtio-queue-status",
- "ret-type": "257",
+ "ret-type": "259",
"meta-type": "command",
- "arg-type": "256",
+ "arg-type": "258",
"features": [
"unstable"
]
},
{
"name": "x-query-virtio-vhost-queue-status",
- "ret-type": "259",
+ "ret-type": "261",
"meta-type": "command",
- "arg-type": "258",
+ "arg-type": "260",
"features": [
"unstable"
]
},
{
"name": "x-query-virtio-queue-element",
- "ret-type": "261",
+ "ret-type": "263",
"meta-type": "command",
- "arg-type": "260",
+ "arg-type": "262",
"features": [
"unstable"
]
@@ -1709,7 +1721,7 @@
},
{
"name": "status",
- "type": "262"
+ "type": "264"
}
],
"meta-type": "object"
@@ -1723,7 +1735,7 @@
},
{
"name": "reason",
- "type": "263"
+ "type": "265"
}
],
"meta-type": "object"
@@ -1737,7 +1749,7 @@
},
{
"name": "reason",
- "type": "263"
+ "type": "265"
}
],
"meta-type": "object"
@@ -1747,7 +1759,7 @@
"members": [
{
"name": "action",
- "type": "264"
+ "type": "266"
}
],
"meta-type": "object"
@@ -1757,7 +1769,7 @@
"members": [
{
"name": "action",
- "type": "264"
+ "type": "266"
}
],
"meta-type": "object"
@@ -1768,22 +1780,22 @@
{
"name": "reboot",
"default": null,
- "type": "265"
+ "type": "267"
},
{
"name": "shutdown",
"default": null,
- "type": "266"
+ "type": "268"
},
{
"name": "panic",
"default": null,
- "type": "267"
+ "type": "269"
},
{
"name": "watchdog",
"default": null,
- "type": "264"
+ "type": "266"
}
],
"meta-type": "object"
@@ -1793,12 +1805,12 @@
"members": [
{
"name": "action",
- "type": "268"
+ "type": "270"
},
{
"name": "info",
"default": null,
- "type": "269"
+ "type": "271"
}
],
"meta-type": "object"
@@ -1808,12 +1820,12 @@
"members": [
{
"name": "action",
- "type": "268"
+ "type": "270"
},
{
"name": "info",
"default": null,
- "type": "269"
+ "type": "271"
}
],
"meta-type": "object"
@@ -1823,15 +1835,15 @@
"members": [
{
"name": "recipient",
- "type": "270"
+ "type": "272"
},
{
"name": "action",
- "type": "271"
+ "type": "273"
},
{
"name": "flags",
- "type": "272"
+ "type": "274"
}
],
"meta-type": "object"
@@ -1979,7 +1991,7 @@
{
"name": "read-only-mode",
"default": null,
- "type": "273"
+ "type": "275"
}
],
"meta-type": "object"
@@ -2201,7 +2213,7 @@
{
"name": "io-status",
"default": null,
- "type": "274"
+ "type": "276"
}
],
"meta-type": "object"
@@ -2242,12 +2254,12 @@
},
{
"name": "stats",
- "type": "275"
+ "type": "277"
},
{
"name": "driver-specific",
"default": null,
- "type": "276"
+ "type": "278"
},
{
"name": "parent",
@@ -2300,7 +2312,7 @@
},
{
"name": "io-status",
- "type": "274"
+ "type": "276"
},
{
"name": "ready",
@@ -2308,7 +2320,7 @@
},
{
"name": "status",
- "type": "277"
+ "type": "279"
},
{
"name": "auto-finalize",
@@ -2376,7 +2388,7 @@
{
"name": "mode",
"default": null,
- "type": "278"
+ "type": "280"
}
],
"meta-type": "object"
@@ -2464,7 +2476,7 @@
{
"name": "on-error",
"default": null,
- "type": "279"
+ "type": "281"
},
{
"name": "filter-node-name",
@@ -2498,7 +2510,7 @@
},
{
"name": "sync",
- "type": "280"
+ "type": "282"
},
{
"name": "speed",
@@ -2513,7 +2525,7 @@
{
"name": "bitmap-mode",
"default": null,
- "type": "281"
+ "type": "283"
},
{
"name": "compress",
@@ -2523,12 +2535,12 @@
{
"name": "on-source-error",
"default": null,
- "type": "279"
+ "type": "281"
},
{
"name": "on-target-error",
"default": null,
- "type": "279"
+ "type": "281"
},
{
"name": "auto-finalize",
@@ -2548,7 +2560,7 @@
{
"name": "x-perf",
"default": null,
- "type": "282",
+ "type": "284",
"features": [
"unstable"
]
@@ -2565,7 +2577,7 @@
{
"name": "mode",
"default": null,
- "type": "278"
+ "type": "280"
}
],
"meta-type": "object"
@@ -2584,7 +2596,7 @@
},
{
"name": "sync",
- "type": "280"
+ "type": "282"
},
{
"name": "speed",
@@ -2599,7 +2611,7 @@
{
"name": "bitmap-mode",
"default": null,
- "type": "281"
+ "type": "283"
},
{
"name": "compress",
@@ -2609,12 +2621,12 @@
{
"name": "on-source-error",
"default": null,
- "type": "279"
+ "type": "281"
},
{
"name": "on-target-error",
"default": null,
- "type": "279"
+ "type": "281"
},
{
"name": "auto-finalize",
@@ -2634,7 +2646,7 @@
{
"name": "x-perf",
"default": null,
- "type": "282",
+ "type": "284",
"features": [
"unstable"
]
@@ -2697,7 +2709,7 @@
},
{
"name": "detect_zeroes",
- "type": "283"
+ "type": "285"
},
{
"name": "bps",
@@ -2725,7 +2737,7 @@
},
{
"name": "image",
- "type": "284"
+ "type": "286"
},
{
"name": "bps_max",
@@ -2799,7 +2811,7 @@
},
{
"name": "cache",
- "type": "285"
+ "type": "287"
},
{
"name": "write_threshold",
@@ -2808,7 +2820,7 @@
{
"name": "dirty-bitmaps",
"default": null,
- "type": "[286]"
+ "type": "[288]"
}
],
"meta-type": "object"
@@ -2818,11 +2830,11 @@
"members": [
{
"name": "nodes",
- "type": "[287]"
+ "type": "[289]"
},
{
"name": "edges",
- "type": "[288]"
+ "type": "[290]"
}
],
"meta-type": "object"
@@ -2860,12 +2872,12 @@
},
{
"name": "sync",
- "type": "280"
+ "type": "282"
},
{
"name": "mode",
"default": null,
- "type": "278"
+ "type": "280"
},
{
"name": "speed",
@@ -2885,12 +2897,12 @@
{
"name": "on-source-error",
"default": null,
- "type": "279"
+ "type": "281"
},
{
"name": "on-target-error",
"default": null,
- "type": "279"
+ "type": "281"
},
{
"name": "unmap",
@@ -2900,7 +2912,7 @@
{
"name": "copy-mode",
"default": null,
- "type": "289"
+ "type": "291"
},
{
"name": "auto-finalize",
@@ -2971,7 +2983,7 @@
},
{
"name": "bitmaps",
- "type": "[290]"
+ "type": "[292]"
}
],
"meta-type": "object"
@@ -3009,7 +3021,7 @@
},
{
"name": "sync",
- "type": "280"
+ "type": "282"
},
{
"name": "speed",
@@ -3029,12 +3041,12 @@
{
"name": "on-source-error",
"default": null,
- "type": "279"
+ "type": "281"
},
{
"name": "on-target-error",
"default": null,
- "type": "279"
+ "type": "281"
},
{
"name": "filter-node-name",
@@ -3044,7 +3056,7 @@
{
"name": "copy-mode",
"default": null,
- "type": "289"
+ "type": "291"
},
{
"name": "auto-finalize",
@@ -3099,7 +3111,7 @@
{
"name": "on-error",
"default": null,
- "type": "279"
+ "type": "281"
},
{
"name": "filter-node-name",
@@ -3204,197 +3216,197 @@
"variants": [
{
"case": "blkdebug",
- "type": "294"
+ "type": "296"
},
{
"case": "blklogwrites",
- "type": "295"
+ "type": "297"
},
{
"case": "blkverify",
- "type": "296"
+ "type": "298"
},
{
"case": "blkreplay",
- "type": "297"
+ "type": "299"
},
{
"case": "bochs",
- "type": "298"
+ "type": "300"
},
{
"case": "cloop",
- "type": "298"
+ "type": "300"
},
{
"case": "compress",
- "type": "298"
+ "type": "300"
},
{
"case": "copy-before-write",
- "type": "299"
+ "type": "301"
},
{
"case": "copy-on-read",
- "type": "300"
+ "type": "302"
},
{
"case": "dmg",
- "type": "298"
+ "type": "300"
},
{
"case": "file",
- "type": "301"
+ "type": "303"
},
{
"case": "ftp",
- "type": "302"
+ "type": "304"
},
{
"case": "ftps",
- "type": "303"
+ "type": "305"
},
{
"case": "gluster",
- "type": "304"
+ "type": "306"
},
{
"case": "host_cdrom",
- "type": "301"
+ "type": "303"
},
{
"case": "host_device",
- "type": "301"
+ "type": "303"
},
{
"case": "http",
- "type": "305"
+ "type": "307"
},
{
"case": "https",
- "type": "306"
+ "type": "308"
},
{
"case": "io_uring",
- "type": "307"
+ "type": "309"
},
{
"case": "iscsi",
- "type": "308"
+ "type": "310"
},
{
"case": "luks",
- "type": "309"
+ "type": "311"
},
{
"case": "nbd",
- "type": "310"
+ "type": "312"
},
{
"case": "nfs",
- "type": "311"
+ "type": "313"
},
{
"case": "null-aio",
- "type": "312"
+ "type": "314"
},
{
"case": "null-co",
- "type": "312"
+ "type": "314"
},
{
"case": "nvme",
- "type": "313"
+ "type": "315"
},
{
"case": "nvme-io_uring",
- "type": "314"
+ "type": "316"
},
{
"case": "parallels",
- "type": "298"
+ "type": "300"
},
{
"case": "preallocate",
- "type": "315"
+ "type": "317"
},
{
"case": "qcow2",
- "type": "316"
+ "type": "318"
},
{
"case": "qcow",
- "type": "317"
+ "type": "319"
},
{
"case": "qed",
- "type": "318"
+ "type": "320"
},
{
"case": "quorum",
- "type": "319"
+ "type": "321"
},
{
"case": "raw",
- "type": "320"
+ "type": "322"
},
{
"case": "rbd",
- "type": "321"
+ "type": "323"
},
{
"case": "replication",
- "type": "322"
+ "type": "324"
},
{
"case": "snapshot-access",
- "type": "298"
+ "type": "300"
},
{
"case": "ssh",
- "type": "323"
+ "type": "325"
},
{
"case": "throttle",
- "type": "324"
+ "type": "326"
},
{
"case": "vdi",
- "type": "298"
+ "type": "300"
},
{
"case": "vhdx",
- "type": "298"
+ "type": "300"
},
{
"case": "virtio-blk-vfio-pci",
- "type": "325"
+ "type": "327"
},
{
"case": "virtio-blk-vhost-user",
- "type": "326"
+ "type": "328"
},
{
"case": "virtio-blk-vhost-vdpa",
- "type": "327"
+ "type": "329"
},
{
"case": "vmdk",
- "type": "318"
+ "type": "320"
},
{
"case": "vpc",
- "type": "298"
+ "type": "300"
},
{
"case": "vvfat",
- "type": "328"
+ "type": "330"
}
],
"members": [
{
"name": "driver",
- "type": "291"
+ "type": "293"
},
{
"name": "node-name",
@@ -3404,12 +3416,12 @@
{
"name": "discard",
"default": null,
- "type": "292"
+ "type": "294"
},
{
"name": "cache",
"default": null,
- "type": "293"
+ "type": "295"
},
{
"name": "read-only",
@@ -3429,7 +3441,7 @@
{
"name": "detect-zeroes",
"default": null,
- "type": "283"
+ "type": "285"
}
],
"meta-type": "object"
@@ -3463,7 +3475,7 @@
},
{
"name": "options",
- "type": "329"
+ "type": "331"
}
],
"meta-type": "object"
@@ -3481,7 +3493,7 @@
},
{
"name": "options",
- "type": "330"
+ "type": "332"
},
{
"name": "force",
@@ -3538,11 +3550,11 @@
},
{
"name": "operation",
- "type": "331"
+ "type": "333"
},
{
"name": "action",
- "type": "332"
+ "type": "334"
},
{
"name": "nospace",
@@ -3561,7 +3573,7 @@
"members": [
{
"name": "type",
- "type": "333"
+ "type": "335"
},
{
"name": "device",
@@ -3592,7 +3604,7 @@
"members": [
{
"name": "type",
- "type": "333"
+ "type": "335"
},
{
"name": "device",
@@ -3622,11 +3634,11 @@
},
{
"name": "operation",
- "type": "331"
+ "type": "333"
},
{
"name": "action",
- "type": "332"
+ "type": "334"
}
],
"meta-type": "object"
@@ -3636,7 +3648,7 @@
"members": [
{
"name": "type",
- "type": "333"
+ "type": "335"
},
{
"name": "device",
@@ -3662,7 +3674,7 @@
"members": [
{
"name": "type",
- "type": "333"
+ "type": "335"
},
{
"name": "id",
@@ -3732,7 +3744,7 @@
},
{
"name": "iothread",
- "type": "334"
+ "type": "336"
},
{
"name": "force",
@@ -3765,7 +3777,7 @@
"members": [
{
"name": "type",
- "type": "335"
+ "type": "337"
},
{
"name": "error",
@@ -3869,7 +3881,7 @@
},
{
"name": "status",
- "type": "277"
+ "type": "279"
}
],
"meta-type": "object"
@@ -3948,11 +3960,11 @@
},
{
"name": "type",
- "type": "333"
+ "type": "335"
},
{
"name": "status",
- "type": "277"
+ "type": "279"
},
{
"name": "current-progress",
@@ -3975,7 +3987,7 @@
"members": [
{
"name": "addr",
- "type": "336"
+ "type": "338"
},
{
"name": "tls-creds",
@@ -4035,7 +4047,7 @@
{
"name": "mode",
"default": null,
- "type": "337"
+ "type": "339"
}
],
"meta-type": "object"
@@ -4046,25 +4058,25 @@
"variants": [
{
"case": "nbd",
- "type": "339"
+ "type": "341"
},
{
"case": "vhost-user-blk",
- "type": "340"
+ "type": "342"
},
{
"case": "fuse",
- "type": "341"
+ "type": "343"
},
{
"case": "vduse-blk",
- "type": "342"
+ "type": "344"
}
],
"members": [
{
"name": "type",
- "type": "338"
+ "type": "340"
},
{
"name": "id",
@@ -4107,7 +4119,7 @@
{
"name": "mode",
"default": null,
- "type": "337"
+ "type": "339"
}
],
"meta-type": "object"
@@ -4136,7 +4148,7 @@
},
{
"name": "type",
- "type": "338"
+ "type": "340"
},
{
"name": "node-name",
@@ -4201,7 +4213,7 @@
{
"name": "format",
"default": null,
- "type": "343"
+ "type": "345"
}
],
"meta-type": "object"
@@ -4220,7 +4232,7 @@
{
"name": "format",
"default": null,
- "type": "343"
+ "type": "345"
}
],
"meta-type": "object"
@@ -4239,7 +4251,7 @@
},
{
"name": "backend",
- "type": "344"
+ "type": "346"
}
],
"meta-type": "object"
@@ -4264,7 +4276,7 @@
},
{
"name": "backend",
- "type": "344"
+ "type": "346"
}
],
"meta-type": "object"
@@ -4332,7 +4344,7 @@
{
"name": "format",
"default": null,
- "type": "345"
+ "type": "347"
}
],
"meta-type": "object"
@@ -4342,7 +4354,7 @@
"members": [
{
"name": "status",
- "type": "346"
+ "type": "348"
},
{
"name": "completed",
@@ -4375,7 +4387,7 @@
"members": [
{
"name": "formats",
- "type": "[345]"
+ "type": "[347]"
}
],
"meta-type": "object"
@@ -4400,55 +4412,55 @@
"variants": [
{
"case": "nic",
- "type": "348"
+ "type": "350"
},
{
"case": "user",
- "type": "349"
+ "type": "351"
},
{
"case": "tap",
- "type": "350"
+ "type": "352"
},
{
"case": "l2tpv3",
- "type": "351"
+ "type": "353"
},
{
"case": "socket",
- "type": "352"
+ "type": "354"
},
{
"case": "stream",
- "type": "353"
+ "type": "355"
},
{
"case": "dgram",
- "type": "354"
+ "type": "356"
},
{
"case": "vde",
- "type": "355"
+ "type": "357"
},
{
"case": "bridge",
- "type": "356"
+ "type": "358"
},
{
"case": "hubport",
- "type": "357"
+ "type": "359"
},
{
"case": "netmap",
- "type": "358"
+ "type": "360"
},
{
"case": "vhost-user",
- "type": "359"
+ "type": "361"
},
{
"case": "vhost-vdpa",
- "type": "360"
+ "type": "362"
},
{
"case": "none",
@@ -4462,7 +4474,7 @@
},
{
"name": "type",
- "type": "347"
+ "type": "349"
}
],
"meta-type": "object"
@@ -4506,15 +4518,15 @@
},
{
"name": "multicast",
- "type": "364"
+ "type": "366"
},
{
"name": "unicast",
- "type": "364"
+ "type": "366"
},
{
"name": "vlan",
- "type": "364"
+ "type": "366"
},
{
"name": "broadcast-allowed",
@@ -4613,7 +4625,7 @@
},
{
"name": "addr",
- "type": "365"
+ "type": "367"
}
],
"meta-type": "object"
@@ -4714,11 +4726,11 @@
},
{
"name": "duplex",
- "type": "366"
+ "type": "368"
},
{
"name": "autoneg",
- "type": "367"
+ "type": "369"
}
],
"meta-type": "object"
@@ -4756,15 +4768,15 @@
},
{
"name": "key",
- "type": "368"
+ "type": "370"
},
{
"name": "mask",
- "type": "369"
+ "type": "371"
},
{
"name": "action",
- "type": "370"
+ "type": "372"
}
],
"meta-type": "object"
@@ -4922,7 +4934,7 @@
},
{
"name": "options",
- "type": "371"
+ "type": "373"
}
],
"meta-type": "object"
@@ -4933,7 +4945,7 @@
"variants": [
{
"case": "vnc",
- "type": "374"
+ "type": "376"
},
{
"case": "spice",
@@ -4943,7 +4955,7 @@
"members": [
{
"name": "protocol",
- "type": "372"
+ "type": "374"
},
{
"name": "password",
@@ -4952,7 +4964,7 @@
{
"name": "connected",
"default": null,
- "type": "373"
+ "type": "375"
}
],
"meta-type": "object"
@@ -4963,7 +4975,7 @@
"variants": [
{
"case": "vnc",
- "type": "375"
+ "type": "377"
},
{
"case": "spice",
@@ -4973,7 +4985,7 @@
"members": [
{
"name": "protocol",
- "type": "372"
+ "type": "374"
},
{
"name": "time",
@@ -5002,7 +5014,7 @@
{
"name": "format",
"default": null,
- "type": "376"
+ "type": "378"
}
],
"meta-type": "object"
@@ -5045,12 +5057,12 @@
},
{
"name": "mouse-mode",
- "type": "377"
+ "type": "379"
},
{
"name": "channels",
"default": null,
- "type": "[378]"
+ "type": "[380]"
}
],
"meta-type": "object"
@@ -5060,11 +5072,11 @@
"members": [
{
"name": "server",
- "type": "379"
+ "type": "381"
},
{
"name": "client",
- "type": "379"
+ "type": "381"
}
],
"meta-type": "object"
@@ -5074,11 +5086,11 @@
"members": [
{
"name": "server",
- "type": "380"
+ "type": "382"
},
{
"name": "client",
- "type": "378"
+ "type": "380"
}
],
"meta-type": "object"
@@ -5088,11 +5100,11 @@
"members": [
{
"name": "server",
- "type": "379"
+ "type": "381"
},
{
"name": "client",
- "type": "379"
+ "type": "381"
}
],
"meta-type": "object"
@@ -5112,7 +5124,7 @@
{
"name": "family",
"default": null,
- "type": "381"
+ "type": "383"
},
{
"name": "service",
@@ -5127,7 +5139,7 @@
{
"name": "clients",
"default": null,
- "type": "[382]"
+ "type": "[384]"
}
],
"meta-type": "object"
@@ -5146,20 +5158,20 @@
},
{
"name": "server",
- "type": "[383]"
+ "type": "[385]"
},
{
"name": "clients",
- "type": "[382]"
+ "type": "[384]"
},
{
"name": "auth",
- "type": "384"
+ "type": "386"
},
{
"name": "vencrypt",
"default": null,
- "type": "385"
+ "type": "387"
},
{
"name": "display",
@@ -5184,11 +5196,11 @@
"members": [
{
"name": "server",
- "type": "386"
+ "type": "388"
},
{
"name": "client",
- "type": "387"
+ "type": "389"
}
],
"meta-type": "object"
@@ -5198,11 +5210,11 @@
"members": [
{
"name": "server",
- "type": "386"
+ "type": "388"
},
{
"name": "client",
- "type": "382"
+ "type": "384"
}
],
"meta-type": "object"
@@ -5212,11 +5224,11 @@
"members": [
{
"name": "server",
- "type": "386"
+ "type": "388"
},
{
"name": "client",
- "type": "382"
+ "type": "384"
}
],
"meta-type": "object"
@@ -5253,7 +5265,7 @@
"members": [
{
"name": "keys",
- "type": "[388]"
+ "type": "[390]"
},
{
"name": "hold-time",
@@ -5278,7 +5290,7 @@
},
{
"name": "events",
- "type": "[389]"
+ "type": "[391]"
}
],
"meta-type": "object"
@@ -5289,19 +5301,19 @@
"variants": [
{
"case": "curses",
- "type": "394"
+ "type": "396"
},
{
"case": "egl-headless",
- "type": "395"
+ "type": "397"
},
{
"case": "dbus",
- "type": "396"
+ "type": "398"
},
{
"case": "sdl",
- "type": "397"
+ "type": "399"
},
{
"case": "default",
@@ -5319,7 +5331,7 @@
"members": [
{
"name": "type",
- "type": "390"
+ "type": "392"
},
{
"name": "full-screen",
@@ -5339,7 +5351,7 @@
{
"name": "gl",
"default": null,
- "type": "391"
+ "type": "393"
}
],
"meta-type": "object"
@@ -5350,13 +5362,13 @@
"variants": [
{
"case": "vnc",
- "type": "399"
+ "type": "401"
}
],
"members": [
{
"name": "type",
- "type": "398"
+ "type": "400"
}
],
"meta-type": "object"
@@ -5367,13 +5379,13 @@
"variants": [
{
"case": "vnc",
- "type": "401"
+ "type": "403"
}
],
"members": [
{
"name": "type",
- "type": "400"
+ "type": "402"
}
],
"meta-type": "object"
@@ -5384,27 +5396,27 @@
{
"name": "status",
"default": null,
- "type": "402"
+ "type": "404"
},
{
"name": "ram",
"default": null,
- "type": "403"
+ "type": "405"
},
{
"name": "disk",
"default": null,
- "type": "403"
+ "type": "405"
},
{
"name": "vfio",
"default": null,
- "type": "404"
+ "type": "406"
},
{
"name": "xbzrle-cache",
"default": null,
- "type": "405"
+ "type": "407"
},
{
"name": "total-time",
@@ -5454,12 +5466,12 @@
{
"name": "compression",
"default": null,
- "type": "406"
+ "type": "408"
},
{
"name": "socket-address",
"default": null,
- "type": "[365]"
+ "type": "[367]"
}
],
"meta-type": "object"
@@ -5484,7 +5496,7 @@
"members": [
{
"name": "capability",
- "type": "407"
+ "type": "409"
},
{
"name": "state",
@@ -5559,17 +5571,17 @@
{
"name": "tls-creds",
"default": null,
- "type": "334"
+ "type": "336"
},
{
"name": "tls-hostname",
"default": null,
- "type": "334"
+ "type": "336"
},
{
"name": "tls-authz",
"default": null,
- "type": "334"
+ "type": "336"
},
{
"name": "max-bandwidth",
@@ -5617,7 +5629,7 @@
{
"name": "multifd-compression",
"default": null,
- "type": "408"
+ "type": "410"
},
{
"name": "multifd-zlib-level",
@@ -5632,7 +5644,7 @@
{
"name": "block-bitmap-mapping",
"default": null,
- "type": "[409]"
+ "type": "[411]"
}
],
"meta-type": "object"
@@ -5761,7 +5773,7 @@
{
"name": "multifd-compression",
"default": null,
- "type": "408"
+ "type": "410"
},
{
"name": "multifd-zlib-level",
@@ -5776,7 +5788,7 @@
{
"name": "block-bitmap-mapping",
"default": null,
- "type": "[409]"
+ "type": "[411]"
}
],
"meta-type": "object"
@@ -5815,7 +5827,7 @@
"members": [
{
"name": "status",
- "type": "402"
+ "type": "404"
}
],
"meta-type": "object"
@@ -5835,11 +5847,11 @@
"members": [
{
"name": "mode",
- "type": "410"
+ "type": "412"
},
{
"name": "reason",
- "type": "411"
+ "type": "413"
}
],
"meta-type": "object"
@@ -5849,7 +5861,7 @@
"members": [
{
"name": "state",
- "type": "402"
+ "type": "404"
}
],
"meta-type": "object"
@@ -5968,15 +5980,15 @@
"members": [
{
"name": "mode",
- "type": "410"
+ "type": "412"
},
{
"name": "last-mode",
- "type": "410"
+ "type": "412"
},
{
"name": "reason",
- "type": "411"
+ "type": "413"
}
],
"meta-type": "object"
@@ -6016,7 +6028,7 @@
{
"name": "mode",
"default": null,
- "type": "412"
+ "type": "414"
}
],
"meta-type": "object"
@@ -6031,7 +6043,7 @@
},
{
"name": "status",
- "type": "413"
+ "type": "415"
},
{
"name": "start-time",
@@ -6047,12 +6059,12 @@
},
{
"name": "mode",
- "type": "412"
+ "type": "414"
},
{
"name": "vcpu-dirty-rate",
"default": null,
- "type": "[414]"
+ "type": "[416]"
}
],
"meta-type": "object"
@@ -6106,8 +6118,27 @@
],
"meta-type": "object"
},
+ {
+ "name": "[165]",
+ "element-type": "165",
+ "meta-type": "array"
+ },
{
"name": "165",
+ "members": [
+ {
+ "name": "name",
+ "type": "str"
+ },
+ {
+ "name": "thread-id",
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "166",
"members": [
{
"name": "job-id",
@@ -6129,7 +6160,7 @@
"meta-type": "object"
},
{
- "name": "166",
+ "name": "167",
"members": [
{
"name": "job-id",
@@ -6151,7 +6182,7 @@
"meta-type": "object"
},
{
- "name": "167",
+ "name": "168",
"members": [
{
"name": "job-id",
@@ -6169,22 +6200,22 @@
"meta-type": "object"
},
{
- "name": "168",
+ "name": "169",
"members": [
{
"name": "actions",
- "type": "[415]"
+ "type": "[417]"
},
{
"name": "properties",
"default": null,
- "type": "416"
+ "type": "418"
}
],
"meta-type": "object"
},
{
- "name": "169",
+ "name": "170",
"members": [
{
"name": "name",
@@ -6199,12 +6230,12 @@
"meta-type": "object"
},
{
- "name": "[170]",
- "element-type": "170",
+ "name": "[171]",
+ "element-type": "171",
"meta-type": "array"
},
{
- "name": "170",
+ "name": "171",
"members": [
{
"name": "name",
@@ -6212,7 +6243,7 @@
},
{
"name": "state",
- "type": "417"
+ "type": "419"
},
{
"name": "vcpu",
@@ -6222,7 +6253,7 @@
"meta-type": "object"
},
{
- "name": "171",
+ "name": "172",
"members": [
{
"name": "name",
@@ -6246,22 +6277,22 @@
"meta-type": "object"
},
{
- "name": "172",
+ "name": "173",
"members": [
{
"name": "enable",
"default": null,
- "type": "[418]"
+ "type": "[420]"
}
],
"meta-type": "object"
},
{
- "name": "173",
+ "name": "174",
"members": [
{
"name": "qemu",
- "type": "419"
+ "type": "421"
},
{
"name": "package",
@@ -6271,12 +6302,12 @@
"meta-type": "object"
},
{
- "name": "[174]",
- "element-type": "174",
+ "name": "[175]",
+ "element-type": "175",
"meta-type": "array"
},
{
- "name": "174",
+ "name": "175",
"members": [
{
"name": "name",
@@ -6286,41 +6317,41 @@
"meta-type": "object"
},
{
- "name": "[175]",
- "element-type": "175",
+ "name": "[176]",
+ "element-type": "176",
"meta-type": "array"
},
{
- "name": "175",
+ "name": "176",
"tag": "meta-type",
"variants": [
{
"case": "builtin",
- "type": "421"
+ "type": "423"
},
{
"case": "enum",
- "type": "422"
+ "type": "424"
},
{
"case": "array",
- "type": "423"
+ "type": "425"
},
{
"case": "object",
- "type": "424"
+ "type": "426"
},
{
"case": "alternate",
- "type": "425"
+ "type": "427"
},
{
"case": "command",
- "type": "426"
+ "type": "428"
},
{
"case": "event",
- "type": "427"
+ "type": "429"
}
],
"members": [
@@ -6330,7 +6361,7 @@
},
{
"name": "meta-type",
- "type": "420"
+ "type": "422"
},
{
"name": "features",
@@ -6341,7 +6372,7 @@
"meta-type": "object"
},
{
- "name": "176",
+ "name": "177",
"members": [
{
"name": "path",
@@ -6351,12 +6382,12 @@
"meta-type": "object"
},
{
- "name": "[177]",
- "element-type": "177",
+ "name": "[178]",
+ "element-type": "178",
"meta-type": "array"
},
{
- "name": "177",
+ "name": "178",
"members": [
{
"name": "name",
@@ -6380,7 +6411,7 @@
"meta-type": "object"
},
{
- "name": "178",
+ "name": "179",
"members": [
{
"name": "path",
@@ -6399,7 +6430,7 @@
"meta-type": "builtin"
},
{
- "name": "179",
+ "name": "180",
"members": [
{
"name": "path",
@@ -6417,7 +6448,7 @@
"meta-type": "object"
},
{
- "name": "180",
+ "name": "181",
"members": [
{
"name": "implements",
@@ -6433,12 +6464,12 @@
"meta-type": "object"
},
{
- "name": "[181]",
- "element-type": "181",
+ "name": "[182]",
+ "element-type": "182",
"meta-type": "array"
},
{
- "name": "181",
+ "name": "182",
"members": [
{
"name": "name",
@@ -6458,7 +6489,7 @@
"meta-type": "object"
},
{
- "name": "182",
+ "name": "183",
"members": [
{
"name": "typename",
@@ -6468,172 +6499,172 @@
"meta-type": "object"
},
{
- "name": "183",
+ "name": "184",
"tag": "qom-type",
"variants": [
{
"case": "authz-list",
- "type": "429"
+ "type": "431"
},
{
"case": "authz-listfile",
- "type": "430"
+ "type": "432"
},
{
"case": "authz-pam",
- "type": "431"
+ "type": "433"
},
{
"case": "authz-simple",
- "type": "432"
+ "type": "434"
},
{
"case": "can-host-socketcan",
- "type": "433"
+ "type": "435"
},
{
"case": "colo-compare",
- "type": "434"
+ "type": "436"
},
{
"case": "cryptodev-backend",
- "type": "435"
+ "type": "437"
},
{
"case": "cryptodev-backend-builtin",
- "type": "435"
+ "type": "437"
},
{
"case": "cryptodev-backend-lkcf",
- "type": "435"
+ "type": "437"
},
{
"case": "cryptodev-vhost-user",
- "type": "436"
+ "type": "438"
},
{
"case": "dbus-vmstate",
- "type": "437"
+ "type": "439"
},
{
"case": "filter-buffer",
- "type": "438"
+ "type": "440"
},
{
"case": "filter-dump",
- "type": "439"
+ "type": "441"
},
{
"case": "filter-mirror",
- "type": "440"
+ "type": "442"
},
{
"case": "filter-redirector",
- "type": "441"
+ "type": "443"
},
{
"case": "filter-replay",
- "type": "442"
+ "type": "444"
},
{
"case": "filter-rewriter",
- "type": "443"
+ "type": "445"
},
{
"case": "input-barrier",
- "type": "444"
+ "type": "446"
},
{
"case": "input-linux",
- "type": "445"
+ "type": "447"
},
{
"case": "iothread",
- "type": "446"
+ "type": "448"
},
{
"case": "main-loop",
- "type": "447"
+ "type": "449"
},
{
"case": "memory-backend-epc",
- "type": "448"
+ "type": "450"
},
{
"case": "memory-backend-file",
- "type": "449"
+ "type": "451"
},
{
"case": "memory-backend-memfd",
- "type": "450"
+ "type": "452"
},
{
"case": "memory-backend-ram",
- "type": "451"
+ "type": "453"
},
{
"case": "pr-manager-helper",
- "type": "452"
+ "type": "454"
},
{
"case": "qtest",
- "type": "453"
+ "type": "455"
},
{
"case": "rng-builtin",
- "type": "454"
+ "type": "456"
},
{
"case": "rng-egd",
- "type": "455"
+ "type": "457"
},
{
"case": "rng-random",
- "type": "456"
+ "type": "458"
},
{
"case": "secret",
- "type": "457"
+ "type": "459"
},
{
"case": "secret_keyring",
- "type": "458"
+ "type": "460"
},
{
"case": "sev-guest",
- "type": "459"
+ "type": "461"
},
{
"case": "thread-context",
- "type": "460"
+ "type": "462"
},
{
"case": "throttle-group",
- "type": "461"
+ "type": "463"
},
{
"case": "tls-creds-anon",
- "type": "462"
+ "type": "464"
},
{
"case": "tls-creds-psk",
- "type": "463"
+ "type": "465"
},
{
"case": "tls-creds-x509",
- "type": "464"
+ "type": "466"
},
{
"case": "tls-cipher-suites",
- "type": "465"
+ "type": "467"
},
{
"case": "x-remote-object",
- "type": "466"
+ "type": "468"
},
{
"case": "x-vfio-user-server",
- "type": "467"
+ "type": "469"
},
{
"case": "can-bus",
@@ -6651,7 +6682,7 @@
"members": [
{
"name": "qom-type",
- "type": "428"
+ "type": "430"
},
{
"name": "id",
@@ -6661,7 +6692,7 @@
"meta-type": "object"
},
{
- "name": "184",
+ "name": "185",
"members": [
{
"name": "id",
@@ -6671,7 +6702,7 @@
"meta-type": "object"
},
{
- "name": "185",
+ "name": "186",
"members": [
{
"name": "typename",
@@ -6681,7 +6712,7 @@
"meta-type": "object"
},
{
- "name": "186",
+ "name": "187",
"members": [
{
"name": "driver",
@@ -6701,7 +6732,7 @@
"meta-type": "object"
},
{
- "name": "187",
+ "name": "188",
"members": [
{
"name": "id",
@@ -6711,7 +6742,7 @@
"meta-type": "object"
},
{
- "name": "188",
+ "name": "189",
"members": [
{
"name": "device",
@@ -6726,7 +6757,7 @@
"meta-type": "object"
},
{
- "name": "189",
+ "name": "190",
"members": [
{
"name": "device",
@@ -6741,17 +6772,17 @@
"meta-type": "object"
},
{
- "name": "[190]",
- "element-type": "190",
+ "name": "[191]",
+ "element-type": "191",
"meta-type": "array"
},
{
- "name": "190",
+ "name": "191",
"tag": "target",
"variants": [
{
"case": "s390x",
- "type": "470"
+ "type": "472"
},
{
"case": "aarch64",
@@ -6890,22 +6921,22 @@
{
"name": "props",
"default": null,
- "type": "468"
+ "type": "470"
},
{
"name": "target",
- "type": "469"
+ "type": "471"
}
],
"meta-type": "object"
},
{
- "name": "[191]",
- "element-type": "191",
+ "name": "[192]",
+ "element-type": "192",
"meta-type": "array"
},
{
- "name": "191",
+ "name": "192",
"members": [
{
"name": "name",
@@ -6951,7 +6982,7 @@
"meta-type": "object"
},
{
- "name": "192",
+ "name": "193",
"members": [
{
"name": "wakeup-suspend-support",
@@ -6961,17 +6992,17 @@
"meta-type": "object"
},
{
- "name": "193",
+ "name": "194",
"members": [
{
"name": "arch",
- "type": "469"
+ "type": "471"
}
],
"meta-type": "object"
},
{
- "name": "194",
+ "name": "195",
"members": [
{
"name": "UUID",
@@ -6981,7 +7012,7 @@
"meta-type": "object"
},
{
- "name": "195",
+ "name": "196",
"members": [
{
"name": "guid",
@@ -6991,7 +7022,7 @@
"meta-type": "object"
},
{
- "name": "196",
+ "name": "197",
"members": [
{
"name": "enabled",
@@ -7005,7 +7036,7 @@
"meta-type": "object"
},
{
- "name": "197",
+ "name": "198",
"members": [
{
"name": "val",
@@ -7028,7 +7059,7 @@
"meta-type": "object"
},
{
- "name": "198",
+ "name": "199",
"members": [
{
"name": "val",
@@ -7046,12 +7077,12 @@
"meta-type": "object"
},
{
- "name": "[199]",
- "element-type": "199",
+ "name": "[200]",
+ "element-type": "200",
"meta-type": "array"
},
{
- "name": "199",
+ "name": "200",
"members": [
{
"name": "id",
@@ -7089,18 +7120,18 @@
},
{
"name": "policy",
- "type": "471"
+ "type": "473"
}
],
"meta-type": "object"
},
{
- "name": "[200]",
- "element-type": "200",
+ "name": "[201]",
+ "element-type": "201",
"meta-type": "array"
},
{
- "name": "200",
+ "name": "201",
"members": [
{
"name": "type",
@@ -7112,7 +7143,7 @@
},
{
"name": "props",
- "type": "468"
+ "type": "470"
},
{
"name": "qom-path",
@@ -7123,40 +7154,40 @@
"meta-type": "object"
},
{
- "name": "201",
+ "name": "202",
"tag": "type",
"variants": [
{
"case": "node",
- "type": "473"
+ "type": "475"
},
{
"case": "dist",
- "type": "474"
+ "type": "476"
},
{
"case": "cpu",
- "type": "475"
+ "type": "477"
},
{
"case": "hmat-lb",
- "type": "476"
+ "type": "478"
},
{
"case": "hmat-cache",
- "type": "477"
+ "type": "479"
}
],
"members": [
{
"name": "type",
- "type": "472"
+ "type": "474"
}
],
"meta-type": "object"
},
{
- "name": "202",
+ "name": "203",
"members": [
{
"name": "value",
@@ -7166,7 +7197,7 @@
"meta-type": "object"
},
{
- "name": "203",
+ "name": "204",
"members": [
{
"name": "actual",
@@ -7176,7 +7207,7 @@
"meta-type": "object"
},
{
- "name": "204",
+ "name": "205",
"members": [
{
"name": "actual",
@@ -7186,7 +7217,7 @@
"meta-type": "object"
},
{
- "name": "205",
+ "name": "206",
"members": [
{
"name": "base-memory",
@@ -7201,45 +7232,45 @@
"meta-type": "object"
},
{
- "name": "[206]",
- "element-type": "206",
+ "name": "[207]",
+ "element-type": "207",
"meta-type": "array"
},
{
- "name": "206",
+ "name": "207",
"tag": "type",
"variants": [
{
"case": "dimm",
- "type": "479"
+ "type": "481"
},
{
"case": "nvdimm",
- "type": "479"
+ "type": "481"
},
{
"case": "virtio-pmem",
- "type": "480"
+ "type": "482"
},
{
"case": "virtio-mem",
- "type": "481"
+ "type": "483"
},
{
"case": "sgx-epc",
- "type": "482"
+ "type": "484"
}
],
"members": [
{
"name": "type",
- "type": "478"
+ "type": "480"
}
],
"meta-type": "object"
},
{
- "name": "207",
+ "name": "208",
"members": [
{
"name": "id",
@@ -7258,7 +7289,7 @@
"meta-type": "object"
},
{
- "name": "208",
+ "name": "209",
"members": [
{
"name": "device",
@@ -7272,7 +7303,7 @@
"meta-type": "object"
},
{
- "name": "209",
+ "name": "210",
"members": [
{
"name": "human-readable-text",
@@ -7282,7 +7313,7 @@
"meta-type": "object"
},
{
- "name": "210",
+ "name": "211",
"members": [
{
"name": "filename",
@@ -7292,36 +7323,36 @@
"meta-type": "object"
},
{
- "name": "215",
+ "name": "216",
"members": [
{
"name": "type",
- "type": "485"
+ "type": "487"
},
{
"name": "model",
- "type": "483"
+ "type": "485"
}
],
"meta-type": "object"
},
{
- "name": "216",
+ "name": "217",
"members": [
{
"name": "model",
- "type": "483"
+ "type": "485"
}
],
"meta-type": "object"
},
{
- "name": "[217]",
- "element-type": "217",
+ "name": "[218]",
+ "element-type": "218",
"meta-type": "array"
},
{
- "name": "217",
+ "name": "218",
"members": [
{
"name": "name",
@@ -7358,11 +7389,11 @@
"meta-type": "object"
},
{
- "name": "218",
+ "name": "219",
"members": [
{
"name": "mode",
- "type": "486"
+ "type": "488"
},
{
"name": "filename",
@@ -7377,7 +7408,7 @@
"meta-type": "object"
},
{
- "name": "219",
+ "name": "220",
"members": [
{
"name": "icount",
@@ -7387,7 +7418,7 @@
"meta-type": "object"
},
{
- "name": "220",
+ "name": "221",
"members": [
{
"name": "icount",
@@ -7397,31 +7428,31 @@
"meta-type": "object"
},
{
- "name": "221",
+ "name": "222",
"members": [
{
"name": "instances",
- "type": "[222]"
+ "type": "[223]"
}
],
"meta-type": "object"
},
{
- "name": "[222]",
- "element-type": "222",
+ "name": "[223]",
+ "element-type": "223",
"meta-type": "array"
},
{
- "name": "222",
+ "name": "223",
"tag": "type",
"variants": [
{
"case": "block-node",
- "type": "488"
+ "type": "490"
},
{
"case": "chardev",
- "type": "489"
+ "type": "491"
},
{
"case": "migration",
@@ -7431,13 +7462,13 @@
"members": [
{
"name": "type",
- "type": "487"
+ "type": "489"
}
],
"meta-type": "object"
},
{
- "name": "223",
+ "name": "224",
"members": [
{
"name": "protocol",
@@ -7461,7 +7492,7 @@
"meta-type": "object"
},
{
- "name": "224",
+ "name": "225",
"members": [
{
"name": "name",
@@ -7472,12 +7503,12 @@
"meta-type": "object"
},
{
- "name": "[225]",
- "element-type": "225",
+ "name": "[226]",
+ "element-type": "226",
"meta-type": "array"
},
{
- "name": "225",
+ "name": "226",
"members": [
{
"name": "id",
@@ -7507,7 +7538,7 @@
"meta-type": "object"
},
{
- "name": "226",
+ "name": "227",
"members": [
{
"name": "command-line",
@@ -7522,7 +7553,7 @@
"meta-type": "object"
},
{
- "name": "227",
+ "name": "228",
"members": [
{
"name": "fdname",
@@ -7532,7 +7563,7 @@
"meta-type": "object"
},
{
- "name": "228",
+ "name": "229",
"members": [
{
"name": "fdname",
@@ -7542,7 +7573,7 @@
"meta-type": "object"
},
{
- "name": "229",
+ "name": "230",
"members": [
{
"name": "fdset-id",
@@ -7558,7 +7589,7 @@
"meta-type": "object"
},
{
- "name": "230",
+ "name": "231",
"members": [
{
"name": "fdset-id",
@@ -7572,7 +7603,7 @@
"meta-type": "object"
},
{
- "name": "231",
+ "name": "232",
"members": [
{
"name": "fdset-id",
@@ -7587,12 +7618,12 @@
"meta-type": "object"
},
{
- "name": "[232]",
- "element-type": "232",
+ "name": "[233]",
+ "element-type": "233",
"meta-type": "array"
},
{
- "name": "232",
+ "name": "233",
"members": [
{
"name": "fdset-id",
@@ -7600,13 +7631,13 @@
},
{
"name": "fds",
- "type": "[490]"
+ "type": "[492]"
}
],
"meta-type": "object"
},
{
- "name": "233",
+ "name": "234",
"members": [
{
"name": "option",
@@ -7617,12 +7648,12 @@
"meta-type": "object"
},
{
- "name": "[234]",
- "element-type": "234",
+ "name": "[235]",
+ "element-type": "235",
"meta-type": "array"
},
{
- "name": "234",
+ "name": "235",
"members": [
{
"name": "option",
@@ -7630,13 +7661,13 @@
},
{
"name": "parameters",
- "type": "[491]"
+ "type": "[493]"
}
],
"meta-type": "object"
},
{
- "name": "235",
+ "name": "236",
"members": [
{
"name": "offset",
@@ -7650,7 +7681,7 @@
"meta-type": "object"
},
{
- "name": "236",
+ "name": "237",
"members": [
{
"name": "vfu-id",
@@ -7672,7 +7703,7 @@
"meta-type": "object"
},
{
- "name": "237",
+ "name": "238",
"members": [
{
"name": "enabled",
@@ -7696,7 +7727,7 @@
},
{
"name": "state",
- "type": "492"
+ "type": "494"
},
{
"name": "handle",
@@ -7706,7 +7737,7 @@
"meta-type": "object"
},
{
- "name": "238",
+ "name": "239",
"members": [
{
"name": "data",
@@ -7716,7 +7747,7 @@
"meta-type": "object"
},
{
- "name": "239",
+ "name": "240",
"members": [
{
"name": "pdh",
@@ -7742,7 +7773,7 @@
"meta-type": "object"
},
{
- "name": "240",
+ "name": "241",
"members": [
{
"name": "packet-header",
@@ -7761,7 +7792,7 @@
"meta-type": "object"
},
{
- "name": "241",
+ "name": "242",
"members": [
{
"name": "mnonce",
@@ -7771,7 +7802,7 @@
"meta-type": "object"
},
{
- "name": "242",
+ "name": "243",
"members": [
{
"name": "data",
@@ -7781,7 +7812,7 @@
"meta-type": "object"
},
{
- "name": "245",
+ "name": "246",
"members": [
{
"name": "sgx",
@@ -7800,26 +7831,78 @@
"type": "bool"
},
{
- "name": "section-size",
- "type": "int",
- "features": [
- "deprecated"
- ]
+ "name": "sections",
+ "type": "[495]"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[247]",
+ "element-type": "247",
+ "meta-type": "array"
+ },
+ {
+ "name": "247",
+ "tag": "driver",
+ "variants": [
+ {
+ "case": "none",
+ "type": "497"
},
{
- "name": "sections",
- "type": "[493]"
+ "case": "alsa",
+ "type": "498"
+ },
+ {
+ "case": "dbus",
+ "type": "497"
+ },
+ {
+ "case": "oss",
+ "type": "502"
+ },
+ {
+ "case": "pa",
+ "type": "503"
+ },
+ {
+ "case": "sdl",
+ "type": "504"
+ },
+ {
+ "case": "spice",
+ "type": "497"
+ },
+ {
+ "case": "wav",
+ "type": "506"
+ }
+ ],
+ "members": [
+ {
+ "name": "id",
+ "type": "str"
+ },
+ {
+ "name": "driver",
+ "type": "496"
+ },
+ {
+ "name": "timer-period",
+ "default": null,
+ "type": "int"
}
],
"meta-type": "object"
},
{
- "name": "[246]",
- "element-type": "246",
+ "name": "[248]",
+ "element-type": "248",
"meta-type": "array"
},
{
- "name": "246",
+ "name": "248",
"members": [
{
"name": "device",
@@ -7832,7 +7915,7 @@
},
{
"name": "slot-type",
- "type": "494"
+ "type": "507"
},
{
"name": "source",
@@ -7846,22 +7929,22 @@
"meta-type": "object"
},
{
- "name": "247",
+ "name": "249",
"members": [
{
"name": "info",
- "type": "246"
+ "type": "248"
}
],
"meta-type": "object"
},
{
- "name": "[248]",
- "element-type": "248",
+ "name": "[250]",
+ "element-type": "250",
"meta-type": "array"
},
{
- "name": "248",
+ "name": "250",
"members": [
{
"name": "bus",
@@ -7869,18 +7952,18 @@
},
{
"name": "devices",
- "type": "[495]"
+ "type": "[508]"
}
],
"meta-type": "object"
},
{
- "name": "249",
+ "name": "251",
"tag": "target",
"variants": [
{
"case": "vcpu",
- "type": "498"
+ "type": "511"
},
{
"case": "vm",
@@ -7890,27 +7973,27 @@
"members": [
{
"name": "target",
- "type": "496"
+ "type": "509"
},
{
"name": "providers",
"default": null,
- "type": "[497]"
+ "type": "[510]"
}
],
"meta-type": "object"
},
{
- "name": "[250]",
- "element-type": "250",
+ "name": "[252]",
+ "element-type": "252",
"meta-type": "array"
},
{
- "name": "250",
+ "name": "252",
"members": [
{
"name": "provider",
- "type": "499"
+ "type": "512"
},
{
"name": "qom-path",
@@ -7919,52 +8002,52 @@
},
{
"name": "stats",
- "type": "[500]"
+ "type": "[513]"
}
],
"meta-type": "object"
},
{
- "name": "251",
+ "name": "253",
"members": [
{
"name": "provider",
"default": null,
- "type": "499"
+ "type": "512"
}
],
"meta-type": "object"
},
{
- "name": "[252]",
- "element-type": "252",
+ "name": "[254]",
+ "element-type": "254",
"meta-type": "array"
},
{
- "name": "252",
+ "name": "254",
"members": [
{
"name": "provider",
- "type": "499"
+ "type": "512"
},
{
"name": "target",
- "type": "496"
+ "type": "509"
},
{
"name": "stats",
- "type": "[501]"
+ "type": "[514]"
}
],
"meta-type": "object"
},
{
- "name": "[253]",
- "element-type": "253",
+ "name": "[255]",
+ "element-type": "255",
"meta-type": "array"
},
{
- "name": "253",
+ "name": "255",
"members": [
{
"name": "path",
@@ -7978,7 +8061,7 @@
"meta-type": "object"
},
{
- "name": "254",
+ "name": "256",
"members": [
{
"name": "path",
@@ -7988,7 +8071,7 @@
"meta-type": "object"
},
{
- "name": "255",
+ "name": "257",
"members": [
{
"name": "name",
@@ -8008,15 +8091,15 @@
},
{
"name": "guest-features",
- "type": "502"
+ "type": "515"
},
{
"name": "host-features",
- "type": "502"
+ "type": "515"
},
{
"name": "backend-features",
- "type": "502"
+ "type": "515"
},
{
"name": "num-vqs",
@@ -8024,7 +8107,7 @@
},
{
"name": "status",
- "type": "503"
+ "type": "516"
},
{
"name": "isr",
@@ -8073,13 +8156,13 @@
{
"name": "vhost-dev",
"default": null,
- "type": "504"
+ "type": "517"
}
],
"meta-type": "object"
},
{
- "name": "256",
+ "name": "258",
"members": [
{
"name": "path",
@@ -8093,7 +8176,7 @@
"meta-type": "object"
},
{
- "name": "257",
+ "name": "259",
"members": [
{
"name": "name",
@@ -8157,7 +8240,7 @@
"meta-type": "object"
},
{
- "name": "258",
+ "name": "260",
"members": [
{
"name": "path",
@@ -8171,7 +8254,7 @@
"meta-type": "object"
},
{
- "name": "259",
+ "name": "261",
"members": [
{
"name": "name",
@@ -8229,7 +8312,7 @@
"meta-type": "object"
},
{
- "name": "260",
+ "name": "262",
"members": [
{
"name": "path",
@@ -8248,7 +8331,7 @@
"meta-type": "object"
},
{
- "name": "261",
+ "name": "263",
"members": [
{
"name": "name",
@@ -8260,15 +8343,15 @@
},
{
"name": "descs",
- "type": "[505]"
+ "type": "[518]"
},
{
"name": "avail",
- "type": "506"
+ "type": "519"
},
{
"name": "used",
- "type": "507"
+ "type": "520"
}
],
"meta-type": "object"
@@ -8279,7 +8362,7 @@
"meta-type": "builtin"
},
{
- "name": "262",
+ "name": "264",
"members": [
{
"name": "debug"
@@ -8351,7 +8434,7 @@
]
},
{
- "name": "263",
+ "name": "265",
"members": [
{
"name": "none"
@@ -8403,7 +8486,7 @@
]
},
{
- "name": "264",
+ "name": "266",
"members": [
{
"name": "reset"
@@ -8439,7 +8522,7 @@
]
},
{
- "name": "265",
+ "name": "267",
"members": [
{
"name": "reset"
@@ -8455,7 +8538,7 @@
]
},
{
- "name": "266",
+ "name": "268",
"members": [
{
"name": "poweroff"
@@ -8471,7 +8554,7 @@
]
},
{
- "name": "267",
+ "name": "269",
"members": [
{
"name": "pause"
@@ -8495,7 +8578,7 @@
]
},
{
- "name": "268",
+ "name": "270",
"members": [
{
"name": "pause"
@@ -8515,28 +8598,28 @@
]
},
{
- "name": "269",
+ "name": "271",
"tag": "type",
"variants": [
{
"case": "hyper-v",
- "type": "509"
+ "type": "522"
},
{
"case": "s390",
- "type": "510"
+ "type": "523"
}
],
"members": [
{
"name": "type",
- "type": "508"
+ "type": "521"
}
],
"meta-type": "object"
},
{
- "name": "270",
+ "name": "272",
"members": [
{
"name": "hypervisor"
@@ -8552,7 +8635,7 @@
]
},
{
- "name": "271",
+ "name": "273",
"members": [
{
"name": "ignore"
@@ -8576,7 +8659,7 @@
]
},
{
- "name": "272",
+ "name": "274",
"members": [
{
"name": "action-required",
@@ -8590,7 +8673,7 @@
"meta-type": "object"
},
{
- "name": "273",
+ "name": "275",
"members": [
{
"name": "retain"
@@ -8620,7 +8703,7 @@
"meta-type": "array"
},
{
- "name": "274",
+ "name": "276",
"members": [
{
"name": "ok"
@@ -8640,7 +8723,7 @@
]
},
{
- "name": "275",
+ "name": "277",
"members": [
{
"name": "rd_bytes",
@@ -8749,41 +8832,41 @@
},
{
"name": "timed_stats",
- "type": "[511]"
+ "type": "[524]"
},
{
"name": "rd_latency_histogram",
"default": null,
- "type": "512"
+ "type": "525"
},
{
"name": "wr_latency_histogram",
"default": null,
- "type": "512"
+ "type": "525"
},
{
"name": "flush_latency_histogram",
"default": null,
- "type": "512"
+ "type": "525"
}
],
"meta-type": "object"
},
{
- "name": "276",
+ "name": "278",
"tag": "driver",
"variants": [
{
"case": "file",
- "type": "513"
+ "type": "526"
},
{
"case": "host_device",
- "type": "513"
+ "type": "526"
},
{
"case": "nvme",
- "type": "514"
+ "type": "527"
},
{
"case": "blkdebug",
@@ -8965,13 +9048,13 @@
"members": [
{
"name": "driver",
- "type": "291"
+ "type": "293"
}
],
"meta-type": "object"
},
{
- "name": "277",
+ "name": "279",
"members": [
{
"name": "undefined"
@@ -9023,7 +9106,7 @@
]
},
{
- "name": "278",
+ "name": "280",
"members": [
{
"name": "existing"
@@ -9039,7 +9122,7 @@
]
},
{
- "name": "279",
+ "name": "281",
"members": [
{
"name": "report"
@@ -9067,7 +9150,7 @@
]
},
{
- "name": "280",
+ "name": "282",
"members": [
{
"name": "top"
@@ -9095,7 +9178,7 @@
]
},
{
- "name": "281",
+ "name": "283",
"members": [
{
"name": "on-success"
@@ -9115,7 +9198,7 @@
]
},
{
- "name": "282",
+ "name": "284",
"members": [
{
"name": "use-copy-range",
@@ -9136,7 +9219,7 @@
"meta-type": "object"
},
{
- "name": "283",
+ "name": "285",
"members": [
{
"name": "off"
@@ -9156,7 +9239,7 @@
]
},
{
- "name": "284",
+ "name": "286",
"members": [
{
"name": "filename",
@@ -9216,20 +9299,20 @@
"type": "[69]"
},
{
- "name": "backing-image",
+ "name": "format-specific",
"default": null,
- "type": "284"
+ "type": "528"
},
{
- "name": "format-specific",
+ "name": "backing-image",
"default": null,
- "type": "515"
+ "type": "286"
}
],
"meta-type": "object"
},
{
- "name": "285",
+ "name": "287",
"members": [
{
"name": "writeback",
@@ -9247,12 +9330,12 @@
"meta-type": "object"
},
{
- "name": "[286]",
- "element-type": "286",
+ "name": "[288]",
+ "element-type": "288",
"meta-type": "array"
},
{
- "name": "286",
+ "name": "288",
"members": [
{
"name": "name",
@@ -9288,12 +9371,12 @@
"meta-type": "object"
},
{
- "name": "[287]",
- "element-type": "287",
+ "name": "[289]",
+ "element-type": "289",
"meta-type": "array"
},
{
- "name": "287",
+ "name": "289",
"members": [
{
"name": "id",
@@ -9301,7 +9384,7 @@
},
{
"name": "type",
- "type": "516"
+ "type": "529"
},
{
"name": "name",
@@ -9311,12 +9394,12 @@
"meta-type": "object"
},
{
- "name": "[288]",
- "element-type": "288",
+ "name": "[290]",
+ "element-type": "290",
"meta-type": "array"
},
{
- "name": "288",
+ "name": "290",
"members": [
{
"name": "parent",
@@ -9332,17 +9415,17 @@
},
{
"name": "perm",
- "type": "[517]"
+ "type": "[530]"
},
{
"name": "shared-perm",
- "type": "[517]"
+ "type": "[530]"
}
],
"meta-type": "object"
},
{
- "name": "289",
+ "name": "291",
"members": [
{
"name": "background"
@@ -9358,12 +9441,12 @@
]
},
{
- "name": "[290]",
- "element-type": "290",
+ "name": "[292]",
+ "element-type": "292",
"meta-type": "array"
},
{
- "name": "290",
+ "name": "292",
"members": [
{
"type": "str"
@@ -9375,7 +9458,7 @@
"meta-type": "alternate"
},
{
- "name": "291",
+ "name": "293",
"members": [
{
"name": "blkdebug"
@@ -9571,7 +9654,7 @@
]
},
{
- "name": "292",
+ "name": "294",
"members": [
{
"name": "ignore"
@@ -9587,7 +9670,7 @@
]
},
{
- "name": "293",
+ "name": "295",
"members": [
{
"name": "direct",
@@ -9603,11 +9686,11 @@
"meta-type": "object"
},
{
- "name": "294",
+ "name": "296",
"members": [
{
"name": "image",
- "type": "518"
+ "type": "531"
},
{
"name": "config",
@@ -9647,36 +9730,36 @@
{
"name": "inject-error",
"default": null,
- "type": "[519]"
+ "type": "[532]"
},
{
"name": "set-state",
"default": null,
- "type": "[520]"
+ "type": "[533]"
},
{
"name": "take-child-perms",
"default": null,
- "type": "[517]"
+ "type": "[530]"
},
{
"name": "unshare-child-perms",
"default": null,
- "type": "[517]"
+ "type": "[530]"
}
],
"meta-type": "object"
},
{
- "name": "295",
+ "name": "297",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "log",
- "type": "518"
+ "type": "531"
},
{
"name": "log-sector-size",
@@ -9697,49 +9780,49 @@
"meta-type": "object"
},
{
- "name": "296",
+ "name": "298",
"members": [
{
"name": "test",
- "type": "518"
+ "type": "531"
},
{
"name": "raw",
- "type": "518"
+ "type": "531"
}
],
"meta-type": "object"
},
{
- "name": "297",
+ "name": "299",
"members": [
{
"name": "image",
- "type": "518"
+ "type": "531"
}
],
"meta-type": "object"
},
{
- "name": "298",
+ "name": "300",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
}
],
"meta-type": "object"
},
{
- "name": "299",
+ "name": "301",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "target",
- "type": "518"
+ "type": "531"
},
{
"name": "bitmap",
@@ -9749,7 +9832,7 @@
{
"name": "on-cbw-error",
"default": null,
- "type": "521"
+ "type": "534"
},
{
"name": "cbw-timeout",
@@ -9760,11 +9843,11 @@
"meta-type": "object"
},
{
- "name": "300",
+ "name": "302",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "bottom",
@@ -9775,7 +9858,7 @@
"meta-type": "object"
},
{
- "name": "301",
+ "name": "303",
"members": [
{
"name": "filename",
@@ -9789,12 +9872,12 @@
{
"name": "locking",
"default": null,
- "type": "522"
+ "type": "535"
},
{
"name": "aio",
"default": null,
- "type": "523"
+ "type": "536"
},
{
"name": "aio-max-batch",
@@ -9821,7 +9904,7 @@
]
},
{
- "name": "302",
+ "name": "304",
"members": [
{
"name": "url",
@@ -9861,7 +9944,7 @@
"meta-type": "object"
},
{
- "name": "303",
+ "name": "305",
"members": [
{
"name": "url",
@@ -9906,7 +9989,7 @@
"meta-type": "object"
},
{
- "name": "304",
+ "name": "306",
"members": [
{
"name": "volume",
@@ -9918,7 +10001,7 @@
},
{
"name": "server",
- "type": "[365]"
+ "type": "[367]"
},
{
"name": "debug",
@@ -9934,7 +10017,7 @@
"meta-type": "object"
},
{
- "name": "305",
+ "name": "307",
"members": [
{
"name": "url",
@@ -9984,7 +10067,7 @@
"meta-type": "object"
},
{
- "name": "306",
+ "name": "308",
"members": [
{
"name": "url",
@@ -10039,7 +10122,7 @@
"meta-type": "object"
},
{
- "name": "307",
+ "name": "309",
"members": [
{
"name": "filename",
@@ -10049,11 +10132,11 @@
"meta-type": "object"
},
{
- "name": "308",
+ "name": "310",
"members": [
{
"name": "transport",
- "type": "524"
+ "type": "537"
},
{
"name": "portal",
@@ -10086,7 +10169,7 @@
{
"name": "header-digest",
"default": null,
- "type": "525"
+ "type": "538"
},
{
"name": "timeout",
@@ -10097,11 +10180,11 @@
"meta-type": "object"
},
{
- "name": "309",
+ "name": "311",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "key-secret",
@@ -10112,11 +10195,11 @@
"meta-type": "object"
},
{
- "name": "310",
+ "name": "312",
"members": [
{
"name": "server",
- "type": "365"
+ "type": "367"
},
{
"name": "export",
@@ -10155,11 +10238,11 @@
"meta-type": "object"
},
{
- "name": "311",
+ "name": "313",
"members": [
{
"name": "server",
- "type": "526"
+ "type": "539"
},
{
"name": "path",
@@ -10199,7 +10282,7 @@
"meta-type": "object"
},
{
- "name": "312",
+ "name": "314",
"members": [
{
"name": "size",
@@ -10220,7 +10303,7 @@
"meta-type": "object"
},
{
- "name": "313",
+ "name": "315",
"members": [
{
"name": "device",
@@ -10234,7 +10317,7 @@
"meta-type": "object"
},
{
- "name": "314",
+ "name": "316",
"members": [
{
"name": "path",
@@ -10244,11 +10327,11 @@
"meta-type": "object"
},
{
- "name": "315",
+ "name": "317",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "prealloc-align",
@@ -10264,16 +10347,16 @@
"meta-type": "object"
},
{
- "name": "316",
+ "name": "318",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "backing",
"default": null,
- "type": "527"
+ "type": "540"
},
{
"name": "lazy-refcounts",
@@ -10298,7 +10381,7 @@
{
"name": "overlap-check",
"default": null,
- "type": "528"
+ "type": "541"
},
{
"name": "cache-size",
@@ -10328,53 +10411,53 @@
{
"name": "encrypt",
"default": null,
- "type": "529"
+ "type": "542"
},
{
"name": "data-file",
"default": null,
- "type": "518"
+ "type": "531"
}
],
"meta-type": "object"
},
{
- "name": "317",
+ "name": "319",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "backing",
"default": null,
- "type": "527"
+ "type": "540"
},
{
"name": "encrypt",
"default": null,
- "type": "530"
+ "type": "543"
}
],
"meta-type": "object"
},
{
- "name": "318",
+ "name": "320",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "backing",
"default": null,
- "type": "527"
+ "type": "540"
}
],
"meta-type": "object"
},
{
- "name": "319",
+ "name": "321",
"members": [
{
"name": "blkverify",
@@ -10383,7 +10466,7 @@
},
{
"name": "children",
- "type": "[518]"
+ "type": "[531]"
},
{
"name": "vote-threshold",
@@ -10397,17 +10480,17 @@
{
"name": "read-pattern",
"default": null,
- "type": "531"
+ "type": "544"
}
],
"meta-type": "object"
},
{
- "name": "320",
+ "name": "322",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "offset",
@@ -10423,7 +10506,7 @@
"meta-type": "object"
},
{
- "name": "321",
+ "name": "323",
"members": [
{
"name": "pool",
@@ -10451,7 +10534,7 @@
{
"name": "encrypt",
"default": null,
- "type": "532"
+ "type": "545"
},
{
"name": "user",
@@ -10461,7 +10544,7 @@
{
"name": "auth-client-required",
"default": null,
- "type": "[533]"
+ "type": "[546]"
},
{
"name": "key-secret",
@@ -10471,21 +10554,21 @@
{
"name": "server",
"default": null,
- "type": "[534]"
+ "type": "[547]"
}
],
"meta-type": "object"
},
{
- "name": "322",
+ "name": "324",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "mode",
- "type": "535"
+ "type": "548"
},
{
"name": "top-id",
@@ -10496,11 +10579,11 @@
"meta-type": "object"
},
{
- "name": "323",
+ "name": "325",
"members": [
{
"name": "server",
- "type": "536"
+ "type": "549"
},
{
"name": "path",
@@ -10514,13 +10597,13 @@
{
"name": "host-key-check",
"default": null,
- "type": "537"
+ "type": "550"
}
],
"meta-type": "object"
},
{
- "name": "324",
+ "name": "326",
"members": [
{
"name": "throttle-group",
@@ -10528,13 +10611,13 @@
},
{
"name": "file",
- "type": "518"
+ "type": "531"
}
],
"meta-type": "object"
},
{
- "name": "325",
+ "name": "327",
"members": [
{
"name": "path",
@@ -10544,7 +10627,7 @@
"meta-type": "object"
},
{
- "name": "326",
+ "name": "328",
"members": [
{
"name": "path",
@@ -10554,7 +10637,7 @@
"meta-type": "object"
},
{
- "name": "327",
+ "name": "329",
"members": [
{
"name": "path",
@@ -10564,7 +10647,7 @@
"meta-type": "object"
},
{
- "name": "328",
+ "name": "330",
"members": [
{
"name": "dir",
@@ -10599,64 +10682,64 @@
"meta-type": "array"
},
{
- "name": "329",
+ "name": "331",
"tag": "driver",
"variants": [
{
"case": "file",
- "type": "538"
+ "type": "551"
},
{
"case": "gluster",
- "type": "539"
+ "type": "552"
},
{
"case": "luks",
- "type": "540"
+ "type": "553"
},
{
"case": "nfs",
- "type": "541"
+ "type": "554"
},
{
"case": "parallels",
- "type": "542"
+ "type": "555"
},
{
"case": "qcow",
- "type": "543"
+ "type": "556"
},
{
"case": "qcow2",
- "type": "544"
+ "type": "557"
},
{
"case": "qed",
- "type": "545"
+ "type": "558"
},
{
"case": "rbd",
- "type": "546"
+ "type": "559"
},
{
"case": "ssh",
- "type": "547"
+ "type": "560"
},
{
"case": "vdi",
- "type": "548"
+ "type": "561"
},
{
"case": "vhdx",
- "type": "549"
+ "type": "562"
},
{
"case": "vmdk",
- "type": "550"
+ "type": "563"
},
{
"case": "vpc",
- "type": "551"
+ "type": "564"
},
{
"case": "blkdebug",
@@ -10794,22 +10877,22 @@
"members": [
{
"name": "driver",
- "type": "291"
+ "type": "293"
}
],
"meta-type": "object"
},
{
- "name": "330",
+ "name": "332",
"tag": "driver",
"variants": [
{
"case": "luks",
- "type": "552"
+ "type": "565"
},
{
"case": "qcow2",
- "type": "553"
+ "type": "566"
},
{
"case": "blkdebug",
@@ -10995,13 +11078,13 @@
"members": [
{
"name": "driver",
- "type": "291"
+ "type": "293"
}
],
"meta-type": "object"
},
{
- "name": "331",
+ "name": "333",
"members": [
{
"name": "read"
@@ -11017,7 +11100,7 @@
]
},
{
- "name": "332",
+ "name": "334",
"members": [
{
"name": "ignore"
@@ -11037,7 +11120,7 @@
]
},
{
- "name": "333",
+ "name": "335",
"members": [
{
"name": "commit"
@@ -11081,7 +11164,7 @@
]
},
{
- "name": "334",
+ "name": "336",
"members": [
{
"type": "str"
@@ -11093,7 +11176,7 @@
"meta-type": "alternate"
},
{
- "name": "335",
+ "name": "337",
"members": [
{
"name": "read"
@@ -11113,36 +11196,36 @@
]
},
{
- "name": "336",
+ "name": "338",
"tag": "type",
"variants": [
{
"case": "inet",
- "type": "555"
+ "type": "568"
},
{
"case": "unix",
- "type": "556"
+ "type": "569"
},
{
"case": "vsock",
- "type": "557"
+ "type": "570"
},
{
"case": "fd",
- "type": "558"
+ "type": "571"
}
],
"members": [
{
"name": "type",
- "type": "554"
+ "type": "567"
}
],
"meta-type": "object"
},
{
- "name": "337",
+ "name": "339",
"members": [
{
"name": "safe"
@@ -11158,7 +11241,7 @@
]
},
{
- "name": "338",
+ "name": "340",
"members": [
{
"name": "nbd"
@@ -11182,7 +11265,7 @@
]
},
{
- "name": "339",
+ "name": "341",
"members": [
{
"name": "name",
@@ -11197,7 +11280,7 @@
{
"name": "bitmaps",
"default": null,
- "type": "[290]"
+ "type": "[292]"
},
{
"name": "allocation-depth",
@@ -11208,11 +11291,11 @@
"meta-type": "object"
},
{
- "name": "340",
+ "name": "342",
"members": [
{
"name": "addr",
- "type": "365"
+ "type": "367"
},
{
"name": "logical-block-size",
@@ -11228,7 +11311,7 @@
"meta-type": "object"
},
{
- "name": "341",
+ "name": "343",
"members": [
{
"name": "mountpoint",
@@ -11242,13 +11325,13 @@
{
"name": "allow-other",
"default": null,
- "type": "559"
+ "type": "572"
}
],
"meta-type": "object"
},
{
- "name": "342",
+ "name": "344",
"members": [
{
"name": "name",
@@ -11278,7 +11361,7 @@
"meta-type": "object"
},
{
- "name": "343",
+ "name": "345",
"members": [
{
"name": "utf8"
@@ -11294,108 +11377,108 @@
]
},
{
- "name": "344",
+ "name": "346",
"tag": "type",
"variants": [
{
"case": "file",
- "type": "561"
+ "type": "574"
},
{
"case": "serial",
- "type": "562"
+ "type": "575"
},
{
"case": "parallel",
- "type": "562"
+ "type": "575"
},
{
"case": "pipe",
- "type": "562"
+ "type": "575"
},
{
"case": "socket",
- "type": "563"
+ "type": "576"
},
{
"case": "udp",
- "type": "564"
+ "type": "577"
},
{
"case": "pty",
- "type": "565"
+ "type": "578"
},
{
"case": "null",
- "type": "565"
+ "type": "578"
},
{
"case": "mux",
- "type": "566"
+ "type": "579"
},
{
"case": "msmouse",
- "type": "565"
+ "type": "578"
},
{
"case": "wctablet",
- "type": "565"
+ "type": "578"
},
{
"case": "braille",
- "type": "565"
+ "type": "578"
},
{
"case": "testdev",
- "type": "565"
+ "type": "578"
},
{
"case": "stdio",
- "type": "567"
+ "type": "580"
},
{
"case": "console",
- "type": "565"
+ "type": "578"
},
{
"case": "spicevmc",
- "type": "568"
+ "type": "581"
},
{
"case": "spiceport",
- "type": "569"
+ "type": "582"
},
{
"case": "qemu-vdagent",
- "type": "570"
+ "type": "583"
},
{
"case": "dbus",
- "type": "571"
+ "type": "584"
},
{
"case": "vc",
- "type": "572"
+ "type": "585"
},
{
"case": "ringbuf",
- "type": "573"
+ "type": "586"
},
{
"case": "memory",
- "type": "573"
+ "type": "586"
}
],
"members": [
{
"name": "type",
- "type": "560"
+ "type": "573"
}
],
"meta-type": "object"
},
{
- "name": "345",
+ "name": "347",
"members": [
{
"name": "elf"
@@ -11423,7 +11506,7 @@
]
},
{
- "name": "346",
+ "name": "348",
"members": [
{
"name": "none"
@@ -11447,12 +11530,12 @@
]
},
{
- "name": "[345]",
- "element-type": "345",
+ "name": "[347]",
+ "element-type": "347",
"meta-type": "array"
},
{
- "name": "347",
+ "name": "349",
"members": [
{
"name": "none"
@@ -11516,7 +11599,7 @@
]
},
{
- "name": "348",
+ "name": "350",
"members": [
{
"name": "netdev",
@@ -11547,7 +11630,7 @@
"meta-type": "object"
},
{
- "name": "349",
+ "name": "351",
"members": [
{
"name": "hostname",
@@ -11607,7 +11690,7 @@
{
"name": "dnssearch",
"default": null,
- "type": "[574]"
+ "type": "[587]"
},
{
"name": "domainname",
@@ -11647,12 +11730,12 @@
{
"name": "hostfwd",
"default": null,
- "type": "[574]"
+ "type": "[587]"
},
{
"name": "guestfwd",
"default": null,
- "type": "[574]"
+ "type": "[587]"
},
{
"name": "tftp-server-name",
@@ -11663,7 +11746,7 @@
"meta-type": "object"
},
{
- "name": "350",
+ "name": "352",
"members": [
{
"name": "ifname",
@@ -11744,7 +11827,7 @@
"meta-type": "object"
},
{
- "name": "351",
+ "name": "353",
"members": [
{
"name": "src",
@@ -11817,7 +11900,7 @@
"meta-type": "object"
},
{
- "name": "352",
+ "name": "354",
"members": [
{
"name": "fd",
@@ -11853,38 +11936,43 @@
"meta-type": "object"
},
{
- "name": "353",
+ "name": "355",
"members": [
{
"name": "addr",
- "type": "365"
+ "type": "367"
},
{
"name": "server",
"default": null,
"type": "bool"
+ },
+ {
+ "name": "reconnect",
+ "default": null,
+ "type": "int"
}
],
"meta-type": "object"
},
{
- "name": "354",
+ "name": "356",
"members": [
{
"name": "local",
"default": null,
- "type": "365"
+ "type": "367"
},
{
"name": "remote",
"default": null,
- "type": "365"
+ "type": "367"
}
],
"meta-type": "object"
},
{
- "name": "355",
+ "name": "357",
"members": [
{
"name": "sock",
@@ -11910,7 +11998,7 @@
"meta-type": "object"
},
{
- "name": "356",
+ "name": "358",
"members": [
{
"name": "br",
@@ -11926,7 +12014,7 @@
"meta-type": "object"
},
{
- "name": "357",
+ "name": "359",
"members": [
{
"name": "hubid",
@@ -11941,7 +12029,7 @@
"meta-type": "object"
},
{
- "name": "358",
+ "name": "360",
"members": [
{
"name": "ifname",
@@ -11956,7 +12044,7 @@
"meta-type": "object"
},
{
- "name": "359",
+ "name": "361",
"members": [
{
"name": "chardev",
@@ -11976,7 +12064,7 @@
"meta-type": "object"
},
{
- "name": "360",
+ "name": "362",
"members": [
{
"name": "vhostdev",
@@ -12005,7 +12093,7 @@
"meta-type": "object"
},
{
- "name": "364",
+ "name": "366",
"members": [
{
"name": "normal"
@@ -12030,36 +12118,36 @@
"meta-type": "array"
},
{
- "name": "365",
+ "name": "367",
"tag": "type",
"variants": [
{
"case": "inet",
- "type": "536"
+ "type": "549"
},
{
"case": "unix",
- "type": "575"
+ "type": "588"
},
{
"case": "vsock",
- "type": "576"
+ "type": "589"
},
{
"case": "fd",
- "type": "574"
+ "type": "587"
}
],
"members": [
{
"name": "type",
- "type": "554"
+ "type": "567"
}
],
"meta-type": "object"
},
{
- "name": "366",
+ "name": "368",
"members": [
{
"name": "half"
@@ -12075,7 +12163,7 @@
]
},
{
- "name": "367",
+ "name": "369",
"members": [
{
"name": "off"
@@ -12091,7 +12179,7 @@
]
},
{
- "name": "368",
+ "name": "370",
"members": [
{
"name": "priority",
@@ -12150,7 +12238,7 @@
"meta-type": "object"
},
{
- "name": "369",
+ "name": "371",
"members": [
{
"name": "in-pport",
@@ -12191,7 +12279,7 @@
"meta-type": "object"
},
{
- "name": "370",
+ "name": "372",
"members": [
{
"name": "goto-tbl",
@@ -12227,16 +12315,16 @@
"meta-type": "object"
},
{
- "name": "371",
+ "name": "373",
"tag": "type",
"variants": [
{
"case": "passthrough",
- "type": "577"
+ "type": "590"
},
{
"case": "emulator",
- "type": "578"
+ "type": "591"
}
],
"members": [
@@ -12248,7 +12336,7 @@
"meta-type": "object"
},
{
- "name": "372",
+ "name": "374",
"members": [
{
"name": "vnc"
@@ -12264,7 +12352,7 @@
]
},
{
- "name": "373",
+ "name": "375",
"members": [
{
"name": "keep"
@@ -12284,7 +12372,7 @@
]
},
{
- "name": "374",
+ "name": "376",
"members": [
{
"name": "display",
@@ -12295,7 +12383,7 @@
"meta-type": "object"
},
{
- "name": "375",
+ "name": "377",
"members": [
{
"name": "display",
@@ -12306,7 +12394,7 @@
"meta-type": "object"
},
{
- "name": "376",
+ "name": "378",
"members": [
{
"name": "ppm"
@@ -12322,7 +12410,7 @@
]
},
{
- "name": "377",
+ "name": "379",
"members": [
{
"name": "client"
@@ -12342,12 +12430,12 @@
]
},
{
- "name": "[378]",
- "element-type": "378",
+ "name": "[380]",
+ "element-type": "380",
"meta-type": "array"
},
{
- "name": "378",
+ "name": "380",
"members": [
{
"name": "host",
@@ -12359,7 +12447,7 @@
},
{
"name": "family",
- "type": "381"
+ "type": "383"
},
{
"name": "connection-id",
@@ -12381,7 +12469,7 @@
"meta-type": "object"
},
{
- "name": "379",
+ "name": "381",
"members": [
{
"name": "host",
@@ -12393,13 +12481,13 @@
},
{
"name": "family",
- "type": "381"
+ "type": "383"
}
],
"meta-type": "object"
},
{
- "name": "380",
+ "name": "382",
"members": [
{
"name": "host",
@@ -12411,7 +12499,7 @@
},
{
"name": "family",
- "type": "381"
+ "type": "383"
},
{
"name": "auth",
@@ -12422,7 +12510,7 @@
"meta-type": "object"
},
{
- "name": "381",
+ "name": "383",
"members": [
{
"name": "ipv4"
@@ -12450,12 +12538,12 @@
]
},
{
- "name": "[382]",
- "element-type": "382",
+ "name": "[384]",
+ "element-type": "384",
"meta-type": "array"
},
{
- "name": "382",
+ "name": "384",
"members": [
{
"name": "host",
@@ -12467,7 +12555,7 @@
},
{
"name": "family",
- "type": "381"
+ "type": "383"
},
{
"name": "websocket",
@@ -12487,12 +12575,12 @@
"meta-type": "object"
},
{
- "name": "[383]",
- "element-type": "383",
+ "name": "[385]",
+ "element-type": "385",
"meta-type": "array"
},
{
- "name": "383",
+ "name": "385",
"members": [
{
"name": "host",
@@ -12504,7 +12592,7 @@
},
{
"name": "family",
- "type": "381"
+ "type": "383"
},
{
"name": "websocket",
@@ -12512,18 +12600,18 @@
},
{
"name": "auth",
- "type": "384"
+ "type": "386"
},
{
"name": "vencrypt",
"default": null,
- "type": "385"
+ "type": "387"
}
],
"meta-type": "object"
},
{
- "name": "384",
+ "name": "386",
"members": [
{
"name": "none"
@@ -12567,7 +12655,7 @@
]
},
{
- "name": "385",
+ "name": "387",
"members": [
{
"name": "plain"
@@ -12611,7 +12699,7 @@
]
},
{
- "name": "386",
+ "name": "388",
"members": [
{
"name": "host",
@@ -12623,7 +12711,7 @@
},
{
"name": "family",
- "type": "381"
+ "type": "383"
},
{
"name": "websocket",
@@ -12638,7 +12726,7 @@
"meta-type": "object"
},
{
- "name": "387",
+ "name": "389",
"members": [
{
"name": "host",
@@ -12650,7 +12738,7 @@
},
{
"name": "family",
- "type": "381"
+ "type": "383"
},
{
"name": "websocket",
@@ -12660,67 +12748,67 @@
"meta-type": "object"
},
{
- "name": "[388]",
- "element-type": "388",
+ "name": "[390]",
+ "element-type": "390",
"meta-type": "array"
},
{
- "name": "388",
+ "name": "390",
"tag": "type",
"variants": [
{
"case": "number",
- "type": "580"
+ "type": "593"
},
{
"case": "qcode",
- "type": "581"
+ "type": "594"
}
],
"members": [
{
"name": "type",
- "type": "579"
+ "type": "592"
}
],
"meta-type": "object"
},
{
- "name": "[389]",
- "element-type": "389",
+ "name": "[391]",
+ "element-type": "391",
"meta-type": "array"
},
{
- "name": "389",
+ "name": "391",
"tag": "type",
"variants": [
{
"case": "key",
- "type": "583"
+ "type": "596"
},
{
"case": "btn",
- "type": "584"
+ "type": "597"
},
{
"case": "rel",
- "type": "585"
+ "type": "598"
},
{
"case": "abs",
- "type": "585"
+ "type": "598"
}
],
"members": [
{
"name": "type",
- "type": "582"
+ "type": "595"
}
],
"meta-type": "object"
},
{
- "name": "390",
+ "name": "392",
"members": [
{
"name": "default"
@@ -12756,7 +12844,7 @@
]
},
{
- "name": "391",
+ "name": "393",
"members": [
{
"name": "off"
@@ -12780,7 +12868,7 @@
]
},
{
- "name": "392",
+ "name": "394",
"members": [
{
"name": "grab-on-hover",
@@ -12806,7 +12894,7 @@
"meta-type": "object"
},
{
- "name": "393",
+ "name": "395",
"members": [
{
"name": "left-command-key",
@@ -12827,7 +12915,7 @@
"meta-type": "object"
},
{
- "name": "394",
+ "name": "396",
"members": [
{
"name": "charset",
@@ -12838,7 +12926,7 @@
"meta-type": "object"
},
{
- "name": "395",
+ "name": "397",
"members": [
{
"name": "rendernode",
@@ -12849,7 +12937,7 @@
"meta-type": "object"
},
{
- "name": "396",
+ "name": "398",
"members": [
{
"name": "rendernode",
@@ -12875,18 +12963,18 @@
"meta-type": "object"
},
{
- "name": "397",
+ "name": "399",
"members": [
{
"name": "grab-mod",
"default": null,
- "type": "586"
+ "type": "599"
}
],
"meta-type": "object"
},
{
- "name": "398",
+ "name": "400",
"members": [
{
"name": "vnc"
@@ -12898,7 +12986,7 @@
]
},
{
- "name": "399",
+ "name": "401",
"members": [
{
"name": "tls-certs",
@@ -12909,7 +12997,7 @@
"meta-type": "object"
},
{
- "name": "400",
+ "name": "402",
"members": [
{
"name": "vnc"
@@ -12921,18 +13009,18 @@
]
},
{
- "name": "401",
+ "name": "403",
"members": [
{
"name": "addresses",
"default": null,
- "type": "[365]"
+ "type": "[367]"
}
],
"meta-type": "object"
},
{
- "name": "402",
+ "name": "404",
"members": [
{
"name": "none"
@@ -12996,7 +13084,7 @@
]
},
{
- "name": "403",
+ "name": "405",
"members": [
{
"name": "transferred",
@@ -13074,7 +13162,7 @@
"meta-type": "object"
},
{
- "name": "404",
+ "name": "406",
"members": [
{
"name": "transferred",
@@ -13084,7 +13172,7 @@
"meta-type": "object"
},
{
- "name": "405",
+ "name": "407",
"members": [
{
"name": "cache-size",
@@ -13118,7 +13206,7 @@
"meta-type": "object"
},
{
- "name": "406",
+ "name": "408",
"members": [
{
"name": "pages",
@@ -13144,12 +13232,12 @@
"meta-type": "object"
},
{
- "name": "[365]",
- "element-type": "365",
+ "name": "[367]",
+ "element-type": "367",
"meta-type": "array"
},
{
- "name": "407",
+ "name": "409",
"members": [
{
"name": "xbzrle"
@@ -13247,7 +13335,7 @@
]
},
{
- "name": "408",
+ "name": "410",
"members": [
{
"name": "none"
@@ -13267,12 +13355,12 @@
]
},
{
- "name": "[409]",
- "element-type": "409",
+ "name": "[411]",
+ "element-type": "411",
"meta-type": "array"
},
{
- "name": "409",
+ "name": "411",
"members": [
{
"name": "node-name",
@@ -13284,13 +13372,13 @@
},
{
"name": "bitmaps",
- "type": "[587]"
+ "type": "[600]"
}
],
"meta-type": "object"
},
{
- "name": "410",
+ "name": "412",
"members": [
{
"name": "none"
@@ -13310,7 +13398,7 @@
]
},
{
- "name": "411",
+ "name": "413",
"members": [
{
"name": "none"
@@ -13334,7 +13422,7 @@
]
},
{
- "name": "412",
+ "name": "414",
"members": [
{
"name": "page-sampling"
@@ -13354,7 +13442,7 @@
]
},
{
- "name": "413",
+ "name": "415",
"members": [
{
"name": "unstarted"
@@ -13374,12 +13462,12 @@
]
},
{
- "name": "[414]",
- "element-type": "414",
+ "name": "[416]",
+ "element-type": "416",
"meta-type": "array"
},
{
- "name": "414",
+ "name": "416",
"members": [
{
"name": "id",
@@ -13393,84 +13481,84 @@
"meta-type": "object"
},
{
- "name": "[415]",
- "element-type": "415",
+ "name": "[417]",
+ "element-type": "417",
"meta-type": "array"
},
{
- "name": "415",
+ "name": "417",
"tag": "type",
"variants": [
{
"case": "abort",
- "type": "589"
+ "type": "602"
},
{
"case": "block-dirty-bitmap-add",
- "type": "590"
+ "type": "603"
},
{
"case": "block-dirty-bitmap-remove",
- "type": "591"
+ "type": "604"
},
{
"case": "block-dirty-bitmap-clear",
- "type": "591"
+ "type": "604"
},
{
"case": "block-dirty-bitmap-enable",
- "type": "591"
+ "type": "604"
},
{
"case": "block-dirty-bitmap-disable",
- "type": "591"
+ "type": "604"
},
{
"case": "block-dirty-bitmap-merge",
- "type": "592"
+ "type": "605"
},
{
"case": "blockdev-backup",
- "type": "593"
+ "type": "606"
},
{
"case": "blockdev-snapshot",
- "type": "594"
+ "type": "607"
},
{
"case": "blockdev-snapshot-internal-sync",
- "type": "595"
+ "type": "608"
},
{
"case": "blockdev-snapshot-sync",
- "type": "596"
+ "type": "609"
},
{
"case": "drive-backup",
- "type": "597"
+ "type": "610"
}
],
"members": [
{
"name": "type",
- "type": "588"
+ "type": "601"
}
],
"meta-type": "object"
},
{
- "name": "416",
+ "name": "418",
"members": [
{
"name": "completion-mode",
"default": null,
- "type": "598"
+ "type": "611"
}
],
"meta-type": "object"
},
{
- "name": "417",
+ "name": "419",
"members": [
{
"name": "unavailable"
@@ -13490,12 +13578,12 @@
]
},
{
- "name": "[418]",
- "element-type": "418",
+ "name": "[420]",
+ "element-type": "420",
"meta-type": "array"
},
{
- "name": "418",
+ "name": "420",
"members": [
{
"name": "oob"
@@ -13507,7 +13595,7 @@
]
},
{
- "name": "419",
+ "name": "421",
"members": [
{
"name": "major",
@@ -13525,7 +13613,7 @@
"meta-type": "object"
},
{
- "name": "420",
+ "name": "422",
"members": [
{
"name": "builtin"
@@ -13561,21 +13649,21 @@
]
},
{
- "name": "421",
+ "name": "423",
"members": [
{
"name": "json-type",
- "type": "599"
+ "type": "612"
}
],
"meta-type": "object"
},
{
- "name": "422",
+ "name": "424",
"members": [
{
"name": "members",
- "type": "[600]"
+ "type": "[613]"
},
{
"name": "values",
@@ -13588,7 +13676,7 @@
"meta-type": "object"
},
{
- "name": "423",
+ "name": "425",
"members": [
{
"name": "element-type",
@@ -13598,11 +13686,11 @@
"meta-type": "object"
},
{
- "name": "424",
+ "name": "426",
"members": [
{
"name": "members",
- "type": "[601]"
+ "type": "[614]"
},
{
"name": "tag",
@@ -13612,23 +13700,23 @@
{
"name": "variants",
"default": null,
- "type": "[602]"
+ "type": "[615]"
}
],
"meta-type": "object"
},
{
- "name": "425",
+ "name": "427",
"members": [
{
"name": "members",
- "type": "[603]"
+ "type": "[616]"
}
],
"meta-type": "object"
},
{
- "name": "426",
+ "name": "428",
"members": [
{
"name": "arg-type",
@@ -13647,7 +13735,7 @@
"meta-type": "object"
},
{
- "name": "427",
+ "name": "429",
"members": [
{
"name": "arg-type",
@@ -13657,7 +13745,7 @@
"meta-type": "object"
},
{
- "name": "428",
+ "name": "430",
"members": [
{
"name": "authz-list"
@@ -13847,23 +13935,23 @@
]
},
{
- "name": "429",
+ "name": "431",
"members": [
{
"name": "policy",
"default": null,
- "type": "604"
+ "type": "617"
},
{
"name": "rules",
"default": null,
- "type": "[605]"
+ "type": "[618]"
}
],
"meta-type": "object"
},
{
- "name": "430",
+ "name": "432",
"members": [
{
"name": "filename",
@@ -13878,7 +13966,7 @@
"meta-type": "object"
},
{
- "name": "431",
+ "name": "433",
"members": [
{
"name": "service",
@@ -13888,7 +13976,7 @@
"meta-type": "object"
},
{
- "name": "432",
+ "name": "434",
"members": [
{
"name": "identity",
@@ -13898,7 +13986,7 @@
"meta-type": "object"
},
{
- "name": "433",
+ "name": "435",
"members": [
{
"name": "if",
@@ -13912,7 +14000,7 @@
"meta-type": "object"
},
{
- "name": "434",
+ "name": "436",
"members": [
{
"name": "primary_in",
@@ -13959,7 +14047,7 @@
"meta-type": "object"
},
{
- "name": "435",
+ "name": "437",
"members": [
{
"name": "queues",
@@ -13970,7 +14058,7 @@
"meta-type": "object"
},
{
- "name": "436",
+ "name": "438",
"members": [
{
"name": "queues",
@@ -13985,7 +14073,7 @@
"meta-type": "object"
},
{
- "name": "437",
+ "name": "439",
"members": [
{
"name": "addr",
@@ -14000,7 +14088,7 @@
"meta-type": "object"
},
{
- "name": "438",
+ "name": "440",
"members": [
{
"name": "netdev",
@@ -14009,7 +14097,7 @@
{
"name": "queue",
"default": null,
- "type": "606"
+ "type": "619"
},
{
"name": "status",
@@ -14024,7 +14112,7 @@
{
"name": "insert",
"default": null,
- "type": "607"
+ "type": "620"
},
{
"name": "interval",
@@ -14034,7 +14122,7 @@
"meta-type": "object"
},
{
- "name": "439",
+ "name": "441",
"members": [
{
"name": "netdev",
@@ -14043,7 +14131,7 @@
{
"name": "queue",
"default": null,
- "type": "606"
+ "type": "619"
},
{
"name": "status",
@@ -14058,7 +14146,7 @@
{
"name": "insert",
"default": null,
- "type": "607"
+ "type": "620"
},
{
"name": "file",
@@ -14073,7 +14161,7 @@
"meta-type": "object"
},
{
- "name": "440",
+ "name": "442",
"members": [
{
"name": "netdev",
@@ -14082,7 +14170,7 @@
{
"name": "queue",
"default": null,
- "type": "606"
+ "type": "619"
},
{
"name": "status",
@@ -14097,7 +14185,7 @@
{
"name": "insert",
"default": null,
- "type": "607"
+ "type": "620"
},
{
"name": "outdev",
@@ -14112,7 +14200,7 @@
"meta-type": "object"
},
{
- "name": "441",
+ "name": "443",
"members": [
{
"name": "netdev",
@@ -14121,7 +14209,7 @@
{
"name": "queue",
"default": null,
- "type": "606"
+ "type": "619"
},
{
"name": "status",
@@ -14136,7 +14224,7 @@
{
"name": "insert",
"default": null,
- "type": "607"
+ "type": "620"
},
{
"name": "indev",
@@ -14157,7 +14245,7 @@
"meta-type": "object"
},
{
- "name": "442",
+ "name": "444",
"members": [
{
"name": "netdev",
@@ -14166,7 +14254,7 @@
{
"name": "queue",
"default": null,
- "type": "606"
+ "type": "619"
},
{
"name": "status",
@@ -14181,13 +14269,13 @@
{
"name": "insert",
"default": null,
- "type": "607"
+ "type": "620"
}
],
"meta-type": "object"
},
{
- "name": "443",
+ "name": "445",
"members": [
{
"name": "netdev",
@@ -14196,7 +14284,7 @@
{
"name": "queue",
"default": null,
- "type": "606"
+ "type": "619"
},
{
"name": "status",
@@ -14211,7 +14299,7 @@
{
"name": "insert",
"default": null,
- "type": "607"
+ "type": "620"
},
{
"name": "vnet_hdr_support",
@@ -14222,7 +14310,7 @@
"meta-type": "object"
},
{
- "name": "444",
+ "name": "446",
"members": [
{
"name": "name",
@@ -14262,7 +14350,7 @@
"meta-type": "object"
},
{
- "name": "445",
+ "name": "447",
"members": [
{
"name": "evdev",
@@ -14281,13 +14369,13 @@
{
"name": "grab-toggle",
"default": null,
- "type": "608"
+ "type": "621"
}
],
"meta-type": "object"
},
{
- "name": "446",
+ "name": "448",
"members": [
{
"name": "aio-max-batch",
@@ -14323,7 +14411,7 @@
"meta-type": "object"
},
{
- "name": "447",
+ "name": "449",
"members": [
{
"name": "aio-max-batch",
@@ -14344,7 +14432,7 @@
"meta-type": "object"
},
{
- "name": "448",
+ "name": "450",
"members": [
{
"name": "dump",
@@ -14364,7 +14452,7 @@
{
"name": "policy",
"default": null,
- "type": "471"
+ "type": "473"
},
{
"name": "prealloc",
@@ -14404,7 +14492,7 @@
"meta-type": "object"
},
{
- "name": "449",
+ "name": "451",
"members": [
{
"name": "dump",
@@ -14424,7 +14512,7 @@
{
"name": "policy",
"default": null,
- "type": "471"
+ "type": "473"
},
{
"name": "prealloc",
@@ -14488,7 +14576,7 @@
"meta-type": "object"
},
{
- "name": "450",
+ "name": "452",
"members": [
{
"name": "dump",
@@ -14508,7 +14596,7 @@
{
"name": "policy",
"default": null,
- "type": "471"
+ "type": "473"
},
{
"name": "prealloc",
@@ -14563,7 +14651,7 @@
"meta-type": "object"
},
{
- "name": "451",
+ "name": "453",
"members": [
{
"name": "dump",
@@ -14583,7 +14671,7 @@
{
"name": "policy",
"default": null,
- "type": "471"
+ "type": "473"
},
{
"name": "prealloc",
@@ -14623,7 +14711,7 @@
"meta-type": "object"
},
{
- "name": "452",
+ "name": "454",
"members": [
{
"name": "path",
@@ -14633,7 +14721,7 @@
"meta-type": "object"
},
{
- "name": "453",
+ "name": "455",
"members": [
{
"name": "chardev",
@@ -14648,7 +14736,7 @@
"meta-type": "object"
},
{
- "name": "454",
+ "name": "456",
"members": [
{
"name": "opened",
@@ -14662,7 +14750,7 @@
"meta-type": "object"
},
{
- "name": "455",
+ "name": "457",
"members": [
{
"name": "opened",
@@ -14680,7 +14768,7 @@
"meta-type": "object"
},
{
- "name": "456",
+ "name": "458",
"members": [
{
"name": "opened",
@@ -14699,7 +14787,7 @@
"meta-type": "object"
},
{
- "name": "457",
+ "name": "459",
"members": [
{
"name": "loaded",
@@ -14712,7 +14800,7 @@
{
"name": "format",
"default": null,
- "type": "609"
+ "type": "622"
},
{
"name": "keyid",
@@ -14738,7 +14826,7 @@
"meta-type": "object"
},
{
- "name": "458",
+ "name": "460",
"members": [
{
"name": "loaded",
@@ -14751,7 +14839,7 @@
{
"name": "format",
"default": null,
- "type": "609"
+ "type": "622"
},
{
"name": "keyid",
@@ -14771,7 +14859,7 @@
"meta-type": "object"
},
{
- "name": "459",
+ "name": "461",
"members": [
{
"name": "sev-device",
@@ -14816,7 +14904,7 @@
"meta-type": "object"
},
{
- "name": "460",
+ "name": "462",
"members": [
{
"name": "cpu-affinity",
@@ -14832,12 +14920,12 @@
"meta-type": "object"
},
{
- "name": "461",
+ "name": "463",
"members": [
{
"name": "limits",
"default": null,
- "type": "610"
+ "type": "623"
},
{
"name": "x-iops-total",
@@ -14995,7 +15083,7 @@
"meta-type": "object"
},
{
- "name": "462",
+ "name": "464",
"members": [
{
"name": "verify-peer",
@@ -15010,7 +15098,7 @@
{
"name": "endpoint",
"default": null,
- "type": "611"
+ "type": "624"
},
{
"name": "priority",
@@ -15029,7 +15117,7 @@
"meta-type": "object"
},
{
- "name": "463",
+ "name": "465",
"members": [
{
"name": "verify-peer",
@@ -15044,7 +15132,7 @@
{
"name": "endpoint",
"default": null,
- "type": "611"
+ "type": "624"
},
{
"name": "priority",
@@ -15068,7 +15156,7 @@
"meta-type": "object"
},
{
- "name": "464",
+ "name": "466",
"members": [
{
"name": "verify-peer",
@@ -15083,7 +15171,7 @@
{
"name": "endpoint",
"default": null,
- "type": "611"
+ "type": "624"
},
{
"name": "priority",
@@ -15112,7 +15200,7 @@
"meta-type": "object"
},
{
- "name": "465",
+ "name": "467",
"members": [
{
"name": "verify-peer",
@@ -15127,7 +15215,7 @@
{
"name": "endpoint",
"default": null,
- "type": "611"
+ "type": "624"
},
{
"name": "priority",
@@ -15138,7 +15226,7 @@
"meta-type": "object"
},
{
- "name": "466",
+ "name": "468",
"members": [
{
"name": "fd",
@@ -15152,11 +15240,11 @@
"meta-type": "object"
},
{
- "name": "467",
+ "name": "469",
"members": [
{
"name": "socket",
- "type": "365"
+ "type": "367"
},
{
"name": "device",
@@ -15166,7 +15254,7 @@
"meta-type": "object"
},
{
- "name": "468",
+ "name": "470",
"members": [
{
"name": "node-id",
@@ -15202,7 +15290,7 @@
"meta-type": "object"
},
{
- "name": "469",
+ "name": "471",
"members": [
{
"name": "aarch64"
@@ -15334,17 +15422,17 @@
]
},
{
- "name": "470",
+ "name": "472",
"members": [
{
"name": "cpu-state",
- "type": "612"
+ "type": "625"
}
],
"meta-type": "object"
},
{
- "name": "471",
+ "name": "473",
"members": [
{
"name": "default"
@@ -15368,7 +15456,7 @@
]
},
{
- "name": "472",
+ "name": "474",
"members": [
{
"name": "node"
@@ -15396,7 +15484,7 @@
]
},
{
- "name": "473",
+ "name": "475",
"members": [
{
"name": "nodeid",
@@ -15427,7 +15515,7 @@
"meta-type": "object"
},
{
- "name": "474",
+ "name": "476",
"members": [
{
"name": "src",
@@ -15445,7 +15533,7 @@
"meta-type": "object"
},
{
- "name": "475",
+ "name": "477",
"members": [
{
"name": "node-id",
@@ -15481,7 +15569,7 @@
"meta-type": "object"
},
{
- "name": "476",
+ "name": "478",
"members": [
{
"name": "initiator",
@@ -15493,11 +15581,11 @@
},
{
"name": "hierarchy",
- "type": "613"
+ "type": "626"
},
{
"name": "data-type",
- "type": "614"
+ "type": "627"
},
{
"name": "latency",
@@ -15513,7 +15601,7 @@
"meta-type": "object"
},
{
- "name": "477",
+ "name": "479",
"members": [
{
"name": "node-id",
@@ -15529,11 +15617,11 @@
},
{
"name": "associativity",
- "type": "615"
+ "type": "628"
},
{
"name": "policy",
- "type": "616"
+ "type": "629"
},
{
"name": "line",
@@ -15543,7 +15631,7 @@
"meta-type": "object"
},
{
- "name": "478",
+ "name": "480",
"members": [
{
"name": "dimm"
@@ -15571,47 +15659,47 @@
]
},
{
- "name": "479",
+ "name": "481",
"members": [
{
"name": "data",
- "type": "617"
+ "type": "630"
}
],
"meta-type": "object"
},
{
- "name": "480",
+ "name": "482",
"members": [
{
"name": "data",
- "type": "618"
+ "type": "631"
}
],
"meta-type": "object"
},
{
- "name": "481",
+ "name": "483",
"members": [
{
"name": "data",
- "type": "619"
+ "type": "632"
}
],
"meta-type": "object"
},
{
- "name": "482",
+ "name": "484",
"members": [
{
"name": "data",
- "type": "620"
+ "type": "633"
}
],
"meta-type": "object"
},
{
- "name": "483",
+ "name": "485",
"members": [
{
"name": "name",
@@ -15626,7 +15714,7 @@
"meta-type": "object"
},
{
- "name": "484",
+ "name": "486",
"members": [
{
"name": "incompatible"
@@ -15650,7 +15738,7 @@
]
},
{
- "name": "485",
+ "name": "487",
"members": [
{
"name": "static"
@@ -15666,7 +15754,7 @@
]
},
{
- "name": "486",
+ "name": "488",
"members": [
{
"name": "none"
@@ -15686,7 +15774,7 @@
]
},
{
- "name": "487",
+ "name": "489",
"members": [
{
"name": "block-node"
@@ -15706,7 +15794,7 @@
]
},
{
- "name": "488",
+ "name": "490",
"members": [
{
"name": "node-name",
@@ -15716,7 +15804,7 @@
"meta-type": "object"
},
{
- "name": "489",
+ "name": "491",
"members": [
{
"name": "id",
@@ -15726,12 +15814,12 @@
"meta-type": "object"
},
{
- "name": "[490]",
- "element-type": "490",
+ "name": "[492]",
+ "element-type": "492",
"meta-type": "array"
},
{
- "name": "490",
+ "name": "492",
"members": [
{
"name": "fd",
@@ -15746,12 +15834,12 @@
"meta-type": "object"
},
{
- "name": "[491]",
- "element-type": "491",
+ "name": "[493]",
+ "element-type": "493",
"meta-type": "array"
},
{
- "name": "491",
+ "name": "493",
"members": [
{
"name": "name",
@@ -15759,7 +15847,7 @@
},
{
"name": "type",
- "type": "621"
+ "type": "634"
},
{
"name": "help",
@@ -15775,7 +15863,7 @@
"meta-type": "object"
},
{
- "name": "492",
+ "name": "494",
"members": [
{
"name": "uninit"
@@ -15807,12 +15895,12 @@
]
},
{
- "name": "[493]",
- "element-type": "493",
+ "name": "[495]",
+ "element-type": "495",
"meta-type": "array"
},
{
- "name": "493",
+ "name": "495",
"members": [
{
"name": "node",
@@ -15826,7 +15914,252 @@
"meta-type": "object"
},
{
- "name": "494",
+ "name": "496",
+ "members": [
+ {
+ "name": "none"
+ },
+ {
+ "name": "alsa"
+ },
+ {
+ "name": "dbus"
+ },
+ {
+ "name": "oss"
+ },
+ {
+ "name": "pa"
+ },
+ {
+ "name": "sdl"
+ },
+ {
+ "name": "spice"
+ },
+ {
+ "name": "wav"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "none",
+ "alsa",
+ "dbus",
+ "oss",
+ "pa",
+ "sdl",
+ "spice",
+ "wav"
+ ]
+ },
+ {
+ "name": "497",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "635"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "635"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "498",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "636"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "636"
+ },
+ {
+ "name": "threshold",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "499",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "637"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "637"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "500",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "635"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "635"
+ },
+ {
+ "name": "latency",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "501",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "638"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "638"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "502",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "639"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "639"
+ },
+ {
+ "name": "try-mmap",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "exclusive",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "dsp-policy",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "503",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "640"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "640"
+ },
+ {
+ "name": "server",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "504",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "641"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "641"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "505",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "635"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "635"
+ },
+ {
+ "name": "dev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "latency",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "506",
+ "members": [
+ {
+ "name": "in",
+ "default": null,
+ "type": "635"
+ },
+ {
+ "name": "out",
+ "default": null,
+ "type": "635"
+ },
+ {
+ "name": "path",
+ "default": null,
+ "type": "str"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "507",
"members": [
{
"name": "DIMM"
@@ -15842,12 +16175,12 @@
]
},
{
- "name": "[495]",
- "element-type": "495",
+ "name": "[508]",
+ "element-type": "508",
"meta-type": "array"
},
{
- "name": "495",
+ "name": "508",
"members": [
{
"name": "bus",
@@ -15863,11 +16196,11 @@
},
{
"name": "class_info",
- "type": "622"
+ "type": "642"
},
{
"name": "id",
- "type": "623"
+ "type": "643"
},
{
"name": "irq",
@@ -15885,17 +16218,17 @@
{
"name": "pci_bridge",
"default": null,
- "type": "624"
+ "type": "644"
},
{
"name": "regions",
- "type": "[625]"
+ "type": "[645]"
}
],
"meta-type": "object"
},
{
- "name": "496",
+ "name": "509",
"members": [
{
"name": "vm"
@@ -15911,16 +16244,16 @@
]
},
{
- "name": "[497]",
- "element-type": "497",
+ "name": "[510]",
+ "element-type": "510",
"meta-type": "array"
},
{
- "name": "497",
+ "name": "510",
"members": [
{
"name": "provider",
- "type": "499"
+ "type": "512"
},
{
"name": "names",
@@ -15931,7 +16264,7 @@
"meta-type": "object"
},
{
- "name": "498",
+ "name": "511",
"members": [
{
"name": "vcpus",
@@ -15942,7 +16275,7 @@
"meta-type": "object"
},
{
- "name": "499",
+ "name": "512",
"members": [
{
"name": "kvm"
@@ -15954,12 +16287,12 @@
]
},
{
- "name": "[500]",
- "element-type": "500",
+ "name": "[513]",
+ "element-type": "513",
"meta-type": "array"
},
{
- "name": "500",
+ "name": "513",
"members": [
{
"name": "name",
@@ -15967,18 +16300,18 @@
},
{
"name": "value",
- "type": "626"
+ "type": "646"
}
],
"meta-type": "object"
},
{
- "name": "[501]",
- "element-type": "501",
+ "name": "[514]",
+ "element-type": "514",
"meta-type": "array"
},
{
- "name": "501",
+ "name": "514",
"members": [
{
"name": "name",
@@ -15986,12 +16319,12 @@
},
{
"name": "type",
- "type": "627"
+ "type": "647"
},
{
"name": "unit",
"default": null,
- "type": "628"
+ "type": "648"
},
{
"name": "base",
@@ -16011,7 +16344,7 @@
"meta-type": "object"
},
{
- "name": "502",
+ "name": "515",
"members": [
{
"name": "transports",
@@ -16031,7 +16364,7 @@
"meta-type": "object"
},
{
- "name": "503",
+ "name": "516",
"members": [
{
"name": "statuses",
@@ -16046,7 +16379,7 @@
"meta-type": "object"
},
{
- "name": "504",
+ "name": "517",
"members": [
{
"name": "n-mem-sections",
@@ -16066,19 +16399,19 @@
},
{
"name": "features",
- "type": "502"
+ "type": "515"
},
{
"name": "acked-features",
- "type": "502"
+ "type": "515"
},
{
"name": "backend-features",
- "type": "502"
+ "type": "515"
},
{
"name": "protocol-features",
- "type": "629"
+ "type": "649"
},
{
"name": "max-queues",
@@ -16100,12 +16433,12 @@
"meta-type": "object"
},
{
- "name": "[505]",
- "element-type": "505",
+ "name": "[518]",
+ "element-type": "518",
"meta-type": "array"
},
{
- "name": "505",
+ "name": "518",
"members": [
{
"name": "addr",
@@ -16123,7 +16456,7 @@
"meta-type": "object"
},
{
- "name": "506",
+ "name": "519",
"members": [
{
"name": "flags",
@@ -16141,7 +16474,7 @@
"meta-type": "object"
},
{
- "name": "507",
+ "name": "520",
"members": [
{
"name": "flags",
@@ -16155,7 +16488,7 @@
"meta-type": "object"
},
{
- "name": "508",
+ "name": "521",
"members": [
{
"name": "hyper-v"
@@ -16171,7 +16504,7 @@
]
},
{
- "name": "509",
+ "name": "522",
"members": [
{
"name": "arg1",
@@ -16197,7 +16530,7 @@
"meta-type": "object"
},
{
- "name": "510",
+ "name": "523",
"members": [
{
"name": "core",
@@ -16213,18 +16546,18 @@
},
{
"name": "reason",
- "type": "630"
+ "type": "650"
}
],
"meta-type": "object"
},
{
- "name": "[511]",
- "element-type": "511",
+ "name": "[524]",
+ "element-type": "524",
"meta-type": "array"
},
{
- "name": "511",
+ "name": "524",
"members": [
{
"name": "interval_length",
@@ -16278,7 +16611,7 @@
"meta-type": "object"
},
{
- "name": "512",
+ "name": "525",
"members": [
{
"name": "boundaries",
@@ -16292,7 +16625,7 @@
"meta-type": "object"
},
{
- "name": "513",
+ "name": "526",
"members": [
{
"name": "discard-nb-ok",
@@ -16310,7 +16643,7 @@
"meta-type": "object"
},
{
- "name": "514",
+ "name": "527",
"members": [
{
"name": "completion-errors",
@@ -16333,36 +16666,40 @@
"meta-type": "array"
},
{
- "name": "515",
+ "name": "528",
"tag": "type",
"variants": [
{
"case": "qcow2",
- "type": "632"
+ "type": "652"
},
{
"case": "vmdk",
- "type": "633"
+ "type": "653"
},
{
"case": "luks",
- "type": "634"
+ "type": "654"
},
{
"case": "rbd",
- "type": "635"
+ "type": "655"
+ },
+ {
+ "case": "file",
+ "type": "656"
}
],
"members": [
{
"name": "type",
- "type": "631"
+ "type": "651"
}
],
"meta-type": "object"
},
{
- "name": "516",
+ "name": "529",
"members": [
{
"name": "block-backend"
@@ -16382,12 +16719,12 @@
]
},
{
- "name": "[517]",
- "element-type": "517",
+ "name": "[530]",
+ "element-type": "530",
"meta-type": "array"
},
{
- "name": "517",
+ "name": "530",
"members": [
{
"name": "consistent-read"
@@ -16411,7 +16748,7 @@
]
},
{
- "name": "518",
+ "name": "531",
"members": [
{
"type": "49"
@@ -16423,16 +16760,16 @@
"meta-type": "alternate"
},
{
- "name": "[519]",
- "element-type": "519",
+ "name": "[532]",
+ "element-type": "532",
"meta-type": "array"
},
{
- "name": "519",
+ "name": "532",
"members": [
{
"name": "event",
- "type": "636"
+ "type": "657"
},
{
"name": "state",
@@ -16442,7 +16779,7 @@
{
"name": "iotype",
"default": null,
- "type": "637"
+ "type": "658"
},
{
"name": "errno",
@@ -16468,16 +16805,16 @@
"meta-type": "object"
},
{
- "name": "[520]",
- "element-type": "520",
+ "name": "[533]",
+ "element-type": "533",
"meta-type": "array"
},
{
- "name": "520",
+ "name": "533",
"members": [
{
"name": "event",
- "type": "636"
+ "type": "657"
},
{
"name": "state",
@@ -16492,7 +16829,7 @@
"meta-type": "object"
},
{
- "name": "521",
+ "name": "534",
"members": [
{
"name": "break-guest-write"
@@ -16508,7 +16845,7 @@
]
},
{
- "name": "522",
+ "name": "535",
"members": [
{
"name": "auto"
@@ -16528,7 +16865,7 @@
]
},
{
- "name": "523",
+ "name": "536",
"members": [
{
"name": "threads"
@@ -16548,7 +16885,7 @@
]
},
{
- "name": "524",
+ "name": "537",
"members": [
{
"name": "tcp"
@@ -16564,7 +16901,7 @@
]
},
{
- "name": "525",
+ "name": "538",
"members": [
{
"name": "crc32c"
@@ -16588,11 +16925,11 @@
]
},
{
- "name": "526",
+ "name": "539",
"members": [
{
"name": "type",
- "type": "638"
+ "type": "659"
},
{
"name": "host",
@@ -16602,7 +16939,7 @@
"meta-type": "object"
},
{
- "name": "527",
+ "name": "540",
"members": [
{
"type": "49"
@@ -16617,62 +16954,62 @@
"meta-type": "alternate"
},
{
- "name": "528",
+ "name": "541",
"members": [
{
- "type": "639"
+ "type": "660"
},
{
- "type": "640"
+ "type": "661"
}
],
"meta-type": "alternate"
},
{
- "name": "529",
+ "name": "542",
"tag": "format",
"variants": [
{
"case": "aes",
- "type": "642"
+ "type": "663"
},
{
"case": "luks",
- "type": "643"
+ "type": "664"
}
],
"members": [
{
"name": "format",
- "type": "641"
+ "type": "662"
}
],
"meta-type": "object"
},
{
- "name": "530",
+ "name": "543",
"tag": "format",
"variants": [
{
"case": "aes",
- "type": "642"
+ "type": "663"
}
],
"members": [
{
"name": "format",
- "type": "644"
+ "type": "665"
}
],
"meta-type": "object"
},
{
- "name": "[518]",
- "element-type": "518",
+ "name": "[531]",
+ "element-type": "531",
"meta-type": "array"
},
{
- "name": "531",
+ "name": "544",
"members": [
{
"name": "quorum"
@@ -16688,33 +17025,33 @@
]
},
{
- "name": "532",
+ "name": "545",
"tag": "format",
"variants": [
{
"case": "luks",
- "type": "646"
+ "type": "667"
},
{
"case": "luks2",
- "type": "647"
+ "type": "668"
}
],
"members": [
{
"name": "format",
- "type": "645"
+ "type": "666"
}
],
"meta-type": "object"
},
{
- "name": "[533]",
- "element-type": "533",
+ "name": "[546]",
+ "element-type": "546",
"meta-type": "array"
},
{
- "name": "533",
+ "name": "546",
"members": [
{
"name": "cephx"
@@ -16730,12 +17067,12 @@
]
},
{
- "name": "[534]",
- "element-type": "534",
+ "name": "[547]",
+ "element-type": "547",
"meta-type": "array"
},
{
- "name": "534",
+ "name": "547",
"members": [
{
"name": "host",
@@ -16749,7 +17086,7 @@
"meta-type": "object"
},
{
- "name": "535",
+ "name": "548",
"members": [
{
"name": "primary"
@@ -16765,7 +17102,7 @@
]
},
{
- "name": "536",
+ "name": "549",
"members": [
{
"name": "host",
@@ -16809,12 +17146,12 @@
"meta-type": "object"
},
{
- "name": "537",
+ "name": "550",
"tag": "mode",
"variants": [
{
"case": "hash",
- "type": "649"
+ "type": "670"
},
{
"case": "none",
@@ -16828,13 +17165,13 @@
"members": [
{
"name": "mode",
- "type": "648"
+ "type": "669"
}
],
"meta-type": "object"
},
{
- "name": "538",
+ "name": "551",
"members": [
{
"name": "filename",
@@ -16847,7 +17184,7 @@
{
"name": "preallocation",
"default": null,
- "type": "650"
+ "type": "671"
},
{
"name": "nocow",
@@ -16863,11 +17200,11 @@
"meta-type": "object"
},
{
- "name": "539",
+ "name": "552",
"members": [
{
"name": "location",
- "type": "304"
+ "type": "306"
},
{
"name": "size",
@@ -16876,13 +17213,13 @@
{
"name": "preallocation",
"default": null,
- "type": "650"
+ "type": "671"
}
],
"meta-type": "object"
},
{
- "name": "540",
+ "name": "553",
"members": [
{
"name": "key-secret",
@@ -16892,27 +17229,27 @@
{
"name": "cipher-alg",
"default": null,
- "type": "651"
+ "type": "672"
},
{
"name": "cipher-mode",
"default": null,
- "type": "652"
+ "type": "673"
},
{
"name": "ivgen-alg",
"default": null,
- "type": "653"
+ "type": "674"
},
{
"name": "ivgen-hash-alg",
"default": null,
- "type": "654"
+ "type": "675"
},
{
"name": "hash-alg",
"default": null,
- "type": "654"
+ "type": "675"
},
{
"name": "iter-time",
@@ -16921,7 +17258,7 @@
},
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "size",
@@ -16930,17 +17267,17 @@
{
"name": "preallocation",
"default": null,
- "type": "650"
+ "type": "671"
}
],
"meta-type": "object"
},
{
- "name": "541",
+ "name": "554",
"members": [
{
"name": "location",
- "type": "311"
+ "type": "313"
},
{
"name": "size",
@@ -16950,11 +17287,11 @@
"meta-type": "object"
},
{
- "name": "542",
+ "name": "555",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "size",
@@ -16969,11 +17306,11 @@
"meta-type": "object"
},
{
- "name": "543",
+ "name": "556",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "size",
@@ -16987,22 +17324,22 @@
{
"name": "encrypt",
"default": null,
- "type": "655"
+ "type": "676"
}
],
"meta-type": "object"
},
{
- "name": "544",
+ "name": "557",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "data-file",
"default": null,
- "type": "518"
+ "type": "531"
},
{
"name": "data-file-raw",
@@ -17021,7 +17358,7 @@
{
"name": "version",
"default": null,
- "type": "656"
+ "type": "677"
},
{
"name": "backing-file",
@@ -17031,12 +17368,12 @@
{
"name": "backing-fmt",
"default": null,
- "type": "291"
+ "type": "293"
},
{
"name": "encrypt",
"default": null,
- "type": "655"
+ "type": "676"
},
{
"name": "cluster-size",
@@ -17046,7 +17383,7 @@
{
"name": "preallocation",
"default": null,
- "type": "650"
+ "type": "671"
},
{
"name": "lazy-refcounts",
@@ -17061,17 +17398,17 @@
{
"name": "compression-type",
"default": null,
- "type": "657"
+ "type": "678"
}
],
"meta-type": "object"
},
{
- "name": "545",
+ "name": "558",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "size",
@@ -17085,7 +17422,7 @@
{
"name": "backing-fmt",
"default": null,
- "type": "291"
+ "type": "293"
},
{
"name": "cluster-size",
@@ -17101,11 +17438,11 @@
"meta-type": "object"
},
{
- "name": "546",
+ "name": "559",
"members": [
{
"name": "location",
- "type": "321"
+ "type": "323"
},
{
"name": "size",
@@ -17119,17 +17456,17 @@
{
"name": "encrypt",
"default": null,
- "type": "658"
+ "type": "679"
}
],
"meta-type": "object"
},
{
- "name": "547",
+ "name": "560",
"members": [
{
"name": "location",
- "type": "323"
+ "type": "325"
},
{
"name": "size",
@@ -17139,11 +17476,11 @@
"meta-type": "object"
},
{
- "name": "548",
+ "name": "561",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "size",
@@ -17152,17 +17489,17 @@
{
"name": "preallocation",
"default": null,
- "type": "650"
+ "type": "671"
}
],
"meta-type": "object"
},
{
- "name": "549",
+ "name": "562",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "size",
@@ -17181,7 +17518,7 @@
{
"name": "subformat",
"default": null,
- "type": "659"
+ "type": "680"
},
{
"name": "block-state-zero",
@@ -17192,11 +17529,11 @@
"meta-type": "object"
},
{
- "name": "550",
+ "name": "563",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "size",
@@ -17205,12 +17542,12 @@
{
"name": "extents",
"default": null,
- "type": "[518]"
+ "type": "[531]"
},
{
"name": "subformat",
"default": null,
- "type": "660"
+ "type": "681"
},
{
"name": "backing-file",
@@ -17220,7 +17557,7 @@
{
"name": "adapter-type",
"default": null,
- "type": "661"
+ "type": "682"
},
{
"name": "hwversion",
@@ -17241,11 +17578,11 @@
"meta-type": "object"
},
{
- "name": "551",
+ "name": "564",
"members": [
{
"name": "file",
- "type": "518"
+ "type": "531"
},
{
"name": "size",
@@ -17254,7 +17591,7 @@
{
"name": "subformat",
"default": null,
- "type": "662"
+ "type": "683"
},
{
"name": "force-size",
@@ -17265,11 +17602,11 @@
"meta-type": "object"
},
{
- "name": "552",
+ "name": "565",
"members": [
{
"name": "state",
- "type": "663"
+ "type": "684"
},
{
"name": "new-secret",
@@ -17300,12 +17637,12 @@
"meta-type": "object"
},
{
- "name": "553",
+ "name": "566",
"members": [
{
"name": "encrypt",
"default": null,
- "type": "664"
+ "type": "685"
}
],
"meta-type": "object"
@@ -17316,7 +17653,7 @@
"meta-type": "builtin"
},
{
- "name": "554",
+ "name": "567",
"members": [
{
"name": "inet"
@@ -17340,47 +17677,47 @@
]
},
{
- "name": "555",
+ "name": "568",
"members": [
{
"name": "data",
- "type": "536"
+ "type": "549"
}
],
"meta-type": "object"
},
{
- "name": "556",
+ "name": "569",
"members": [
{
"name": "data",
- "type": "575"
+ "type": "588"
}
],
"meta-type": "object"
},
{
- "name": "557",
+ "name": "570",
"members": [
{
"name": "data",
- "type": "576"
+ "type": "589"
}
],
"meta-type": "object"
},
{
- "name": "558",
+ "name": "571",
"members": [
{
"name": "data",
- "type": "574"
+ "type": "587"
}
],
"meta-type": "object"
},
{
- "name": "559",
+ "name": "572",
"members": [
{
"name": "off"
@@ -17400,7 +17737,7 @@
]
},
{
- "name": "560",
+ "name": "573",
"members": [
{
"name": "file"
@@ -17496,142 +17833,142 @@
]
},
{
- "name": "561",
+ "name": "574",
"members": [
{
"name": "data",
- "type": "665"
+ "type": "686"
}
],
"meta-type": "object"
},
{
- "name": "562",
+ "name": "575",
"members": [
{
"name": "data",
- "type": "666"
+ "type": "687"
}
],
"meta-type": "object"
},
{
- "name": "563",
+ "name": "576",
"members": [
{
"name": "data",
- "type": "667"
+ "type": "688"
}
],
"meta-type": "object"
},
{
- "name": "564",
+ "name": "577",
"members": [
{
"name": "data",
- "type": "668"
+ "type": "689"
}
],
"meta-type": "object"
},
{
- "name": "565",
+ "name": "578",
"members": [
{
"name": "data",
- "type": "669"
+ "type": "690"
}
],
"meta-type": "object"
},
{
- "name": "566",
+ "name": "579",
"members": [
{
"name": "data",
- "type": "670"
+ "type": "691"
}
],
"meta-type": "object"
},
{
- "name": "567",
+ "name": "580",
"members": [
{
"name": "data",
- "type": "671"
+ "type": "692"
}
],
"meta-type": "object"
},
{
- "name": "568",
+ "name": "581",
"members": [
{
"name": "data",
- "type": "672"
+ "type": "693"
}
],
"meta-type": "object"
},
{
- "name": "569",
+ "name": "582",
"members": [
{
"name": "data",
- "type": "673"
+ "type": "694"
}
],
"meta-type": "object"
},
{
- "name": "570",
+ "name": "583",
"members": [
{
"name": "data",
- "type": "674"
+ "type": "695"
}
],
"meta-type": "object"
},
{
- "name": "571",
+ "name": "584",
"members": [
{
"name": "data",
- "type": "675"
+ "type": "696"
}
],
"meta-type": "object"
},
{
- "name": "572",
+ "name": "585",
"members": [
{
"name": "data",
- "type": "676"
+ "type": "697"
}
],
"meta-type": "object"
},
{
- "name": "573",
+ "name": "586",
"members": [
{
"name": "data",
- "type": "677"
+ "type": "698"
}
],
"meta-type": "object"
},
{
- "name": "[574]",
- "element-type": "574",
+ "name": "[587]",
+ "element-type": "587",
"meta-type": "array"
},
{
- "name": "574",
+ "name": "587",
"members": [
{
"name": "str",
@@ -17641,7 +17978,7 @@
"meta-type": "object"
},
{
- "name": "575",
+ "name": "588",
"members": [
{
"name": "path",
@@ -17661,7 +17998,7 @@
"meta-type": "object"
},
{
- "name": "576",
+ "name": "589",
"members": [
{
"name": "cid",
@@ -17675,27 +18012,27 @@
"meta-type": "object"
},
{
- "name": "577",
+ "name": "590",
"members": [
{
"name": "data",
- "type": "678"
+ "type": "699"
}
],
"meta-type": "object"
},
{
- "name": "578",
+ "name": "591",
"members": [
{
"name": "data",
- "type": "679"
+ "type": "700"
}
],
"meta-type": "object"
},
{
- "name": "579",
+ "name": "592",
"members": [
{
"name": "number"
@@ -17711,7 +18048,7 @@
]
},
{
- "name": "580",
+ "name": "593",
"members": [
{
"name": "data",
@@ -17721,17 +18058,17 @@
"meta-type": "object"
},
{
- "name": "581",
+ "name": "594",
"members": [
{
"name": "data",
- "type": "680"
+ "type": "701"
}
],
"meta-type": "object"
},
{
- "name": "582",
+ "name": "595",
"members": [
{
"name": "key"
@@ -17755,37 +18092,37 @@
]
},
{
- "name": "583",
+ "name": "596",
"members": [
{
"name": "data",
- "type": "681"
+ "type": "702"
}
],
"meta-type": "object"
},
{
- "name": "584",
+ "name": "597",
"members": [
{
"name": "data",
- "type": "682"
+ "type": "703"
}
],
"meta-type": "object"
},
{
- "name": "585",
+ "name": "598",
"members": [
{
"name": "data",
- "type": "683"
+ "type": "704"
}
],
"meta-type": "object"
},
{
- "name": "586",
+ "name": "599",
"members": [
{
"name": "lctrl-lalt"
@@ -17810,12 +18147,12 @@
"meta-type": "builtin"
},
{
- "name": "[587]",
- "element-type": "587",
+ "name": "[600]",
+ "element-type": "600",
"meta-type": "array"
},
{
- "name": "587",
+ "name": "600",
"members": [
{
"name": "name",
@@ -17828,13 +18165,13 @@
{
"name": "transform",
"default": null,
- "type": "684"
+ "type": "705"
}
],
"meta-type": "object"
},
{
- "name": "588",
+ "name": "601",
"members": [
{
"name": "abort"
@@ -17893,17 +18230,17 @@
]
},
{
- "name": "589",
+ "name": "602",
"members": [
{
"name": "data",
- "type": "685"
+ "type": "706"
}
],
"meta-type": "object"
},
{
- "name": "590",
+ "name": "603",
"members": [
{
"name": "data",
@@ -17913,7 +18250,7 @@
"meta-type": "object"
},
{
- "name": "591",
+ "name": "604",
"members": [
{
"name": "data",
@@ -17923,7 +18260,7 @@
"meta-type": "object"
},
{
- "name": "592",
+ "name": "605",
"members": [
{
"name": "data",
@@ -17933,7 +18270,7 @@
"meta-type": "object"
},
{
- "name": "593",
+ "name": "606",
"members": [
{
"name": "data",
@@ -17943,7 +18280,7 @@
"meta-type": "object"
},
{
- "name": "594",
+ "name": "607",
"members": [
{
"name": "data",
@@ -17953,7 +18290,7 @@
"meta-type": "object"
},
{
- "name": "595",
+ "name": "608",
"members": [
{
"name": "data",
@@ -17963,7 +18300,7 @@
"meta-type": "object"
},
{
- "name": "596",
+ "name": "609",
"members": [
{
"name": "data",
@@ -17973,7 +18310,7 @@
"meta-type": "object"
},
{
- "name": "597",
+ "name": "610",
"members": [
{
"name": "data",
@@ -17983,7 +18320,7 @@
"meta-type": "object"
},
{
- "name": "598",
+ "name": "611",
"members": [
{
"name": "individual"
@@ -17999,7 +18336,7 @@
]
},
{
- "name": "599",
+ "name": "612",
"members": [
{
"name": "string"
@@ -18039,12 +18376,12 @@
]
},
{
- "name": "[600]",
- "element-type": "600",
+ "name": "[613]",
+ "element-type": "613",
"meta-type": "array"
},
{
- "name": "600",
+ "name": "613",
"members": [
{
"name": "name",
@@ -18059,12 +18396,12 @@
"meta-type": "object"
},
{
- "name": "[601]",
- "element-type": "601",
+ "name": "[614]",
+ "element-type": "614",
"meta-type": "array"
},
{
- "name": "601",
+ "name": "614",
"members": [
{
"name": "name",
@@ -18088,12 +18425,12 @@
"meta-type": "object"
},
{
- "name": "[602]",
- "element-type": "602",
+ "name": "[615]",
+ "element-type": "615",
"meta-type": "array"
},
{
- "name": "602",
+ "name": "615",
"members": [
{
"name": "case",
@@ -18107,12 +18444,12 @@
"meta-type": "object"
},
{
- "name": "[603]",
- "element-type": "603",
+ "name": "[616]",
+ "element-type": "616",
"meta-type": "array"
},
{
- "name": "603",
+ "name": "616",
"members": [
{
"name": "type",
@@ -18122,7 +18459,7 @@
"meta-type": "object"
},
{
- "name": "604",
+ "name": "617",
"members": [
{
"name": "deny"
@@ -18138,12 +18475,12 @@
]
},
{
- "name": "[605]",
- "element-type": "605",
+ "name": "[618]",
+ "element-type": "618",
"meta-type": "array"
},
{
- "name": "605",
+ "name": "618",
"members": [
{
"name": "match",
@@ -18151,18 +18488,18 @@
},
{
"name": "policy",
- "type": "604"
+ "type": "617"
},
{
"name": "format",
"default": null,
- "type": "686"
+ "type": "707"
}
],
"meta-type": "object"
},
{
- "name": "606",
+ "name": "619",
"members": [
{
"name": "all"
@@ -18182,7 +18519,7 @@
]
},
{
- "name": "607",
+ "name": "620",
"members": [
{
"name": "before"
@@ -18198,7 +18535,7 @@
]
},
{
- "name": "608",
+ "name": "621",
"members": [
{
"name": "ctrl-ctrl"
@@ -18230,7 +18567,7 @@
]
},
{
- "name": "609",
+ "name": "622",
"members": [
{
"name": "raw"
@@ -18246,7 +18583,7 @@
]
},
{
- "name": "610",
+ "name": "623",
"members": [
{
"name": "iops-total",
@@ -18347,7 +18684,7 @@
"meta-type": "object"
},
{
- "name": "611",
+ "name": "624",
"members": [
{
"name": "client"
@@ -18363,7 +18700,7 @@
]
},
{
- "name": "612",
+ "name": "625",
"members": [
{
"name": "uninitialized"
@@ -18391,7 +18728,7 @@
]
},
{
- "name": "613",
+ "name": "626",
"members": [
{
"name": "memory"
@@ -18415,7 +18752,7 @@
]
},
{
- "name": "614",
+ "name": "627",
"members": [
{
"name": "access-latency"
@@ -18447,7 +18784,7 @@
]
},
{
- "name": "615",
+ "name": "628",
"members": [
{
"name": "none"
@@ -18467,7 +18804,7 @@
]
},
{
- "name": "616",
+ "name": "629",
"members": [
{
"name": "none"
@@ -18487,7 +18824,7 @@
]
},
{
- "name": "617",
+ "name": "630",
"members": [
{
"name": "id",
@@ -18526,7 +18863,7 @@
"meta-type": "object"
},
{
- "name": "618",
+ "name": "631",
"members": [
{
"name": "id",
@@ -18549,7 +18886,7 @@
"meta-type": "object"
},
{
- "name": "619",
+ "name": "632",
"members": [
{
"name": "id",
@@ -18588,7 +18925,7 @@
"meta-type": "object"
},
{
- "name": "620",
+ "name": "633",
"members": [
{
"name": "id",
@@ -18615,7 +18952,7 @@
"meta-type": "object"
},
{
- "name": "621",
+ "name": "634",
"members": [
{
"name": "string"
@@ -18639,7 +18976,374 @@
]
},
{
- "name": "622",
+ "name": "635",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "708"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "636",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "708"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "dev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "period-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "try-poll",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "637",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "708"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "buffer-count",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "638",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "708"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "server-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "client-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "connect-ports",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "start-server",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "exact-name",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "639",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "708"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "dev",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "buffer-count",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "try-poll",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "640",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "708"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "stream-name",
+ "default": null,
+ "type": "str"
+ },
+ {
+ "name": "latency",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "641",
+ "members": [
+ {
+ "name": "mixing-engine",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "fixed-settings",
+ "default": null,
+ "type": "bool"
+ },
+ {
+ "name": "frequency",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "channels",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "voices",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "format",
+ "default": null,
+ "type": "708"
+ },
+ {
+ "name": "buffer-length",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "buffer-count",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "642",
"members": [
{
"name": "desc",
@@ -18654,7 +19358,7 @@
"meta-type": "object"
},
{
- "name": "623",
+ "name": "643",
"members": [
{
"name": "device",
@@ -18678,27 +19382,27 @@
"meta-type": "object"
},
{
- "name": "624",
+ "name": "644",
"members": [
{
"name": "bus",
- "type": "687"
+ "type": "709"
},
{
"name": "devices",
"default": null,
- "type": "[495]"
+ "type": "[508]"
}
],
"meta-type": "object"
},
{
- "name": "[625]",
- "element-type": "625",
+ "name": "[645]",
+ "element-type": "645",
"meta-type": "array"
},
{
- "name": "625",
+ "name": "645",
"members": [
{
"name": "bar",
@@ -18730,7 +19434,7 @@
"meta-type": "object"
},
{
- "name": "626",
+ "name": "646",
"members": [
{
"type": "int"
@@ -18745,7 +19449,7 @@
"meta-type": "alternate"
},
{
- "name": "627",
+ "name": "647",
"members": [
{
"name": "cumulative"
@@ -18773,7 +19477,7 @@
]
},
{
- "name": "628",
+ "name": "648",
"members": [
{
"name": "bytes"
@@ -18797,7 +19501,7 @@
]
},
{
- "name": "629",
+ "name": "649",
"members": [
{
"name": "protocols",
@@ -18812,7 +19516,7 @@
"meta-type": "object"
},
{
- "name": "630",
+ "name": "650",
"members": [
{
"name": "unknown"
@@ -18840,7 +19544,7 @@
]
},
{
- "name": "631",
+ "name": "651",
"members": [
{
"name": "qcow2"
@@ -18853,6 +19557,9 @@
},
{
"name": "rbd"
+ },
+ {
+ "name": "file"
}
],
"meta-type": "enum",
@@ -18860,51 +19567,62 @@
"qcow2",
"vmdk",
"luks",
- "rbd"
+ "rbd",
+ "file"
]
},
{
- "name": "632",
+ "name": "652",
"members": [
{
"name": "data",
- "type": "688"
+ "type": "710"
}
],
"meta-type": "object"
},
{
- "name": "633",
+ "name": "653",
"members": [
{
"name": "data",
- "type": "689"
+ "type": "711"
}
],
"meta-type": "object"
},
{
- "name": "634",
+ "name": "654",
"members": [
{
"name": "data",
- "type": "690"
+ "type": "712"
}
],
"meta-type": "object"
},
{
- "name": "635",
+ "name": "655",
"members": [
{
"name": "data",
- "type": "691"
+ "type": "713"
}
],
"meta-type": "object"
},
{
- "name": "636",
+ "name": "656",
+ "members": [
+ {
+ "name": "data",
+ "type": "714"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "657",
"members": [
{
"name": "l1_update"
@@ -19104,7 +19822,7 @@
]
},
{
- "name": "637",
+ "name": "658",
"members": [
{
"name": "read"
@@ -19136,7 +19854,7 @@
]
},
{
- "name": "638",
+ "name": "659",
"members": [
{
"name": "inet"
@@ -19148,12 +19866,12 @@
]
},
{
- "name": "639",
+ "name": "660",
"members": [
{
"name": "template",
"default": null,
- "type": "640"
+ "type": "661"
},
{
"name": "main-header",
@@ -19204,7 +19922,7 @@
"meta-type": "object"
},
{
- "name": "640",
+ "name": "661",
"members": [
{
"name": "none"
@@ -19228,7 +19946,7 @@
]
},
{
- "name": "641",
+ "name": "662",
"members": [
{
"name": "aes"
@@ -19244,7 +19962,7 @@
]
},
{
- "name": "642",
+ "name": "663",
"members": [
{
"name": "key-secret",
@@ -19255,7 +19973,7 @@
"meta-type": "object"
},
{
- "name": "643",
+ "name": "664",
"members": [
{
"name": "key-secret",
@@ -19266,7 +19984,7 @@
"meta-type": "object"
},
{
- "name": "644",
+ "name": "665",
"members": [
{
"name": "aes"
@@ -19278,7 +19996,7 @@
]
},
{
- "name": "645",
+ "name": "666",
"members": [
{
"name": "luks"
@@ -19294,7 +20012,7 @@
]
},
{
- "name": "646",
+ "name": "667",
"members": [
{
"name": "key-secret",
@@ -19304,7 +20022,7 @@
"meta-type": "object"
},
{
- "name": "647",
+ "name": "668",
"members": [
{
"name": "key-secret",
@@ -19314,7 +20032,7 @@
"meta-type": "object"
},
{
- "name": "648",
+ "name": "669",
"members": [
{
"name": "none"
@@ -19334,11 +20052,11 @@
]
},
{
- "name": "649",
+ "name": "670",
"members": [
{
"name": "type",
- "type": "692"
+ "type": "715"
},
{
"name": "hash",
@@ -19348,7 +20066,7 @@
"meta-type": "object"
},
{
- "name": "650",
+ "name": "671",
"members": [
{
"name": "off"
@@ -19372,7 +20090,7 @@
]
},
{
- "name": "651",
+ "name": "672",
"members": [
{
"name": "aes-128"
@@ -19428,7 +20146,7 @@
]
},
{
- "name": "652",
+ "name": "673",
"members": [
{
"name": "ecb"
@@ -19452,7 +20170,7 @@
]
},
{
- "name": "653",
+ "name": "674",
"members": [
{
"name": "plain"
@@ -19472,7 +20190,7 @@
]
},
{
- "name": "654",
+ "name": "675",
"members": [
{
"name": "md5"
@@ -19508,28 +20226,28 @@
]
},
{
- "name": "655",
+ "name": "676",
"tag": "format",
"variants": [
{
"case": "qcow",
- "type": "642"
+ "type": "663"
},
{
"case": "luks",
- "type": "694"
+ "type": "717"
}
],
"members": [
{
"name": "format",
- "type": "693"
+ "type": "716"
}
],
"meta-type": "object"
},
{
- "name": "656",
+ "name": "677",
"members": [
{
"name": "v2"
@@ -19545,7 +20263,7 @@
]
},
{
- "name": "657",
+ "name": "678",
"members": [
{
"name": "zlib"
@@ -19561,28 +20279,28 @@
]
},
{
- "name": "658",
+ "name": "679",
"tag": "format",
"variants": [
{
"case": "luks",
- "type": "695"
+ "type": "718"
},
{
"case": "luks2",
- "type": "696"
+ "type": "719"
}
],
"members": [
{
"name": "format",
- "type": "645"
+ "type": "666"
}
],
"meta-type": "object"
},
{
- "name": "659",
+ "name": "680",
"members": [
{
"name": "dynamic"
@@ -19598,7 +20316,7 @@
]
},
{
- "name": "660",
+ "name": "681",
"members": [
{
"name": "monolithicSparse"
@@ -19626,7 +20344,7 @@
]
},
{
- "name": "661",
+ "name": "682",
"members": [
{
"name": "ide"
@@ -19650,7 +20368,7 @@
]
},
{
- "name": "662",
+ "name": "683",
"members": [
{
"name": "dynamic"
@@ -19666,7 +20384,7 @@
]
},
{
- "name": "663",
+ "name": "684",
"members": [
{
"name": "active"
@@ -19682,12 +20400,12 @@
]
},
{
- "name": "664",
+ "name": "685",
"tag": "format",
"variants": [
{
"case": "luks",
- "type": "697"
+ "type": "720"
},
{
"case": "qcow",
@@ -19697,13 +20415,13 @@
"members": [
{
"name": "format",
- "type": "693"
+ "type": "716"
}
],
"meta-type": "object"
},
{
- "name": "665",
+ "name": "686",
"members": [
{
"name": "logfile",
@@ -19733,7 +20451,7 @@
"meta-type": "object"
},
{
- "name": "666",
+ "name": "687",
"members": [
{
"name": "logfile",
@@ -19753,7 +20471,7 @@
"meta-type": "object"
},
{
- "name": "667",
+ "name": "688",
"members": [
{
"name": "logfile",
@@ -19767,7 +20485,7 @@
},
{
"name": "addr",
- "type": "336"
+ "type": "338"
},
{
"name": "tls-creds",
@@ -19818,7 +20536,7 @@
"meta-type": "object"
},
{
- "name": "668",
+ "name": "689",
"members": [
{
"name": "logfile",
@@ -19832,18 +20550,18 @@
},
{
"name": "remote",
- "type": "336"
+ "type": "338"
},
{
"name": "local",
"default": null,
- "type": "336"
+ "type": "338"
}
],
"meta-type": "object"
},
{
- "name": "669",
+ "name": "690",
"members": [
{
"name": "logfile",
@@ -19859,7 +20577,7 @@
"meta-type": "object"
},
{
- "name": "670",
+ "name": "691",
"members": [
{
"name": "logfile",
@@ -19879,7 +20597,7 @@
"meta-type": "object"
},
{
- "name": "671",
+ "name": "692",
"members": [
{
"name": "logfile",
@@ -19900,7 +20618,7 @@
"meta-type": "object"
},
{
- "name": "672",
+ "name": "693",
"members": [
{
"name": "logfile",
@@ -19920,7 +20638,7 @@
"meta-type": "object"
},
{
- "name": "673",
+ "name": "694",
"members": [
{
"name": "logfile",
@@ -19940,7 +20658,7 @@
"meta-type": "object"
},
{
- "name": "674",
+ "name": "695",
"members": [
{
"name": "logfile",
@@ -19966,7 +20684,7 @@
"meta-type": "object"
},
{
- "name": "675",
+ "name": "696",
"members": [
{
"name": "logfile",
@@ -19986,7 +20704,7 @@
"meta-type": "object"
},
{
- "name": "676",
+ "name": "697",
"members": [
{
"name": "logfile",
@@ -20022,7 +20740,7 @@
"meta-type": "object"
},
{
- "name": "677",
+ "name": "698",
"members": [
{
"name": "logfile",
@@ -20043,7 +20761,7 @@
"meta-type": "object"
},
{
- "name": "678",
+ "name": "699",
"members": [
{
"name": "path",
@@ -20059,7 +20777,7 @@
"meta-type": "object"
},
{
- "name": "679",
+ "name": "700",
"members": [
{
"name": "chardev",
@@ -20069,7 +20787,7 @@
"meta-type": "object"
},
{
- "name": "680",
+ "name": "701",
"members": [
{
"name": "unmapped"
@@ -20677,11 +21395,11 @@
]
},
{
- "name": "681",
+ "name": "702",
"members": [
{
"name": "key",
- "type": "388"
+ "type": "390"
},
{
"name": "down",
@@ -20691,11 +21409,11 @@
"meta-type": "object"
},
{
- "name": "682",
+ "name": "703",
"members": [
{
"name": "button",
- "type": "698"
+ "type": "721"
},
{
"name": "down",
@@ -20705,11 +21423,11 @@
"meta-type": "object"
},
{
- "name": "683",
+ "name": "704",
"members": [
{
"name": "axis",
- "type": "699"
+ "type": "722"
},
{
"name": "value",
@@ -20719,7 +21437,7 @@
"meta-type": "object"
},
{
- "name": "684",
+ "name": "705",
"members": [
{
"name": "persistent",
@@ -20730,13 +21448,13 @@
"meta-type": "object"
},
{
- "name": "685",
+ "name": "706",
"members": [
],
"meta-type": "object"
},
{
- "name": "686",
+ "name": "707",
"members": [
{
"name": "exact"
@@ -20752,7 +21470,43 @@
]
},
{
- "name": "687",
+ "name": "708",
+ "members": [
+ {
+ "name": "u8"
+ },
+ {
+ "name": "s8"
+ },
+ {
+ "name": "u16"
+ },
+ {
+ "name": "s16"
+ },
+ {
+ "name": "u32"
+ },
+ {
+ "name": "s32"
+ },
+ {
+ "name": "f32"
+ }
+ ],
+ "meta-type": "enum",
+ "values": [
+ "u8",
+ "s8",
+ "u16",
+ "s16",
+ "u32",
+ "s32",
+ "f32"
+ ]
+ },
+ {
+ "name": "709",
"members": [
{
"name": "number",
@@ -20768,21 +21522,21 @@
},
{
"name": "io_range",
- "type": "700"
+ "type": "723"
},
{
"name": "memory_range",
- "type": "700"
+ "type": "723"
},
{
"name": "prefetchable_range",
- "type": "700"
+ "type": "723"
}
],
"meta-type": "object"
},
{
- "name": "688",
+ "name": "710",
"members": [
{
"name": "compat",
@@ -20820,22 +21574,22 @@
{
"name": "encrypt",
"default": null,
- "type": "701"
+ "type": "724"
},
{
"name": "bitmaps",
"default": null,
- "type": "[702]"
+ "type": "[725]"
},
{
"name": "compression-type",
- "type": "657"
+ "type": "678"
}
],
"meta-type": "object"
},
{
- "name": "689",
+ "name": "711",
"members": [
{
"name": "create-type",
@@ -20851,34 +21605,34 @@
},
{
"name": "extents",
- "type": "[284]"
+ "type": "[726]"
}
],
"meta-type": "object"
},
{
- "name": "690",
+ "name": "712",
"members": [
{
"name": "cipher-alg",
- "type": "651"
+ "type": "672"
},
{
"name": "cipher-mode",
- "type": "652"
+ "type": "673"
},
{
"name": "ivgen-alg",
- "type": "653"
+ "type": "674"
},
{
"name": "ivgen-hash-alg",
"default": null,
- "type": "654"
+ "type": "675"
},
{
"name": "hash-alg",
- "type": "654"
+ "type": "675"
},
{
"name": "payload-offset",
@@ -20894,24 +21648,35 @@
},
{
"name": "slots",
- "type": "[703]"
+ "type": "[727]"
}
],
"meta-type": "object"
},
{
- "name": "691",
+ "name": "713",
"members": [
{
"name": "encryption-format",
"default": null,
- "type": "645"
+ "type": "666"
}
],
"meta-type": "object"
},
{
- "name": "692",
+ "name": "714",
+ "members": [
+ {
+ "name": "extent-size-hint",
+ "default": null,
+ "type": "int"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "715",
"members": [
{
"name": "md5"
@@ -20931,7 +21696,7 @@
]
},
{
- "name": "693",
+ "name": "716",
"members": [
{
"name": "qcow"
@@ -20947,7 +21712,7 @@
]
},
{
- "name": "694",
+ "name": "717",
"members": [
{
"name": "key-secret",
@@ -20957,27 +21722,27 @@
{
"name": "cipher-alg",
"default": null,
- "type": "651"
+ "type": "672"
},
{
"name": "cipher-mode",
"default": null,
- "type": "652"
+ "type": "673"
},
{
"name": "ivgen-alg",
"default": null,
- "type": "653"
+ "type": "674"
},
{
"name": "ivgen-hash-alg",
"default": null,
- "type": "654"
+ "type": "675"
},
{
"name": "hash-alg",
"default": null,
- "type": "654"
+ "type": "675"
},
{
"name": "iter-time",
@@ -20988,7 +21753,7 @@
"meta-type": "object"
},
{
- "name": "695",
+ "name": "718",
"members": [
{
"name": "key-secret",
@@ -20997,13 +21762,13 @@
{
"name": "cipher-alg",
"default": null,
- "type": "651"
+ "type": "672"
}
],
"meta-type": "object"
},
{
- "name": "696",
+ "name": "719",
"members": [
{
"name": "key-secret",
@@ -21012,17 +21777,17 @@
{
"name": "cipher-alg",
"default": null,
- "type": "651"
+ "type": "672"
}
],
"meta-type": "object"
},
{
- "name": "697",
+ "name": "720",
"members": [
{
"name": "state",
- "type": "663"
+ "type": "684"
},
{
"name": "new-secret",
@@ -21053,7 +21818,7 @@
"meta-type": "object"
},
{
- "name": "698",
+ "name": "721",
"members": [
{
"name": "left"
@@ -21097,7 +21862,7 @@
]
},
{
- "name": "699",
+ "name": "722",
"members": [
{
"name": "x"
@@ -21113,7 +21878,7 @@
]
},
{
- "name": "700",
+ "name": "723",
"members": [
{
"name": "base",
@@ -21127,12 +21892,12 @@
"meta-type": "object"
},
{
- "name": "701",
+ "name": "724",
"tag": "format",
"variants": [
{
"case": "luks",
- "type": "690"
+ "type": "712"
},
{
"case": "aes",
@@ -21142,18 +21907,18 @@
"members": [
{
"name": "format",
- "type": "641"
+ "type": "662"
}
],
"meta-type": "object"
},
{
- "name": "[702]",
- "element-type": "702",
+ "name": "[725]",
+ "element-type": "725",
"meta-type": "array"
},
{
- "name": "702",
+ "name": "725",
"members": [
{
"name": "name",
@@ -21165,23 +21930,51 @@
},
{
"name": "flags",
- "type": "[704]"
+ "type": "[728]"
}
],
"meta-type": "object"
},
{
- "name": "[284]",
- "element-type": "284",
+ "name": "[726]",
+ "element-type": "726",
"meta-type": "array"
},
{
- "name": "[703]",
- "element-type": "703",
+ "name": "726",
+ "members": [
+ {
+ "name": "filename",
+ "type": "str"
+ },
+ {
+ "name": "format",
+ "type": "str"
+ },
+ {
+ "name": "virtual-size",
+ "type": "int"
+ },
+ {
+ "name": "cluster-size",
+ "default": null,
+ "type": "int"
+ },
+ {
+ "name": "compressed",
+ "default": null,
+ "type": "bool"
+ }
+ ],
+ "meta-type": "object"
+ },
+ {
+ "name": "[727]",
+ "element-type": "727",
"meta-type": "array"
},
{
- "name": "703",
+ "name": "727",
"members": [
{
"name": "active",
@@ -21205,12 +21998,12 @@
"meta-type": "object"
},
{
- "name": "[704]",
- "element-type": "704",
+ "name": "[728]",
+ "element-type": "728",
"meta-type": "array"
},
{
- "name": "704",
+ "name": "728",
"members": [
{
"name": "in-use"
@@ -21266,6 +22059,9 @@
{
"name": "query-acpi-ospm-status"
},
+ {
+ "name": "query-audiodevs"
+ },
{
"name": "query-sgx-capabilities"
},
@@ -21503,6 +22299,9 @@
{
"name": "snapshot-save"
},
+ {
+ "name": "query-migrationthreads"
+ },
{
"name": "query-vcpu-dirty-limit"
},
@@ -22596,6 +23395,10 @@
"name": "isa-pcspk",
"parent": "isa-device"
},
+ {
+ "name": "ide-cf",
+ "parent": "ide-device"
+ },
{
"name": "vhost-scsi",
"parent": "vhost-scsi-common"
@@ -23028,10 +23831,6 @@
"name": "pc-i440fx-3.1-machine",
"parent": "generic-pc-machine"
},
- {
- "name": "sga",
- "parent": "isa-device"
- },
{
"name": "Opteron_G5-x86_64-cpu",
"parent": "x86_64-cpu"
@@ -23240,6 +24039,10 @@
"name": "isa-cirrus-vga",
"parent": "isa-device"
},
+ {
+ "name": "pvrdma",
+ "parent": "pci-device"
+ },
{
"name": "qemu64-x86_64-cpu",
"parent": "x86_64-cpu"
@@ -23928,6 +24731,10 @@
"name": "Opteron_G4-v1-x86_64-cpu",
"parent": "x86_64-cpu"
},
+ {
+ "name": "qio-channel-rdma",
+ "parent": "qio-channel"
+ },
{
"name": "ne2k_isa",
"parent": "isa-device"
@@ -24308,14 +25115,14 @@
"name": "SCSI",
"parent": "bus"
},
- {
- "name": "Penryn-x86_64-cpu",
- "parent": "x86_64-cpu"
- },
{
"name": "hda-micro",
"parent": "hda-audio"
},
+ {
+ "name": "Penryn-x86_64-cpu",
+ "parent": "x86_64-cpu"
+ },
{
"name": "pxb-cxl",
"parent": "pci-device"
@@ -27904,13 +28711,13 @@
"type": "uint16"
},
{
- "default-value": true,
- "name": "hotplug",
+ "default-value": false,
+ "name": "x-do-not-expose-native-hotplug-cap",
"type": "bool"
},
{
"default-value": true,
- "name": "x-native-hotplug",
+ "name": "hotplug",
"type": "bool"
},
{
@@ -28346,7 +29153,7 @@
},
{
"default-value": true,
- "name": "use-disabled-flag",
+ "name": "x-early-migration",
"type": "bool"
},
{
@@ -28376,8 +29183,8 @@
"type": "bool"
},
{
- "default-value": true,
- "name": "queue_reset",
+ "default-value": false,
+ "name": "packed",
"description": "on/off",
"type": "bool"
},
@@ -28388,9 +29195,8 @@
"type": "bool"
},
{
- "default-value": false,
- "name": "packed",
- "description": "on/off",
+ "default-value": true,
+ "name": "use-started",
"type": "bool"
},
{
@@ -28404,7 +29210,8 @@
},
{
"default-value": true,
- "name": "use-started",
+ "name": "queue_reset",
+ "description": "on/off",
"type": "bool"
},
{
@@ -28413,6 +29220,11 @@
"description": "on/off/auto",
"type": "OnOffAuto"
},
+ {
+ "default-value": true,
+ "name": "use-disabled-flag",
+ "type": "bool"
+ },
{
"name": "size",
"type": "size"
@@ -29090,6 +29902,10 @@
"name": "taa-no",
"type": "bool"
},
+ {
+ "name": "sgx-aex-notify",
+ "type": "bool"
+ },
{
"name": "full-width-write",
"type": "bool"
@@ -29719,6 +30535,10 @@
"name": "vmx-rdtsc-exit",
"type": "bool"
},
+ {
+ "name": "sgx-edeccssa",
+ "type": "bool"
+ },
{
"name": "vmx-activity-hlt",
"type": "bool"
@@ -33700,10 +34520,6 @@
"name": "password-secret",
"type": "string"
},
- {
- "name": "password",
- "type": "string"
- },
{
"name": "unix",
"type": "boolean"
@@ -35051,6 +35867,7 @@
"x2apic": true,
"avx512vbmi": false,
"avx512vnni": false,
+ "sgx-edeccssa": false,
"vmx-apicv-x2apic": false,
"kvm-pv-sched-yield": true,
"vmx-invlpg-exit": false,
@@ -35228,6 +36045,7 @@
"xstore": false,
"rtm": false,
"kvm-hint-dedicated": false,
+ "sgx-aex-notify": false,
"amx-bf16": false,
"lmce": false,
"perfctr-nb": false,
@@ -35403,6 +36221,7 @@
"x2apic": true,
"avx512vbmi": false,
"avx512vnni": false,
+ "sgx-edeccssa": false,
"vmx-apicv-x2apic": false,
"kvm-pv-sched-yield": true,
"vmx-invlpg-exit": false,
@@ -35580,6 +36399,7 @@
"xstore": false,
"rtm": false,
"kvm-hint-dedicated": false,
+ "sgx-aex-notify": false,
"amx-bf16": false,
"lmce": false,
"perfctr-nb": false,
@@ -35792,6 +36612,7 @@
"vmx-invpcid-exit": false,
"amx-int8": false,
"x2apic": true,
+ "sgx-edeccssa": false,
"avx512vnni": false,
"avx512vbmi": false,
"vmx-apicv-x2apic": false,
@@ -36029,6 +36850,7 @@
"fxsr-opt": true,
"hv-synic": true,
"fxsr_opt": true,
+ "sgx-aex-notify": false,
"rtm": false,
"kvm-hint-dedicated": false,
"amx-bf16": false,
@@ -38561,6 +39383,7 @@
"x2apic": false,
"avx512vbmi": false,
"avx512vnni": false,
+ "sgx-edeccssa": false,
"vmx-apicv-x2apic": false,
"kvm-pv-sched-yield": false,
"vmx-invlpg-exit": false,
@@ -38738,6 +39561,7 @@
"xstore": false,
"rtm": false,
"kvm-hint-dedicated": false,
+ "sgx-aex-notify": false,
"amx-bf16": false,
"lmce": false,
"perfctr-nb": false,
@@ -38913,6 +39737,7 @@
"x2apic": false,
"avx512vbmi": false,
"avx512vnni": false,
+ "sgx-edeccssa": false,
"vmx-apicv-x2apic": false,
"kvm-pv-sched-yield": false,
"vmx-invlpg-exit": false,
@@ -39090,6 +39915,7 @@
"xstore": false,
"rtm": false,
"kvm-hint-dedicated": false,
+ "sgx-aex-notify": false,
"amx-bf16": false,
"lmce": false,
"perfctr-nb": false,
diff --git a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml
index c8b7f95c4a..75dfab484f 100644
--- a/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_8.0.0.x86_64.xml
@@ -207,7 +207,7 @@
<version>7002050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100244</microcodeVersion>
- <package>v7.2.0-333-g222059a0fc</package>
+ <package>v7.2.0-1550-g79b677d658</package>
<arch>x86_64</arch>
<hostCPU type='kvm' model='base' migratability='yes'>
<property name='vmx-entry-load-rtit-ctl' type='boolean' value='false'/>
@@ -332,6 +332,7 @@
<property name='x2apic' type='boolean' value='true' migratable='yes'/>
<property name='avx512vbmi' type='boolean' value='false'/>
<property name='avx512vnni' type='boolean' value='false'/>
+ <property name='sgx-edeccssa' type='boolean' value='false'/>
<property name='vmx-apicv-x2apic' type='boolean' value='false'/>
<property name='kvm-pv-sched-yield' type='boolean' value='true' migratable='yes'/>
<property name='vmx-invlpg-exit' type='boolean' value='false'/>
@@ -509,6 +510,7 @@
<property name='xstore' type='boolean' value='false'/>
<property name='rtm' type='boolean' value='false'/>
<property name='kvm-hint-dedicated' type='boolean' value='false'/>
+ <property name='sgx-aex-notify' type='boolean' value='false'/>
<property name='amx-bf16' type='boolean' value='false'/>
<property name='lmce' type='boolean' value='false'/>
<property name='perfctr-nb' type='boolean' value='false'/>
@@ -1675,6 +1677,7 @@
<property name='x2apic' type='boolean' value='false'/>
<property name='avx512vbmi' type='boolean' value='false'/>
<property name='avx512vnni' type='boolean' value='false'/>
+ <property name='sgx-edeccssa' type='boolean' value='false'/>
<property name='vmx-apicv-x2apic' type='boolean' value='false'/>
<property name='kvm-pv-sched-yield' type='boolean' value='false'/>
<property name='vmx-invlpg-exit' type='boolean' value='false'/>
@@ -1852,6 +1855,7 @@
<property name='xstore' type='boolean' value='false'/>
<property name='rtm' type='boolean' value='false'/>
<property name='kvm-hint-dedicated' type='boolean' value='false'/>
+ <property name='sgx-aex-notify' type='boolean' value='false'/>
<property name='amx-bf16' type='boolean' value='false'/>
<property name='lmce' type='boolean' value='false'/>
<property name='perfctr-nb' type='boolean' value='false'/>
--
2.39.2
2
1
Re: [PATCH v2 07/18] hw/ide/piix: Ensure IDE output IRQs are wired at realization
by Philippe Mathieu-Daudé 21 Feb '23
by Philippe Mathieu-Daudé 21 Feb '23
21 Feb '23
+Daniel, Igor, Marcel & libvirt
On 16/2/23 16:33, Philippe Mathieu-Daudé wrote:
> On 16/2/23 15:43, Bernhard Beschow wrote:
>>
>>
>> On Wed, Feb 15, 2023 at 5:20 PM Philippe Mathieu-Daudé
>> <philmd(a)linaro.org <mailto:philmd@linaro.org>> wrote:
>>
>> Â Â Â Ensure both IDE output IRQ lines are wired.
>>
>> Â Â Â We can remove the last use of isa_get_irq(NULL).
>>
>>    Signed-off-by: Philippe Mathieu-Daudé <philmd(a)linaro.org
>> Â Â Â <mailto:philmd@linaro.org>>
>> Â Â Â ---
>> Â Â Â Â Â hw/ide/piix.c | 13 ++++++++-----
>> Â Â Â Â Â 1 file changed, 8 insertions(+), 5 deletions(-)
>>
>> Â Â Â diff --git a/hw/ide/piix.c b/hw/ide/piix.c
>> Â Â Â index 9d876dd4a7..b75a4ddcca 100644
>> Â Â Â --- a/hw/ide/piix.c
>> Â Â Â +++ b/hw/ide/piix.c
>> Â Â Â @@ -133,14 +133,17 @@ static bool pci_piix_init_bus(PCIIDEState *d,
>> Â Â Â unsigned i, Error **errp)
>> Â Â Â Â Â Â Â static const struct {
>> Â Â Â Â Â Â Â Â Â int iobase;
>> Â Â Â Â Â Â Â Â Â int iobase2;
>> Â Â Â -Â Â Â Â int isairq;
>> Â Â Â Â Â Â Â } port_info[] = {
>> Â Â Â -Â Â Â Â {0x1f0, 0x3f6, 14},
>> Â Â Â -Â Â Â Â {0x170, 0x376, 15},
>> Â Â Â +Â Â Â Â {0x1f0, 0x3f6},
>> Â Â Â +Â Â Â Â {0x170, 0x376},
>> Â Â Â Â Â Â Â };
>> Â Â Â Â Â Â Â int ret;
>>
>> Â Â Â -Â Â qemu_irq irq_out = d->irq[i] ? : isa_get_irq(NULL,
>> Â Â Â port_info[i].isairq);
>> Â Â Â +Â Â if (!d->irq[i]) {
>> Â Â Â +Â Â Â Â error_setg(errp, "output IDE IRQ %u not connected", i);
>> Â Â Â +Â Â Â Â return false;
>> Â Â Â +Â Â }
>> Â Â Â +
>> Â Â Â Â Â Â Â ide_bus_init(&d->bus[i], sizeof(d->bus[i]), DEVICE(d), i, 2);
>> Â Â Â Â Â Â Â ret = ide_init_ioport(&d->bus[i], NULL, port_info[i].iobase,
>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â port_info[i].iobase2);
>> Â Â Â @@ -149,7 +152,7 @@ static bool pci_piix_init_bus(PCIIDEState *d,
>> Â Â Â unsigned i, Error **errp)
>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â object_get_typename(OBJECT(d)), i);
>> Â Â Â Â Â Â Â Â Â return false;
>> Â Â Â Â Â Â Â }
>> Â Â Â -Â Â ide_bus_init_output_irq(&d->bus[i], irq_out);
>> Â Â Â +Â Â ide_bus_init_output_irq(&d->bus[i], d->irq[i]);
>>
>> Â Â Â Â Â Â Â bmdma_init(&d->bus[i], &d->bmdma[i], d);
>> Â Â Â Â Â Â Â d->bmdma[i].bus = &d->bus[i];
>> Â Â Â -- Â Â Â 2.38.1
>>
>>
>> This now breaks user-created  piix3-ide:
>>
>> Â Â qemu-system-x86_64 -M q35 -device piix3-ide
>>
>> Results in:
>>
>> Â Â qemu-system-x86_64: -device piix3-ide: output IDE IRQ 0 not connected
>
> Thank you for this real-life-impossible-but-exists-in-QEMU test-case!
Do we really want to maintain this Frankenstein use case?
1/ Q35 comes with a PCIe bus on which sits a ICH chipset, which already
contains a AHCI function exposing multiple IDE buses.
What is the point on using an older tech?
2/ Why can we plug a PCI function on a PCIe bridge without using a
pcie-pci-bridge?
3/ Chipsets come as a whole. Software drivers might expect all PCI
functions working (Linux considering each function individually
is not the norm)
I get your use case working with the following diff [*]:
-- >8 --
diff --git a/hw/ide/piix.c b/hw/ide/piix.c
index 74e2f4288d..cb1628963a 100644
--- a/hw/ide/piix.c
+++ b/hw/ide/piix.c
@@ -140,8 +140,19 @@ static bool pci_piix_init_bus(PCIIDEState *d,
unsigned i, Error **errp)
};
if (!d->irq[i]) {
- error_setg(errp, "output IDE IRQ %u not connected", i);
- return false;
+ if (DEVICE_GET_CLASS(d)->user_creatable) {
+ /* Returns NULL unless there is exactly one ISA bus */
+ Object *isabus = object_resolve_path_type("", TYPE_ISA_BUS,
NULL);
+
+ if (!isabus) {
+ error_setg(errp, "Unable to find a single ISA bus");
+ return false;
+ }
+ d->irq[i] = isa_bus_get_irq(ISA_BUS(isabus), 14 + i);
+ } else {
+ error_setg(errp, "output IDE IRQ %u not connected", i);
+ return false;
+ }
}
ide_bus_init(&d->bus[i], sizeof(d->bus[i]), DEVICE(d), i, 2);
@@ -201,6 +212,13 @@ static void piix3_ide_class_init(ObjectClass
*klass, void *data)
k->class_id = PCI_CLASS_STORAGE_IDE;
set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
dc->hotpluggable = false;
+ /*
+ * This function is part of a Super I/O chip and shouldn't be user
+ * creatable. However QEMU accepts impossible hardware setups such
+ * plugging a PIIX IDE function on a ICH ISA bridge.
+ * Keep this Frankenstein (ab)use working.
+ */
+ dc->user_creatable = true;
}
static const TypeInfo piix3_ide_info = {
@@ -224,6 +242,8 @@ static void piix4_ide_class_init(ObjectClass *klass,
void *data)
k->class_id = PCI_CLASS_STORAGE_IDE;
set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
dc->hotpluggable = false;
+ /* Reason: Part of a Super I/O chip */
+ dc->user_creatable = false;
}
---
But the hardware really looks Frankenstein now:
(qemu) info qom-tree
/machine (pc-q35-8.0-machine)
/peripheral-anon (container)
/device[0] (piix3-ide)
/bmdma[0] (memory-region)
/bmdma[1] (memory-region)
/bus master container[0] (memory-region)
/bus master[0] (memory-region)
/ide.6 (IDE)
/ide.7 (IDE)
/ide[0] (memory-region)
/ide[1] (memory-region)
/ide[2] (memory-region)
/ide[3] (memory-region)
/piix-bmdma-container[0] (memory-region)
/piix-bmdma[0] (memory-region)
/piix-bmdma[1] (memory-region)
/q35 (q35-pcihost)
/unattached (container)
/device[17] (ich9-ahci)
/ahci-idp[0] (memory-region)
/ahci[0] (memory-region)
/bus master container[0] (memory-region)
/bus master[0] (memory-region)
/ide.0 (IDE)
/ide.1 (IDE)
/ide.2 (IDE)
/ide.3 (IDE)
/ide.4 (IDE)
/ide.5 (IDE)
/device[2] (ICH9-LPC)
/bus master container[0] (memory-region)
/bus master[0] (memory-region)
/ich9-pm[0] (memory-region)
/isa.0 (ISA)
I guess the diff [*] is acceptable as a kludge, but we might consider
deprecating such use.
Paolo, Michael & libvirt folks, what do you think?
Regards,
Phil.
4
3
From: ushen <yshxxsjt715(a)gmail.com>
QEMU has provided QMP blockdev-reopen to allow reconfigure some
driver properties while virtual machine is running. Such properties
are including cachmode, detect-zeroes and discard. This PS modifies
update-device a little bit to allow updating those properties.
Some cachemode types could be switched from using blockdev-reopen
without affect frontend device prameters. This PS will
compare the writeback flag between new and origin domain disk
object and continue blockdev reopen if writeback flag is the same.
Signed-off-by: shenjiatong <yshxxsjt715(a)gmail.com>
---
src/qemu/qemu_block.c | 69 ++++++++++++++++++++++++++++++++++++++++++
src/qemu/qemu_block.h | 9 ++++++
src/qemu/qemu_domain.c | 30 ++++++++++++++++--
src/qemu/qemu_driver.c | 41 +++++++++++++++++++++++++
4 files changed, 147 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 5e700eff99..3c45d8d7c7 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -2970,6 +2970,38 @@ qemuBlockReopenFormatMon(qemuMonitor *mon,
return 0;
}
+int
+qemuBlockReopenMon(qemuMonitor *mon,
+ virStorageSource *src)
+{
+ g_autoptr(virJSONValue) reopenprops = NULL;
+ g_autoptr(virJSONValue) srcprops = NULL;
+ g_autoptr(virJSONValue) srcstorprops = NULL;
+ g_autoptr(virJSONValue) reopenoptions = virJSONValueNewArray();
+
+ if (!(srcprops = qemuBlockStorageSourceGetBlockdevProps(src, src->backingStore)))
+ return -1;
+
+ if (!(srcstorprops = qemuBlockStorageSourceGetBackendProps(src, 0)))
+ return -1;
+
+ if (virJSONValueArrayAppend(reopenoptions, &srcprops) < 0)
+ return -1;
+
+ if (virJSONValueArrayAppend(reopenoptions, &srcstorprops) < 0)
+ return -1;
+
+ if (virJSONValueObjectAdd(&reopenprops,
+ "a:options", &reopenoptions,
+ NULL) < 0)
+ return -1;
+
+ if (qemuMonitorBlockdevReopen(mon, &reopenprops) < 0)
+ return -1;
+
+ return 0;
+}
+
/**
* qemuBlockReopenFormat:
@@ -3010,6 +3042,43 @@ qemuBlockReopenFormat(virDomainObj *vm,
}
+/**
+ * qemuBlockReopen:
+ * @vm: domain object
+ * @src: storage source to reopen
+ * @asyncJob: qemu async job type
+ *
+ * Same as qemuBlockReopenFormat, but both reopens storage and format node
+ */
+int
+qemuBlockReopen(virDomainObj *vm,
+ virStorageSource *src,
+ virDomainAsyncJob asyncJob)
+{
+ qemuDomainObjPrivate *priv = vm->privateData;
+ int rc;
+
+ /* If we are lacking the object here, qemu might have opened an image with
+ * a node name unknown to us */
+ if (!src->backingStore) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("can't reopen image with unknown presence of backing store"));
+ return -1;
+ }
+
+ if (qemuDomainObjEnterMonitorAsync(vm, asyncJob) < 0)
+ return -1;
+
+ rc = qemuBlockReopenMon(priv->mon, src);
+
+ qemuDomainObjExitMonitor(vm);
+ if (rc < 0)
+ return -1;
+
+ return 0;
+}
+
+
/**
* qemuBlockReopenReadWrite:
* @vm: domain object
diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h
index 5a61a19da2..28f9b6cc61 100644
--- a/src/qemu/qemu_block.h
+++ b/src/qemu/qemu_block.h
@@ -245,6 +245,15 @@ int
qemuBlockReopenFormatMon(qemuMonitor *mon,
virStorageSource *src);
+
+int
+qemuBlockReopenMon(qemuMonitor *mon, virStorageSource *src);
+
+int
+qemuBlockReopen(virDomainObj *vm,
+ virStorageSource *src,
+ virDomainAsyncJob asyncJob);
+
int
qemuBlockReopenReadWrite(virDomainObj *vm,
virStorageSource *src,
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index e9bc0f375d..d5d768c9b2 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -8129,6 +8129,28 @@ qemuDomainStorageSourceAccessAllow(virQEMUDriver *driver,
}
+static bool
+qemuCacheModeChangeSupported(virDomainDiskDef *disk,
+ virDomainDiskDef *orig_disk)
+{
+ bool new_wt, orig_wt;
+
+ if (qemuDomainDiskCachemodeFlags(disk->cachemode, &new_wt, NULL, NULL) < 0) {
+ return false;
+ }
+
+ if (qemuDomainDiskCachemodeFlags(orig_disk->cachemode, &orig_wt, NULL, NULL) < 0) {
+ return false;
+ }
+
+ if (new_wt != orig_wt) {
+ return false;
+ }
+
+ return true;
+}
+
+
/*
* Makes sure the @disk differs from @orig_disk only by the source
* path and nothing else. Fields that are being checked and the
@@ -8239,7 +8261,12 @@ qemuDomainDiskChangeSupported(virDomainDiskDef *disk,
CHECK_STREQ_NULLABLE(product,
"product");
- CHECK_EQ(cachemode, "cache", true);
+ if (!qemuCacheModeChangeSupported(disk, orig_disk)) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
+ _("cannot modify field '%s' of the disk"),
+ "cachemode");
+ return false;
+ }
CHECK_EQ(error_policy, "error_policy", true);
CHECK_EQ(rerror_policy, "rerror_policy", true);
CHECK_EQ(iomode, "io", true);
@@ -8267,7 +8294,6 @@ qemuDomainDiskChangeSupported(virDomainDiskDef *disk,
CHECK_EQ(info.bootIndex, "boot order", true);
CHECK_EQ(rawio, "rawio", true);
CHECK_EQ(sgio, "sgio", true);
- CHECK_EQ(discard, "discard", true);
CHECK_EQ(iothread, "iothread", true);
CHECK_STREQ_NULLABLE(domain_name,
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 6154fe9bfe..10c76a3af6 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -6802,6 +6802,8 @@ qemuDomainChangeDiskLive(virDomainObj *vm,
virDomainDiskDef *orig_disk = NULL;
virDomainStartupPolicy origStartupPolicy;
virDomainDeviceDef oldDev = { .type = dev->type };
+ virStorageSource *n = NULL;
+ int ret, detect_zeroes, discard, cachemode;
if (!(orig_disk = virDomainDiskByTarget(vm->def, disk->dst))) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -6840,8 +6842,47 @@ qemuDomainChangeDiskLive(virDomainObj *vm,
}
dev->data.disk->src = NULL;
+ } else {
+
+ // reopen disk device with more parameters
+ detect_zeroes = orig_disk->detect_zeroes;
+ discard = orig_disk->discard;
+ cachemode = orig_disk->cachemode;
+
+ if (detect_zeroes == disk->detect_zeroes &&
+ discard == disk->discard &&
+ discard == disk->cachemode) {
+ goto out;
+ }
+
+ orig_disk->detect_zeroes = disk->detect_zeroes;
+ orig_disk->discard = disk->discard;
+ orig_disk->cachemode = disk->cachemode;
+
+ for (n = orig_disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
+ if (n == orig_disk->src && detect_zeroes != disk->detect_zeroes) {
+ n->detect_zeroes = disk->detect_zeroes;
+ }
+ n->discard = disk->discard;
+ n->cachemode = disk->cachemode;
+ ret = qemuBlockReopen(vm, n, VIR_ASYNC_JOB_NONE);
+ if (ret < 0) {
+ if (n == orig_disk->src) {
+ orig_disk->detect_zeroes = detect_zeroes;
+ orig_disk->src->detect_zeroes = detect_zeroes;
+ orig_disk->discard = discard;
+ orig_disk->src->discard = discard;
+ orig_disk->cachemode = cachemode;
+ orig_disk->src->cachemode = cachemode;
+ virReportError(VIR_ERR_OPERATION_FAILED, "%s",
+ _("failed to blockreopen disk"));
+ return -1;
+ }
+ }
+ }
}
+ out:
/* in case when we aren't updating disk source we update startup policy here */
orig_disk->startupPolicy = dev->data.disk->startupPolicy;
orig_disk->snapshot = dev->data.disk->snapshot;
--
2.17.1
1
0
21 Feb '23
It was used briefly and subsequently removed in 3592b81c4c71.
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
src/conf/domain_conf.c | 1 -
src/conf/domain_conf.h | 1 -
2 files changed, 2 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index a5578324b93a..3dfc5c87af3c 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -2762,7 +2762,6 @@ virDomainNetDefFree(virDomainNetDef *def)
g_free(def->backend.tap);
g_free(def->backend.vhost);
g_free(def->backend.logFile);
- g_free(def->backend.upstream);
virDomainNetTeamingInfoFree(def->teaming);
g_free(def->virtPortProfile);
g_free(def->script);
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 62f80d653da8..7d58efb01170 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1061,7 +1061,6 @@ struct _virDomainNetBackend {
char *vhost;
/* The following are currently only valid/used when backend type='passt' */
char *logFile; /* path to logfile used by passt process */
- char *upstream; /* host interface to use for traffic egress */
};
struct _virDomainNetPortForwardRange {
--
2.39.1
2
1
There is no markup equivalent for any of the <s/> or <del/> HTML tags, so this
is the only thing I came up with and it looks like it works.
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
Sorry if I'm trampling on someone else's patches, I just figured out how to keep
the strike-through text Peter mentioned, so I'm sending it to "share the
knowledge" ;)
docs/404.html.in | 19 -------------------
docs/404.rst | 16 ++++++++++++++++
docs/css/libvirt.css | 4 ++++
docs/meson.build | 7 +------
4 files changed, 21 insertions(+), 25 deletions(-)
delete mode 100644 docs/404.html.in
create mode 100644 docs/404.rst
diff --git a/docs/404.html.in b/docs/404.html.in
deleted file mode 100644
index 0ac76f125af6..000000000000
--- a/docs/404.html.in
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
- <body>
- <h1>404 page not found</h1>
-
- <p>
- Someone appears to have eaten the <del>penguin</del>
- page you were looking for. You might want to try
- </p>
- <ul>
- <li>going back to the <a href="https://libvirt.org/">home page</a> to find
- a collection of links to interesting pages on this site</li>
- <li>using the search box at the top right corner of the screen to
- locate the content on this site or mailing list archives</li>
- </ul>
-
- </body>
-</html>
diff --git a/docs/404.rst b/docs/404.rst
new file mode 100644
index 000000000000..927a3e618b59
--- /dev/null
+++ b/docs/404.rst
@@ -0,0 +1,16 @@
+==================
+404 page not found
+==================
+
+.. role:: del
+ :class: del
+
+.. contents::
+
+Someone appears to have eaten the :del:`penguin` page you were looking
+for. You might want to try
+
+* going back to the `home page <https://libvirt.org/>`_ to find a collection
+ of links to interesting pages on this site
+* using the search box at the top right corner of the screen to
+ locate the content on this site or mailing list archives
diff --git a/docs/css/libvirt.css b/docs/css/libvirt.css
index 097dfcbe8e51..82f95d4a6808 100644
--- a/docs/css/libvirt.css
+++ b/docs/css/libvirt.css
@@ -636,3 +636,7 @@ th p, td p {
#contents p.topic-title {
display: none;
}
+
+span.del {
+ text-decoration: line-through;
+}
diff --git a/docs/meson.build b/docs/meson.build
index a90c59866a71..96ca21509047 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -22,6 +22,7 @@ docs_html_in_files = [
]
docs_rst_files = [
+ '404',
'aclpolkit',
'advanced-tests',
'api',
@@ -251,12 +252,6 @@ html_xslt_gen += {
'depends': aclperms_gen,
}
-html_xslt_gen += {
- 'name': '404',
- 'source': 'docs' / '404.html.in',
- 'href_base': '/',
-}
-
hvsupport_html_in = custom_target(
'hvsupport.html.in',
output: 'hvsupport.html.in',
--
2.39.1
2
1
Hi all!
Here I want to summarize new interfaces and use cases for backup in QEMU.
TODO for me: convert this into good rst documentation in docs/.
OK, let's begin.
First, note that drive-backup qmp command is deprecated.
Next, some terminology:
push backup: the whole process is inside QEMU process, also may be called "internal backup"
pull backup: QEMU only exports a kind of snapshot (for example by NBD), and third party software reads this export and stores it somehow, also called "external backup"
copy-before-write operations: We usually do backup of active disk, guest is running and may write to the disk during the process of backup. When guest wants to rewrite data region which is not backed up yet, we must stop this guest write, and copy original data to somewhere before continuing guest write. That's a copy-before-write operation.
image-fleecing: the technique that allows to export a "snapshotted" state of the active disk with help of copy-before-write operations. We create a temporary image - target for copy-before-write operations, and provide an interface to the user to read the "snapshotted" state. And for read, we do read from temporary image the data which is already changed in original active disk, and we read unchanged data directly from active disk. The temporary image itself is also called "reverse delta" or "reversed delta".
== Simple push backup ==
Just use blockdev-backup, nothing new here. I just note some technical details, that are relatively new:
1. First, backup job inserts copy-before-write filter above source disk, to do copy-before-write operation.
2. Created copy-before-write filter shares internal block-copy state with backup job, so they work in collaboration, to not copy same things twice.
== Full pull backup ==
Assume, we are going to do incremental backup in future, so we also need to create a dirty bitmap, to track dirtiness of active disk since full backup.
1. Create empty temporary image for fleecing. It must be of the same size as active disk. It's not necessary to be qcow2, and if it's a qcow2, you shouldn't make the original active disk a backing file for the new temporary qcow2 image (it was necessary in old fleecing scheme).
Example:
qemu-img create -f qcow2 temp.qcow2 64G
2. Initialize fleecing scheme and create dirty bitmap for future incremental backup.
Assume, disk0 is an active disk, attached to qdev-id sda, to be backed up.
qmp: transaction [
block-dirty-bitmap-add {node: disk0, name: bitmap0, persistent: true}
blockdev-add* {node-name: tmp-protocol, driver: file, filename: temp.qcow2}
blockdev-add {node-name: tmp, driver: qcow2, file: tmp-protocol}
blockdev-add {node-name: cbw, driver: copy-before-write, file: disk0, target: tmp}
blockdev-replace** {parent-type: qdev, qdev-id: sda, new-child: cbw}
blockdev-add {node-name: acc, driver: snapshot-access, file: cbw}
]
qmp: nbd-server-start {...}
qmp: nbd-server-add {device: acc, ...}
This way we create the following block-graph:
[guest] [NBD export]
| |
| root | root
v file v
[copy-before-write]<------[snapshot-access]
| |
| file | target
v v
[active-disk] [temp.qcow2]
* "[PATCH 0/2] blockdev-add transaction" series needed for this
** "[PATCH v3 00/11] blockdev-replace" series needed for this
Note additional useful options for copy-before-write filter:
"[PATCH 0/3] block: copy-before-write: on-cbw-error behavior" provides possibility of option on-cbw-error=break-snapshot, which means that on failure of CBW operation we will not break guest write, but instead all further reads by NBD client will fail, which formally means: break the backup process, not guest write.
"[PATCH 0/4] block: copy-before-write: cbw-timeout" provides an option cbw-timeout, to set a timeout for CBW operations. That's very useful to avoid guest stuck.
3. Now third party backup tool can read data from NBD export
NBD_CMD_TRIM (discard) operation is supported on the export, it has the following effects:
1. discard this data from temp image, if it is stored here
2. avoid further copy-before-write operation (guest is free to rewrite corresponding data with no extra latency)
3. all further read requests from discarded areas by NBD client will fail
So, NBD client may discard regions that are already backed up to avoid extra latency for guest writes and to free disk space on the host.
Possible TODO here is to implement NBD protocol extension, that allows to READ & DISCARD in command. In this case we avoid extra command in the wire, but lose possibility of retrying the READ operation if it failed.
4. After backup is complete, we should destroy the fleecing scheme:
qmp: nbd-server-stop
qmp: blockdev-del {node-name: acc}
qmp: blockdev-replace {parent-type: qdev, qdev-id: sda, new-child: disk0}
qmp: blockdev-del {node-name: cbw}
qmp: blockdev-del {node-name: tmp}
qmp: blockdev-del {node-name: tmp-protocol}
5. If backup failed, we should remove created dirty bitmap:
qmp: block-dirty-bitmap-remove {node: disk0, name: bitmap0}
== Incremental pull backup ==
OK, now we have a bitmap called bitmap0, and want to do incremental backup, accordingly to that bitmap. In short, we want:
- create a new bitmap to continue dirty tracking for next incremental backup
- export "snapshotted" state of disk0 through NBD
- export "frozen" bitmap, so that external tool know what to copy
Mostly, all points remains the same, let's go through:
1. Create empty temporary image for fleecing -- same as for full backup, no difference
2. Initialize fleecing scheme and create dirty bitmap for future incremental backup.
qmp: transaction [
block-dirty-bitmap-add {node: disk0, name: bitmap1, persistent: true}
block-dirty-bitmap-disable {node: disk0, name: bitmap0}
blockdev-add {node-name: tmp-protocol, driver: file, filename: temp.qcow2}
blockdev-add {node-name: tmp, driver: qcow2, file: tmp-protocol}
blockdev-add {node-name: cbw, driver: copy-before-write, file: disk0, target: tmp, bitmap: {node: disk0, name: bitmap0}}
blockdev-replace {parent-type: qdev, qdev-id: sda, new-child: cbw}
blockdev-add {node-name: acc, driver: snapshot-access, file: cbw}
]
qmp: nbd-server-start {...}
qmp: block-export-add {type: nbd, node-name: acc, bitmaps: [{node: disk0, name: bitmap0}]}
3. Now third party backup tool can read data from NBD export
- Client may negotiate meta contexts, to query exported dirty bitmap by NBD_BLOCK_STATUS commend
- If client reads "not-dirty" (by bitmap0) areas, it gets an error.
- NBD_CMD_TRIM (discard) works as for full backup, no difference
4. After backup is complete, we should destroy the fleecing scheme:
- Same as for full backup
5. Next, we should handle dirty bitmaps:
5.1 Failure path
Merge-back bitmap1 to bitmap0 and continue tracking in bitmap0:
qmp: transaction [
block-dirty-bitmap-enable {node: disk0, name: bitmap0}
block-dirty-bitmap-merge {node: disk0, target: bitmap0, bitmaps: ['bitmap1']}
block-dirty-bitmap-remove {node: disk0, name: bitmap1}
]
5.2 Success path
We have two possible user scenarios on success:
5.2.1 Continue tracking for next incremental backup in bitmap1
In this case, just remove bitmap0:
qmp: block-dirty-bitmap-remove {node: disk0, name: bitmap0}
Or you may not delete bitmap0 and keep it disabled, to be reused in future for differential backup (see below).
5.2.2 Continue tracking for next incremental backup in bitmap0 (assume, we always work with one bitmap and don't want any kind of differential backups, and don't associate bitmap name with stored backups)
In this case, enable and clear bitmap0, merge bitmap1 to bitmap0 and remove bitmap1:
qmp: transaction [
block-dirty-bitmap-enable {node: disk0, name: bitmap0}
block-dirty-bitmap-clear {node: disk0, name: bitmap0}
block-dirty-bitmap-merge {node: disk0, target: bitmap0, bitmaps: ['bitmap1']}
block-dirty-bitmap-remove {node: disk0, name: bitmap1}
]
== Push backup with fleecing full/incremental ==
Reasoning: the main problem of simple push backup is that guest writes may be seriously affected by copy-on-write operations, when backup target is slow. To solve this problem, we'll use the scheme like for pull backup: we create local temporary image, which is a target for copy-before-write operations, and instead of exporting the "snapshot-access" node we start internal backup from it to the target.
So, the scheme and commands looks exactly the same as for full and incremental pull backup. The only difference is that we don't need to start nbd export, but instead we should add target node to qemu and start internal backup. And good thing is that it may be done in same transaction with initializing fleecing scheme:
qmp: transaction [
... initialize fleecing scheme for full or incremental backup ...
# Add target node. Here is qcow2 added, but it may be nbd node or something else
blockdev-add {node-name: target-protocol, driver: file, filename: target.qcow2}
blockdev-add {node-name: target, driver: qcow2, file: target-protocol}
# Start backup
blockdev-backup {device: acc, target: target, ...}
]
If it is an incremental backup, pass also bitmap parameter:
blockdev-backup {..., bitmap: bitmap0, sync: incremental, bitmap-mode: never}
Note bitmap-mode=never: this means that backup will do nothing with bitmap0, so we have same scheme like for pull backups (handle bitmaps by hand after backup). Still, push-backup scheme may be adopted to use other bitmap modes.
What we lack here is discarding in 'acc' node after successful copying of the block to the target, to safe disk space and avoid extra copy-before-write operations. It's a TODO, should be implemented like discard-source parameter for blockdev-backup.
== Differential backups ==
I'm not fan of this idea, but I think it should be described.
Assume we have already a chain of incremental backups (represented as qcow2 chain on backup storage server, for example). They corresponds to some points in time: T0, T1, T2, T3. Assume T3 is the last backup.
If we want to create usual incremental backup, it would be diff between T3 and current time (which becomes T4).
Differential backup say: I want to make backup starting from T1 to current time. What's for? Maybe T2 and T3 was removed or somehow damaged..
How to do that in Qemu: on each incremental backup you start a new bitmap, and _keep_ old one as disabled.
This way we have bitmap0 (which presents diff between T0 and T1), bitmap1 (diff T1 T2), bitmap2 (diff T2 T3), and bitmap3 which shows diff from T3 up to current time. bitmap3 is the only enabled bitmap and others are disabled.
So, to make differential backup, use block-dirty-bitmap-merge command, to merge all bitmaps you need into one, and than use it in any backup scheme.
The drawback is that all these disabled bitmaps eat RAM. Possible solution is to not keep them in RAM, it's OK to keep them in qcow2, and load only on demand. That's not realized now and that's a TODO for thous who want differential backups.
--
Best regards,
Vladimir
3
2
This series fixes multiple problems with our ACL documentation.
Results of the changes should be browsable once pipeline finishes:
https://gitlab.com/pipo.sk/libvirt/-/jobs/3799680208
Peter Krempa (6):
docs: Fix generated names for ACL objects
docs: ACL: Mention the ACL object name along with the corresponding
libvirt object name
gendispatch: Add proper XML header to ACL permissions XML file
docs/html: Properly generate ACL permissions into API reference
docs: Distribute the XMLs with ACL permission flags for APIs
examples: polkit: Grant 'domain.read-secure' for the example cases
docs/html/meson.build | 32 ++++++++++++++++++++++++++++++-
docs/meson.build | 27 ++++++++++++++++++++++++++
docs/newapi.xsl | 12 +++++-------
examples/polkit/libvirt-acl.rules | 1 +
libvirt.spec.in | 3 +++
scripts/genaclperms.py | 8 ++++----
src/access/meson.build | 13 -------------
src/rpc/gendispatch.pl | 14 ++++++++++++--
8 files changed, 83 insertions(+), 27 deletions(-)
--
2.39.2
3
17
20 Feb '23
As suggested in [1].
[1] https://listman.redhat.com/archives/libvir-list/2022-December/236211.html
*** BLURB HERE ***
Andrea Bolognani (2):
docs: Recommend better python3 shebang
syntax-check: Ensure Python is called via env(1)
build-aux/syntax-check.mk | 5 +++++
docs/hooks.rst | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
--
2.39.2
2
7
I don't recall exactly when it first came up, but it has been a few years
now since the idea of moving away from 'master' as the git default branch
name became a topic in OSS communities. Far from the first mention:
https://sfconservancy.org/news/2020/jun/23/gitbranchname/
Both gitlab.com and github.com now default to 'main' as the default
branch when creating new repositories:
https://about.gitlab.com/blog/2021/03/10/new-git-default-branch-name/
https://github.blog/changelog/2020-10-01-the-default-branch-for-newly-creat…
Some notable large open source projects have done, (or at least started)
to rename the default branch in their existing projects too. eg
GNOME: https://gitlab.gnome.org/GNOME/glib/-/issues/2348
Fedora: https://fedoraproject.org/wiki/Changes/GitRepos-master-to-main
For libosinfo we did a rename last year. There was a little disruption
but nothing too terrible, IIRC, missing weblate translation branch
update was our main mistake.
I'd suggest it is time to libvirt to get on this train and rename our
default branch to 'main' in all repositories.
There are essentially two options
* Rename 'master' to 'main'
With this, anyone pulling from an existing checkout will get an
error telling them that 'master' does not exist. It won't tell
them about 'main', but at least it gives them a sign that something
in their checkout probably needs changing.
Downside is that any URLs pointing to source files / commits with
a branch name in the URL will become 404s.
* Clone 'master' to 'main'
With this, anyone pulling from an existing checkout will get no
updates. It is very easy for people to not realize that they are
tracking a branch which is no longer used
Downside is also that the undesirable term 'master' remains
present in the repo, even if unused. We might also miss places
which still refer to 'master' which will end up outdated
Ideally, we would rename 'master' to 'main', while the git server
adds 'symbolic-ref' to effectively create a symlink to 'main'. This
would mean anyone pulling from 'master' would get content from 'main'.
AFAICT, this is not supported by gitlab.com though. I had held off
suggesting the rename, hoping such support might arrive, but I'm
doubting it will happen on a timescale to be useful, if at all.
In terms of impact
* Developers need to checkout 'main' and delete their now stale
'master' branch
* Any open merge requests need updating, hitting 'Edit' and choose
the new 'main' as the target
* User repo forks may wish to delete their 'master' and push
'main', but that's entirely optional, since many people never
touch/look at the default branch in their forks.
* CI mostly shouldn't be impacted since we use CI_DEFAULT_BRANCH
most places instead of hardcoding 'master'. A few exceptions
- Links to artifacts include a branch name
- integration tests mention branch name
- References to check-doc/cirrus-run jobs use 'master'
as the docker tag
* GitHub mirroring won't track the rename, it'll just add 'main'
without removing 'master', so needs manual fixup.
* Need to update 'protected branch' and 'default branch' fields
in gitlab repo settings for each repo
* Weblate needs updating to translate from 'main' instead of
'master'
So the rename isn't free of cost, but it should all be one-time
only costs, which I think is something we can live with. Given
our never ceasing development stream there's not really any
'right' time todo such a change. Just after a release is probably
as good as it gets, and January is marginally better since we skip
Feb and have a 6 week gap until the March 1st release.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
5
6
This is a v2 of:
https://listman.redhat.com/archives/libvir-list/2023-February/237731.html
diff to v1:
- Merged patches that were ACKed in v1,
- Dropped 4/4 from the original series (the one that sets --foreground),
and implemented a different approach
Michal PrĂvoznĂk (5):
qemu_passt: Avoid double daemonizing passt
qemu_passt: Report passt's error on failed start
qemu_passt: Make passt report errors to stderr whenever possible
qemu_passt: Deduplicate passt killing code
qemu_passt: Let passt write the PID file
src/qemu/qemu_passt.c | 61 +++++++++++++++++++++++++++++--------------
1 file changed, 41 insertions(+), 20 deletions(-)
--
2.39.1
7
26
From: ushen <yshxxsjt715(a)gmail.com>
---
src/qemu/qemu_block.c | 2 +-
src/qemu/qemu_block.h | 5 +++++
src/qemu/qemu_domain.c | 2 --
src/qemu/qemu_driver.c | 17 +++++++++++++++++
4 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 5e700eff99..778aeebb8f 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -2981,7 +2981,7 @@ qemuBlockReopenFormatMon(qemuMonitor *mon,
* that @src must be already properly configured for the desired outcome. The
* nodenames of @src are used to identify the specific image in qemu.
*/
-static int
+int
qemuBlockReopenFormat(virDomainObj *vm,
virStorageSource *src,
virDomainAsyncJob asyncJob)
diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h
index 5a61a19da2..9ef692278d 100644
--- a/src/qemu/qemu_block.h
+++ b/src/qemu/qemu_block.h
@@ -245,6 +245,11 @@ int
qemuBlockReopenFormatMon(qemuMonitor *mon,
virStorageSource *src);
+int
+qemuBlockReopenFormat(virDomainObj *vm,
+ virStorageSource *src,
+ virDomainAsyncJob asyncJob);
+
int
qemuBlockReopenReadWrite(virDomainObj *vm,
virStorageSource *src,
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index e9bc0f375d..e5b5fef87e 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -8239,7 +8239,6 @@ qemuDomainDiskChangeSupported(virDomainDiskDef *disk,
CHECK_STREQ_NULLABLE(product,
"product");
- CHECK_EQ(cachemode, "cache", true);
CHECK_EQ(error_policy, "error_policy", true);
CHECK_EQ(rerror_policy, "rerror_policy", true);
CHECK_EQ(iomode, "io", true);
@@ -8267,7 +8266,6 @@ qemuDomainDiskChangeSupported(virDomainDiskDef *disk,
CHECK_EQ(info.bootIndex, "boot order", true);
CHECK_EQ(rawio, "rawio", true);
CHECK_EQ(sgio, "sgio", true);
- CHECK_EQ(discard, "discard", true);
CHECK_EQ(iothread, "iothread", true);
CHECK_STREQ_NULLABLE(domain_name,
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 6154fe9bfe..bcb68d6c66 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -6802,6 +6802,7 @@ qemuDomainChangeDiskLive(virDomainObj *vm,
virDomainDiskDef *orig_disk = NULL;
virDomainStartupPolicy origStartupPolicy;
virDomainDeviceDef oldDev = { .type = dev->type };
+ int ret;
if (!(orig_disk = virDomainDiskByTarget(vm->def, disk->dst))) {
virReportError(VIR_ERR_INTERNAL_ERROR,
@@ -6840,6 +6841,22 @@ qemuDomainChangeDiskLive(virDomainObj *vm,
}
dev->data.disk->src = NULL;
+ } else {
+ // reopen disk device with more parameters
+ disk->src->backingStore = orig_disk->src->backingStore;
+ ret = qemuBlockReopenFormat(vm, disk->src, false);
+ disk->src->backingStore = NULL;
+ if (!ret) {
+ orig_disk->cachemode = disk->cachemode;
+ orig_disk->src->cachemode = disk->src->cachemode;
+ orig_disk->detect_zeroes = disk->detect_zeroes;
+ orig_disk->src->detect_zeroes = disk->src->detect_zeroes;
+ orig_disk->discard = disk->discard;
+ orig_disk->src->discard = disk->src->discard;
+ disk->src->backingStore = NULL;
+ } else {
+ return ret;
+ }
}
/* in case when we aren't updating disk source we update startup policy here */
--
2.17.1
1
0
19 Feb '23
This is just a resend of the following series:
https://listman.redhat.com/archives/libvir-list/2021-October/msg00738.html
Michal PrĂvoznĂk (2):
selinux: Swap two blocks handling setfilecon_raw() failure
selinux: Don't ignore ENOENT in Permissive mode
src/security/security_selinux.c | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
--
2.39.1
2
3
[PATCH] docs: ACL: Mention the ACL object name along with the corresponding libvirt object name
by Peter Krempa 19 Feb '23
by Peter Krempa 19 Feb '23
19 Feb '23
It's not trivial to figure out the ACL object name from our
documentation. Add it above the table outlining existing permissions.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
scripts/genaclperms.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/genaclperms.py b/scripts/genaclperms.py
index e228b3ef60..e635dae50b 100755
--- a/scripts/genaclperms.py
+++ b/scripts/genaclperms.py
@@ -91,6 +91,7 @@ for obj in sorted(perms.keys()):
olink = "object_" + obj.lower()
print(' <h3><a id="%s">%s</a></h3>' % (olink, klass))
+ print(' <p>The <b>%s</b> libvirt object is represented as <code>%s</code>.</p>' % (klass, obj.lower()))
print(' <table>')
print(' <thead>')
print(' <tr>')
--
2.39.1
2
1
[PATCH] docs: ACL: Show which permissions are allowed for unauthenticated connections
by Peter Krempa 17 Feb '23
by Peter Krempa 17 Feb '23
17 Feb '23
Certain APIs are allowed also without authentication but the ACL page
didn't outline which. Generate a new column with the information.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
docs/acl.html.in | 3 ++-
scripts/genaclperms.py | 7 +++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/docs/acl.html.in b/docs/acl.html.in
index 3d0f651864..268d3aebd3 100644
--- a/docs/acl.html.in
+++ b/docs/acl.html.in
@@ -20,7 +20,8 @@
state, where the only API operations allowed are those required
to complete authentication. After successful authentication, a
connection either has full, unrestricted access to all libvirt
- API calls, or is locked down to only "read only" operations,
+ API calls, or is locked down to only "read only" (see 'Anonymous'
+ in the table below) operations,
according to what socket a client connection originated on.
</p>
diff --git a/scripts/genaclperms.py b/scripts/genaclperms.py
index e228b3ef60..43616dad04 100755
--- a/scripts/genaclperms.py
+++ b/scripts/genaclperms.py
@@ -96,6 +96,7 @@ for obj in sorted(perms.keys()):
print(' <tr>')
print(' <th>Permission</th>')
print(' <th>Description</th>')
+ print(' <th>Anonymous</th>')
print(' </tr>')
print(' </thead>')
print(' <tbody>')
@@ -103,6 +104,11 @@ for obj in sorted(perms.keys()):
for perm in sorted(perms[obj].keys()):
description = perms[obj][perm]["desc"]
+ if perms[obj][perm]["anonymous"]:
+ anonymous = 'yes'
+ else:
+ anonymous = ''
+
if description is None:
raise Exception("missing description for %s.%s" % (obj, perm))
@@ -112,6 +118,7 @@ for obj in sorted(perms.keys()):
print(' <tr>')
print(' <td><a id="%s">%s</a></td>' % (plink, perm))
print(' <td>%s</td>' % description)
+ print(' <td>%s</td>' % anonymous)
print(' </tr>')
print(' </tbody>')
--
2.39.1
2
1
See individual patches.
Peter Krempa (2):
access: Allow 'node-device.read' permission for anonymous users
libvirt-nodedev: Allow read-only access to virNodeDeviceGetAutostart
src/access/viraccessperm.h | 1 +
src/libvirt-nodedev.c | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
--
2.39.1
2
4
16 Feb '23
Our 404 error page is a little bit too boring. The solution is to
add more penguins !
This relies on MIT licensed javascript code imported from
https://github.com/VincentGarreau/particles.js
The image is extracted from the existing libvirt logo SVG file.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
docs/404.html.in | 7 +-
docs/css/libvirt.css | 12 +
docs/js/app.js | 108 +++
docs/js/meson.build | 2 +
docs/js/particles.js | 1541 ++++++++++++++++++++++++++++++++++++++++
docs/logos/meson.build | 2 +
docs/logos/penguin.png | Bin 0 -> 4236 bytes
docs/logos/penguin.svg | 358 ++++++++++
docs/page.xsl | 8 +
9 files changed, 2035 insertions(+), 3 deletions(-)
create mode 100644 docs/js/app.js
create mode 100644 docs/js/particles.js
create mode 100644 docs/logos/penguin.png
create mode 100644 docs/logos/penguin.svg
Yes, this could easily be considered an April Fools' joke, but at
the same time it is common to have a bit of fun with 404 error
pages, so it is also a real suggestion :-)
Live example rendering is at:
https://berrange.gitlab.io/-/libvirt/-/jobs/3749944370/artifacts/website/40…
The main "cost" of the fun is a few 10's of KB more in the dist
from the JS/SVG/PNG
diff --git a/docs/404.html.in b/docs/404.html.in
index 0ac76f125a..39cded58f6 100644
--- a/docs/404.html.in
+++ b/docs/404.html.in
@@ -5,15 +5,16 @@
<h1>404 page not found</h1>
<p>
- Someone appears to have eaten the <del>penguin</del>
- page you were looking for. You might want to try
+ We can't figure out which <del>penguin</del> page you were
+ looking for. You might want to try
</p>
<ul>
<li>going back to the <a href="https://libvirt.org/">home page</a> to find
a collection of links to interesting pages on this site</li>
<li>using the search box at the top right corner of the screen to
locate the content on this site or mailing list archives</li>
+ <li>selecting the right penguin swimming in the pool below</li>
</ul>
-
+ <div id="particles-js"><!-- preserve --></div>
</body>
</html>
diff --git a/docs/css/libvirt.css b/docs/css/libvirt.css
index 097dfcbe8e..fbd193da74 100644
--- a/docs/css/libvirt.css
+++ b/docs/css/libvirt.css
@@ -636,3 +636,15 @@ th p, td p {
#contents p.topic-title {
display: none;
}
+
+canvas {
+ display: block;
+ vertical-align: bottom;
+}
+
+#particles-js {
+ background-color: rgb(230,250,255);
+ border: 2px solid rgb(150,180,255);
+ width: 100%;
+ height: 100%;
+}
diff --git a/docs/js/app.js b/docs/js/app.js
new file mode 100644
index 0000000000..79fae27c2e
--- /dev/null
+++ b/docs/js/app.js
@@ -0,0 +1,108 @@
+particlesJS('particles-js',
+ {
+ "particles": {
+ "number": {
+ "value": 20,
+ "density": {
+ "enable": true,
+ "value_area": 800
+ }
+ },
+ "color": {
+ "value": "#ff0000"
+ },
+ "shape": {
+ "type": "image",
+ "image": {
+ "src": "logos/penguin.png",
+ "width": 73,
+ "height": 138
+ }
+ },
+ "opacity": {
+ "value": 0.5,
+ "random": true,
+ "anim": {
+ "enable": true,
+ "speed": 1,
+ "opacity_min": 0.1,
+ "sync": false
+ }
+ },
+ "size": {
+ "value": 50,
+ "random": true,
+ "anim": {
+ "enable": false,
+ "speed": 40,
+ "size_min": 0.1,
+ "sync": false
+ }
+ },
+ "line_linked": {
+ "enable": false,
+ },
+ "move": {
+ "enable": true,
+ "speed": 6,
+ "direction": "none",
+ "random": false,
+ "straight": false,
+ "out_mode": "bounce",
+ "attract": {
+ "enable": true,
+ "rotateX": 600,
+ "rotateY": 1200
+ }
+ }
+ },
+ "interactivity": {
+ "detect_on": "canvas",
+ "events": {
+ "onhover": {
+ "enable": true,
+ "mode": "repulse"
+ },
+ "onclick": {
+ "enable": true,
+ "mode": "push"
+ },
+ "resize": true
+ },
+ "modes": {
+ "grab": {
+ "distance": 400,
+ "line_linked": {
+ "opacity": 1
+ }
+ },
+ "bubble": {
+ "distance": 400,
+ "size": 40,
+ "duration": 2,
+ "opacity": 8,
+ "speed": 3
+ },
+ "repulse": {
+ "distance": 200
+ },
+ "push": {
+ "particles_nb": 4
+ },
+ "remove": {
+ "particles_nb": 2
+ }
+ }
+ },
+ "retina_detect": true,
+ "config_demo": {
+ "hide_card": false,
+ "background_color": "#b61924",
+ "background_image": "",
+ "background_position": "50% 50%",
+ "background_repeat": "no-repeat",
+ "background_size": "cover"
+ }
+ }
+
+);
diff --git a/docs/js/meson.build b/docs/js/meson.build
index cbf2dc2633..4e3e05bf89 100644
--- a/docs/js/meson.build
+++ b/docs/js/meson.build
@@ -1,5 +1,7 @@
docs_js_files = [
'main.js',
+ 'particles.js',
+ 'app.js'
]
install_data(docs_js_files, install_dir: docs_html_dir / 'js')
diff --git a/docs/js/particles.js b/docs/js/particles.js
new file mode 100644
index 0000000000..ef3917fab7
--- /dev/null
+++ b/docs/js/particles.js
@@ -0,0 +1,1541 @@
+/* -----------------------------------------------
+/* Author : Vincent Garreau - vincentgarreau.com
+/* MIT license: https://opensource.org/licenses/MIT
+/* Demo / Generator : vincentgarreau.com/particles.js
+/* GitHub : github.com/VincentGarreau/particles.js
+/* How to use? : Check the GitHub README
+/* v2.0.0
+/* ----------------------------------------------- */
+
+var pJS = function(tag_id, params){
+
+ var canvas_el = document.querySelector('#'+tag_id+' > .particles-js-canvas-el');
+
+ /* particles.js variables with default values */
+ this.pJS = {
+ canvas: {
+ el: canvas_el,
+ w: canvas_el.offsetWidth,
+ h: canvas_el.offsetHeight
+ },
+ particles: {
+ number: {
+ value: 400,
+ density: {
+ enable: true,
+ value_area: 800
+ }
+ },
+ color: {
+ value: '#fff'
+ },
+ shape: {
+ type: 'circle',
+ stroke: {
+ width: 0,
+ color: '#ff0000'
+ },
+ polygon: {
+ nb_sides: 5
+ },
+ image: {
+ src: '',
+ width: 100,
+ height: 100
+ }
+ },
+ opacity: {
+ value: 1,
+ random: false,
+ anim: {
+ enable: false,
+ speed: 2,
+ opacity_min: 0,
+ sync: false
+ }
+ },
+ size: {
+ value: 20,
+ random: false,
+ anim: {
+ enable: false,
+ speed: 20,
+ size_min: 0,
+ sync: false
+ }
+ },
+ line_linked: {
+ enable: true,
+ distance: 100,
+ color: '#fff',
+ opacity: 1,
+ width: 1
+ },
+ move: {
+ enable: true,
+ speed: 2,
+ direction: 'none',
+ random: false,
+ straight: false,
+ out_mode: 'out',
+ bounce: false,
+ attract: {
+ enable: false,
+ rotateX: 3000,
+ rotateY: 3000
+ }
+ },
+ array: []
+ },
+ interactivity: {
+ detect_on: 'canvas',
+ events: {
+ onhover: {
+ enable: true,
+ mode: 'grab'
+ },
+ onclick: {
+ enable: true,
+ mode: 'push'
+ },
+ resize: true
+ },
+ modes: {
+ grab:{
+ distance: 100,
+ line_linked:{
+ opacity: 1
+ }
+ },
+ bubble:{
+ distance: 200,
+ size: 80,
+ duration: 0.4
+ },
+ repulse:{
+ distance: 200,
+ duration: 0.4
+ },
+ push:{
+ particles_nb: 4
+ },
+ remove:{
+ particles_nb: 2
+ }
+ },
+ mouse:{}
+ },
+ retina_detect: false,
+ fn: {
+ interact: {},
+ modes: {},
+ vendors:{}
+ },
+ tmp: {}
+ };
+
+ var pJS = this.pJS;
+
+ /* params settings */
+ if(params){
+ Object.deepExtend(pJS, params);
+ }
+
+ pJS.tmp.obj = {
+ size_value: pJS.particles.size.value,
+ size_anim_speed: pJS.particles.size.anim.speed,
+ move_speed: pJS.particles.move.speed,
+ line_linked_distance: pJS.particles.line_linked.distance,
+ line_linked_width: pJS.particles.line_linked.width,
+ mode_grab_distance: pJS.interactivity.modes.grab.distance,
+ mode_bubble_distance: pJS.interactivity.modes.bubble.distance,
+ mode_bubble_size: pJS.interactivity.modes.bubble.size,
+ mode_repulse_distance: pJS.interactivity.modes.repulse.distance
+ };
+
+
+ pJS.fn.retinaInit = function(){
+
+ if(pJS.retina_detect && window.devicePixelRatio > 1){
+ pJS.canvas.pxratio = window.devicePixelRatio;
+ pJS.tmp.retina = true;
+ }
+ else{
+ pJS.canvas.pxratio = 1;
+ pJS.tmp.retina = false;
+ }
+
+ pJS.canvas.w = pJS.canvas.el.offsetWidth * pJS.canvas.pxratio;
+ pJS.canvas.h = pJS.canvas.el.offsetHeight * pJS.canvas.pxratio;
+
+ pJS.particles.size.value = pJS.tmp.obj.size_value * pJS.canvas.pxratio;
+ pJS.particles.size.anim.speed = pJS.tmp.obj.size_anim_speed * pJS.canvas.pxratio;
+ pJS.particles.move.speed = pJS.tmp.obj.move_speed * pJS.canvas.pxratio;
+ pJS.particles.line_linked.distance = pJS.tmp.obj.line_linked_distance * pJS.canvas.pxratio;
+ pJS.interactivity.modes.grab.distance = pJS.tmp.obj.mode_grab_distance * pJS.canvas.pxratio;
+ pJS.interactivity.modes.bubble.distance = pJS.tmp.obj.mode_bubble_distance * pJS.canvas.pxratio;
+ pJS.particles.line_linked.width = pJS.tmp.obj.line_linked_width * pJS.canvas.pxratio;
+ pJS.interactivity.modes.bubble.size = pJS.tmp.obj.mode_bubble_size * pJS.canvas.pxratio;
+ pJS.interactivity.modes.repulse.distance = pJS.tmp.obj.mode_repulse_distance * pJS.canvas.pxratio;
+
+ };
+
+
+
+ /* ---------- pJS functions - canvas ------------ */
+
+ pJS.fn.canvasInit = function(){
+ pJS.canvas.ctx = pJS.canvas.el.getContext('2d');
+ };
+
+ pJS.fn.canvasSize = function(){
+
+ pJS.canvas.el.width = pJS.canvas.w;
+ pJS.canvas.el.height = pJS.canvas.h;
+
+ if(pJS && pJS.interactivity.events.resize){
+
+ window.addEventListener('resize', function(){
+
+ pJS.canvas.w = pJS.canvas.el.offsetWidth;
+ pJS.canvas.h = pJS.canvas.el.offsetHeight;
+
+ /* resize canvas */
+ if(pJS.tmp.retina){
+ pJS.canvas.w *= pJS.canvas.pxratio;
+ pJS.canvas.h *= pJS.canvas.pxratio;
+ }
+
+ pJS.canvas.el.width = pJS.canvas.w;
+ pJS.canvas.el.height = pJS.canvas.h;
+
+ /* repaint canvas on anim disabled */
+ if(!pJS.particles.move.enable){
+ pJS.fn.particlesEmpty();
+ pJS.fn.particlesCreate();
+ pJS.fn.particlesDraw();
+ pJS.fn.vendors.densityAutoParticles();
+ }
+
+ /* density particles enabled */
+ pJS.fn.vendors.densityAutoParticles();
+
+ });
+
+ }
+
+ };
+
+
+ pJS.fn.canvasPaint = function(){
+ pJS.canvas.ctx.fillRect(0, 0, pJS.canvas.w, pJS.canvas.h);
+ };
+
+ pJS.fn.canvasClear = function(){
+ pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h);
+ };
+
+
+ /* --------- pJS functions - particles ----------- */
+
+ pJS.fn.particle = function(color, opacity, position){
+
+ /* size */
+ this.radius = (pJS.particles.size.random ? Math.random() : 1) * pJS.particles.size.value;
+ if(pJS.particles.size.anim.enable){
+ this.size_status = false;
+ this.vs = pJS.particles.size.anim.speed / 100;
+ if(!pJS.particles.size.anim.sync){
+ this.vs = this.vs * Math.random();
+ }
+ }
+
+ /* position */
+ this.x = position ? position.x : Math.random() * pJS.canvas.w;
+ this.y = position ? position.y : Math.random() * pJS.canvas.h;
+
+ /* check position - into the canvas */
+ if(this.x > pJS.canvas.w - this.radius*2) this.x = this.x - this.radius;
+ else if(this.x < this.radius*2) this.x = this.x + this.radius;
+ if(this.y > pJS.canvas.h - this.radius*2) this.y = this.y - this.radius;
+ else if(this.y < this.radius*2) this.y = this.y + this.radius;
+
+ /* check position - avoid overlap */
+ if(pJS.particles.move.bounce){
+ pJS.fn.vendors.checkOverlap(this, position);
+ }
+
+ /* color */
+ this.color = {};
+ if(typeof(color.value) == 'object'){
+
+ if(color.value instanceof Array){
+ var color_selected = color.value[Math.floor(Math.random() * pJS.particles.color.value.length)];
+ this.color.rgb = hexToRgb(color_selected);
+ }else{
+ if(color.value.r != undefined && color.value.g != undefined && color.value.b != undefined){
+ this.color.rgb = {
+ r: color.value.r,
+ g: color.value.g,
+ b: color.value.b
+ }
+ }
+ if(color.value.h != undefined && color.value.s != undefined && color.value.l != undefined){
+ this.color.hsl = {
+ h: color.value.h,
+ s: color.value.s,
+ l: color.value.l
+ }
+ }
+ }
+
+ }
+ else if(color.value == 'random'){
+ this.color.rgb = {
+ r: (Math.floor(Math.random() * (255 - 0 + 1)) + 0),
+ g: (Math.floor(Math.random() * (255 - 0 + 1)) + 0),
+ b: (Math.floor(Math.random() * (255 - 0 + 1)) + 0)
+ }
+ }
+ else if(typeof(color.value) == 'string'){
+ this.color = color;
+ this.color.rgb = hexToRgb(this.color.value);
+ }
+
+ /* opacity */
+ this.opacity = (pJS.particles.opacity.random ? Math.random() : 1) * pJS.particles.opacity.value;
+ if(pJS.particles.opacity.anim.enable){
+ this.opacity_status = false;
+ this.vo = pJS.particles.opacity.anim.speed / 100;
+ if(!pJS.particles.opacity.anim.sync){
+ this.vo = this.vo * Math.random();
+ }
+ }
+
+ /* animation - velocity for speed */
+ var velbase = {}
+ switch(pJS.particles.move.direction){
+ case 'top':
+ velbase = { x:0, y:-1 };
+ break;
+ case 'top-right':
+ velbase = { x:0.5, y:-0.5 };
+ break;
+ case 'right':
+ velbase = { x:1, y:-0 };
+ break;
+ case 'bottom-right':
+ velbase = { x:0.5, y:0.5 };
+ break;
+ case 'bottom':
+ velbase = { x:0, y:1 };
+ break;
+ case 'bottom-left':
+ velbase = { x:-0.5, y:1 };
+ break;
+ case 'left':
+ velbase = { x:-1, y:0 };
+ break;
+ case 'top-left':
+ velbase = { x:-0.5, y:-0.5 };
+ break;
+ default:
+ velbase = { x:0, y:0 };
+ break;
+ }
+
+ if(pJS.particles.move.straight){
+ this.vx = velbase.x;
+ this.vy = velbase.y;
+ if(pJS.particles.move.random){
+ this.vx = this.vx * (Math.random());
+ this.vy = this.vy * (Math.random());
+ }
+ }else{
+ this.vx = velbase.x + Math.random()-0.5;
+ this.vy = velbase.y + Math.random()-0.5;
+ }
+
+ // var theta = 2.0 * Math.PI * Math.random();
+ // this.vx = Math.cos(theta);
+ // this.vy = Math.sin(theta);
+
+ this.vx_i = this.vx;
+ this.vy_i = this.vy;
+
+
+
+ /* if shape is image */
+
+ var shape_type = pJS.particles.shape.type;
+ if(typeof(shape_type) == 'object'){
+ if(shape_type instanceof Array){
+ var shape_selected = shape_type[Math.floor(Math.random() * shape_type.length)];
+ this.shape = shape_selected;
+ }
+ }else{
+ this.shape = shape_type;
+ }
+
+ if(this.shape == 'image'){
+ var sh = pJS.particles.shape;
+ this.img = {
+ src: sh.image.src,
+ ratio: sh.image.width / sh.image.height
+ }
+ if(!this.img.ratio) this.img.ratio = 1;
+ if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg != undefined){
+ pJS.fn.vendors.createSvgImg(this);
+ if(pJS.tmp.pushing){
+ this.img.loaded = false;
+ }
+ }
+ }
+
+
+
+ };
+
+
+ pJS.fn.particle.prototype.draw = function() {
+
+ var p = this;
+
+ if(p.radius_bubble != undefined){
+ var radius = p.radius_bubble;
+ }else{
+ var radius = p.radius;
+ }
+
+ if(p.opacity_bubble != undefined){
+ var opacity = p.opacity_bubble;
+ }else{
+ var opacity = p.opacity;
+ }
+
+ if(p.color.rgb){
+ var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+opacity+')';
+ }else{
+ var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+opacity+')';
+ }
+
+ pJS.canvas.ctx.fillStyle = color_value;
+ pJS.canvas.ctx.beginPath();
+
+ switch(p.shape){
+
+ case 'circle':
+ pJS.canvas.ctx.arc(p.x, p.y, radius, 0, Math.PI * 2, false);
+ break;
+
+ case 'edge':
+ pJS.canvas.ctx.rect(p.x-radius, p.y-radius, radius*2, radius*2);
+ break;
+
+ case 'triangle':
+ pJS.fn.vendors.drawShape(pJS.canvas.ctx, p.x-radius, p.y+radius / 1.66, radius*2, 3, 2);
+ break;
+
+ case 'polygon':
+ pJS.fn.vendors.drawShape(
+ pJS.canvas.ctx,
+ p.x - radius / (pJS.particles.shape.polygon.nb_sides/3.5), // startX
+ p.y - radius / (2.66/3.5), // startY
+ radius*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength
+ pJS.particles.shape.polygon.nb_sides, // sideCountNumerator
+ 1 // sideCountDenominator
+ );
+ break;
+
+ case 'star':
+ pJS.fn.vendors.drawShape(
+ pJS.canvas.ctx,
+ p.x - radius*2 / (pJS.particles.shape.polygon.nb_sides/4), // startX
+ p.y - radius / (2*2.66/3.5), // startY
+ radius*2*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength
+ pJS.particles.shape.polygon.nb_sides, // sideCountNumerator
+ 2 // sideCountDenominator
+ );
+ break;
+
+ case 'image':
+
+ function draw(){
+ pJS.canvas.ctx.drawImage(
+ img_obj,
+ p.x-radius,
+ p.y-radius,
+ radius*2,
+ radius*2 / p.img.ratio
+ );
+ }
+
+ if(pJS.tmp.img_type == 'svg'){
+ var img_obj = p.img.obj;
+ }else{
+ var img_obj = pJS.tmp.img_obj;
+ }
+
+ if(img_obj){
+ draw();
+ }
+
+ break;
+
+ }
+
+ pJS.canvas.ctx.closePath();
+
+ if(pJS.particles.shape.stroke.width > 0){
+ pJS.canvas.ctx.strokeStyle = pJS.particles.shape.stroke.color;
+ pJS.canvas.ctx.lineWidth = pJS.particles.shape.stroke.width;
+ pJS.canvas.ctx.stroke();
+ }
+
+ pJS.canvas.ctx.fill();
+
+ };
+
+
+ pJS.fn.particlesCreate = function(){
+ for(var i = 0; i < pJS.particles.number.value; i++) {
+ pJS.particles.array.push(new pJS.fn.particle(pJS.particles.color, pJS.particles.opacity.value));
+ }
+ };
+
+ pJS.fn.particlesUpdate = function(){
+
+ for(var i = 0; i < pJS.particles.array.length; i++){
+
+ /* the particle */
+ var p = pJS.particles.array[i];
+
+ // var d = ( dx = pJS.interactivity.mouse.click_pos_x - p.x ) * dx + ( dy = pJS.interactivity.mouse.click_pos_y - p.y ) * dy;
+ // var f = -BANG_SIZE / d;
+ // if ( d < BANG_SIZE ) {
+ // var t = Math.atan2( dy, dx );
+ // p.vx = f * Math.cos(t);
+ // p.vy = f * Math.sin(t);
+ // }
+
+ /* move the particle */
+ if(pJS.particles.move.enable){
+ var ms = pJS.particles.move.speed/2;
+ p.x += p.vx * ms;
+ p.y += p.vy * ms;
+ }
+
+ /* change opacity status */
+ if(pJS.particles.opacity.anim.enable) {
+ if(p.opacity_status == true) {
+ if(p.opacity >= pJS.particles.opacity.value) p.opacity_status = false;
+ p.opacity += p.vo;
+ }else {
+ if(p.opacity <= pJS.particles.opacity.anim.opacity_min) p.opacity_status = true;
+ p.opacity -= p.vo;
+ }
+ if(p.opacity < 0) p.opacity = 0;
+ }
+
+ /* change size */
+ if(pJS.particles.size.anim.enable){
+ if(p.size_status == true){
+ if(p.radius >= pJS.particles.size.value) p.size_status = false;
+ p.radius += p.vs;
+ }else{
+ if(p.radius <= pJS.particles.size.anim.size_min) p.size_status = true;
+ p.radius -= p.vs;
+ }
+ if(p.radius < 0) p.radius = 0;
+ }
+
+ /* change particle position if it is out of canvas */
+ if(pJS.particles.move.out_mode == 'bounce'){
+ var new_pos = {
+ x_left: p.radius,
+ x_right: pJS.canvas.w,
+ y_top: p.radius,
+ y_bottom: pJS.canvas.h
+ }
+ }else{
+ var new_pos = {
+ x_left: -p.radius,
+ x_right: pJS.canvas.w + p.radius,
+ y_top: -p.radius,
+ y_bottom: pJS.canvas.h + p.radius
+ }
+ }
+
+ if(p.x - p.radius > pJS.canvas.w){
+ p.x = new_pos.x_left;
+ p.y = Math.random() * pJS.canvas.h;
+ }
+ else if(p.x + p.radius < 0){
+ p.x = new_pos.x_right;
+ p.y = Math.random() * pJS.canvas.h;
+ }
+ if(p.y - p.radius > pJS.canvas.h){
+ p.y = new_pos.y_top;
+ p.x = Math.random() * pJS.canvas.w;
+ }
+ else if(p.y + p.radius < 0){
+ p.y = new_pos.y_bottom;
+ p.x = Math.random() * pJS.canvas.w;
+ }
+
+ /* out of canvas modes */
+ switch(pJS.particles.move.out_mode){
+ case 'bounce':
+ if (p.x + p.radius > pJS.canvas.w) p.vx = -p.vx;
+ else if (p.x - p.radius < 0) p.vx = -p.vx;
+ if (p.y + p.radius > pJS.canvas.h) p.vy = -p.vy;
+ else if (p.y - p.radius < 0) p.vy = -p.vy;
+ break;
+ }
+
+ /* events */
+ if(isInArray('grab', pJS.interactivity.events.onhover.mode)){
+ pJS.fn.modes.grabParticle(p);
+ }
+
+ if(isInArray('bubble', pJS.interactivity.events.onhover.mode) || isInArray('bubble', pJS.interactivity.events.onclick.mode)){
+ pJS.fn.modes.bubbleParticle(p);
+ }
+
+ if(isInArray('repulse', pJS.interactivity.events.onhover.mode) || isInArray('repulse', pJS.interactivity.events.onclick.mode)){
+ pJS.fn.modes.repulseParticle(p);
+ }
+
+ /* interaction auto between particles */
+ if(pJS.particles.line_linked.enable || pJS.particles.move.attract.enable){
+ for(var j = i + 1; j < pJS.particles.array.length; j++){
+ var p2 = pJS.particles.array[j];
+
+ /* link particles */
+ if(pJS.particles.line_linked.enable){
+ pJS.fn.interact.linkParticles(p,p2);
+ }
+
+ /* attract particles */
+ if(pJS.particles.move.attract.enable){
+ pJS.fn.interact.attractParticles(p,p2);
+ }
+
+ /* bounce particles */
+ if(pJS.particles.move.bounce){
+ pJS.fn.interact.bounceParticles(p,p2);
+ }
+
+ }
+ }
+
+
+ }
+
+ };
+
+ pJS.fn.particlesDraw = function(){
+
+ /* clear canvas */
+ pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h);
+
+ /* update each particles param */
+ pJS.fn.particlesUpdate();
+
+ /* draw each particle */
+ for(var i = 0; i < pJS.particles.array.length; i++){
+ var p = pJS.particles.array[i];
+ p.draw();
+ }
+
+ };
+
+ pJS.fn.particlesEmpty = function(){
+ pJS.particles.array = [];
+ };
+
+ pJS.fn.particlesRefresh = function(){
+
+ /* init all */
+ cancelRequestAnimFrame(pJS.fn.checkAnimFrame);
+ cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
+ pJS.tmp.source_svg = undefined;
+ pJS.tmp.img_obj = undefined;
+ pJS.tmp.count_svg = 0;
+ pJS.fn.particlesEmpty();
+ pJS.fn.canvasClear();
+
+ /* restart */
+ pJS.fn.vendors.start();
+
+ };
+
+
+ /* ---------- pJS functions - particles interaction ------------ */
+
+ pJS.fn.interact.linkParticles = function(p1, p2){
+
+ var dx = p1.x - p2.x,
+ dy = p1.y - p2.y,
+ dist = Math.sqrt(dx*dx + dy*dy);
+
+ /* draw a line between p1 and p2 if the distance between them is under the config distance */
+ if(dist <= pJS.particles.line_linked.distance){
+
+ var opacity_line = pJS.particles.line_linked.opacity - (dist / (1/pJS.particles.line_linked.opacity)) / pJS.particles.line_linked.distance;
+
+ if(opacity_line > 0){
+
+ /* style */
+ var color_line = pJS.particles.line_linked.color_rgb_line;
+ pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')';
+ pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width;
+ //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */
+
+ /* path */
+ pJS.canvas.ctx.beginPath();
+ pJS.canvas.ctx.moveTo(p1.x, p1.y);
+ pJS.canvas.ctx.lineTo(p2.x, p2.y);
+ pJS.canvas.ctx.stroke();
+ pJS.canvas.ctx.closePath();
+
+ }
+
+ }
+
+ };
+
+
+ pJS.fn.interact.attractParticles = function(p1, p2){
+
+ /* condensed particles */
+ var dx = p1.x - p2.x,
+ dy = p1.y - p2.y,
+ dist = Math.sqrt(dx*dx + dy*dy);
+
+ if(dist <= pJS.particles.line_linked.distance){
+
+ var ax = dx/(pJS.particles.move.attract.rotateX*1000),
+ ay = dy/(pJS.particles.move.attract.rotateY*1000);
+
+ p1.vx -= ax;
+ p1.vy -= ay;
+
+ p2.vx += ax;
+ p2.vy += ay;
+
+ }
+
+
+ }
+
+
+ pJS.fn.interact.bounceParticles = function(p1, p2){
+
+ var dx = p1.x - p2.x,
+ dy = p1.y - p2.y,
+ dist = Math.sqrt(dx*dx + dy*dy),
+ dist_p = p1.radius+p2.radius;
+
+ if(dist <= dist_p){
+ p1.vx = -p1.vx;
+ p1.vy = -p1.vy;
+
+ p2.vx = -p2.vx;
+ p2.vy = -p2.vy;
+ }
+
+ }
+
+
+ /* ---------- pJS functions - modes events ------------ */
+
+ pJS.fn.modes.pushParticles = function(nb, pos){
+
+ pJS.tmp.pushing = true;
+
+ for(var i = 0; i < nb; i++){
+ pJS.particles.array.push(
+ new pJS.fn.particle(
+ pJS.particles.color,
+ pJS.particles.opacity.value,
+ {
+ 'x': pos ? pos.pos_x : Math.random() * pJS.canvas.w,
+ 'y': pos ? pos.pos_y : Math.random() * pJS.canvas.h
+ }
+ )
+ )
+ if(i == nb-1){
+ if(!pJS.particles.move.enable){
+ pJS.fn.particlesDraw();
+ }
+ pJS.tmp.pushing = false;
+ }
+ }
+
+ };
+
+
+ pJS.fn.modes.removeParticles = function(nb){
+
+ pJS.particles.array.splice(0, nb);
+ if(!pJS.particles.move.enable){
+ pJS.fn.particlesDraw();
+ }
+
+ };
+
+
+ pJS.fn.modes.bubbleParticle = function(p){
+
+ /* on hover event */
+ if(pJS.interactivity.events.onhover.enable && isInArray('bubble', pJS.interactivity.events.onhover.mode)){
+
+ var dx_mouse = p.x - pJS.interactivity.mouse.pos_x,
+ dy_mouse = p.y - pJS.interactivity.mouse.pos_y,
+ dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse),
+ ratio = 1 - dist_mouse / pJS.interactivity.modes.bubble.distance;
+
+ function init(){
+ p.opacity_bubble = p.opacity;
+ p.radius_bubble = p.radius;
+ }
+
+ /* mousemove - check ratio */
+ if(dist_mouse <= pJS.interactivity.modes.bubble.distance){
+
+ if(ratio >= 0 && pJS.interactivity.status == 'mousemove'){
+
+ /* size */
+ if(pJS.interactivity.modes.bubble.size != pJS.particles.size.value){
+
+ if(pJS.interactivity.modes.bubble.size > pJS.particles.size.value){
+ var size = p.radius + (pJS.interactivity.modes.bubble.size*ratio);
+ if(size >= 0){
+ p.radius_bubble = size;
+ }
+ }else{
+ var dif = p.radius - pJS.interactivity.modes.bubble.size,
+ size = p.radius - (dif*ratio);
+ if(size > 0){
+ p.radius_bubble = size;
+ }else{
+ p.radius_bubble = 0;
+ }
+ }
+
+ }
+
+ /* opacity */
+ if(pJS.interactivity.modes.bubble.opacity != pJS.particles.opacity.value){
+
+ if(pJS.interactivity.modes.bubble.opacity > pJS.particles.opacity.value){
+ var opacity = pJS.interactivity.modes.bubble.opacity*ratio;
+ if(opacity > p.opacity && opacity <= pJS.interactivity.modes.bubble.opacity){
+ p.opacity_bubble = opacity;
+ }
+ }else{
+ var opacity = p.opacity - (pJS.particles.opacity.value-pJS.interactivity.modes.bubble.opacity)*ratio;
+ if(opacity < p.opacity && opacity >= pJS.interactivity.modes.bubble.opacity){
+ p.opacity_bubble = opacity;
+ }
+ }
+
+ }
+
+ }
+
+ }else{
+ init();
+ }
+
+
+ /* mouseleave */
+ if(pJS.interactivity.status == 'mouseleave'){
+ init();
+ }
+
+ }
+
+ /* on click event */
+ else if(pJS.interactivity.events.onclick.enable && isInArray('bubble', pJS.interactivity.events.onclick.mode)){
+
+
+ if(pJS.tmp.bubble_clicking){
+ var dx_mouse = p.x - pJS.interactivity.mouse.click_pos_x,
+ dy_mouse = p.y - pJS.interactivity.mouse.click_pos_y,
+ dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse),
+ time_spent = (new Date().getTime() - pJS.interactivity.mouse.click_time)/1000;
+
+ if(time_spent > pJS.interactivity.modes.bubble.duration){
+ pJS.tmp.bubble_duration_end = true;
+ }
+
+ if(time_spent > pJS.interactivity.modes.bubble.duration*2){
+ pJS.tmp.bubble_clicking = false;
+ pJS.tmp.bubble_duration_end = false;
+ }
+ }
+
+
+ function process(bubble_param, particles_param, p_obj_bubble, p_obj, id){
+
+ if(bubble_param != particles_param){
+
+ if(!pJS.tmp.bubble_duration_end){
+ if(dist_mouse <= pJS.interactivity.modes.bubble.distance){
+ if(p_obj_bubble != undefined) var obj = p_obj_bubble;
+ else var obj = p_obj;
+ if(obj != bubble_param){
+ var value = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration);
+ if(id == 'size') p.radius_bubble = value;
+ if(id == 'opacity') p.opacity_bubble = value;
+ }
+ }else{
+ if(id == 'size') p.radius_bubble = undefined;
+ if(id == 'opacity') p.opacity_bubble = undefined;
+ }
+ }else{
+ if(p_obj_bubble != undefined){
+ var value_tmp = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration),
+ dif = bubble_param - value_tmp;
+ value = bubble_param + dif;
+ if(id == 'size') p.radius_bubble = value;
+ if(id == 'opacity') p.opacity_bubble = value;
+ }
+ }
+
+ }
+
+ }
+
+ if(pJS.tmp.bubble_clicking){
+ /* size */
+ process(pJS.interactivity.modes.bubble.size, pJS.particles.size.value, p.radius_bubble, p.radius, 'size');
+ /* opacity */
+ process(pJS.interactivity.modes.bubble.opacity, pJS.particles.opacity.value, p.opacity_bubble, p.opacity, 'opacity');
+ }
+
+ }
+
+ };
+
+
+ pJS.fn.modes.repulseParticle = function(p){
+
+ if(pJS.interactivity.events.onhover.enable && isInArray('repulse', pJS.interactivity.events.onhover.mode) && pJS.interactivity.status == 'mousemove') {
+
+ var dx_mouse = p.x - pJS.interactivity.mouse.pos_x,
+ dy_mouse = p.y - pJS.interactivity.mouse.pos_y,
+ dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse);
+
+ var normVec = {x: dx_mouse/dist_mouse, y: dy_mouse/dist_mouse},
+ repulseRadius = pJS.interactivity.modes.repulse.distance,
+ velocity = 100,
+ repulseFactor = clamp((1/repulseRadius)*(-1*Math.pow(dist_mouse/repulseRadius,2)+1)*repulseRadius*velocity, 0, 50);
+
+ var pos = {
+ x: p.x + normVec.x * repulseFactor,
+ y: p.y + normVec.y * repulseFactor
+ }
+
+ if(pJS.particles.move.out_mode == 'bounce'){
+ if(pos.x - p.radius > 0 && pos.x + p.radius < pJS.canvas.w) p.x = pos.x;
+ if(pos.y - p.radius > 0 && pos.y + p.radius < pJS.canvas.h) p.y = pos.y;
+ }else{
+ p.x = pos.x;
+ p.y = pos.y;
+ }
+
+ }
+
+
+ else if(pJS.interactivity.events.onclick.enable && isInArray('repulse', pJS.interactivity.events.onclick.mode)) {
+
+ if(!pJS.tmp.repulse_finish){
+ pJS.tmp.repulse_count++;
+ if(pJS.tmp.repulse_count == pJS.particles.array.length){
+ pJS.tmp.repulse_finish = true;
+ }
+ }
+
+ if(pJS.tmp.repulse_clicking){
+
+ var repulseRadius = Math.pow(pJS.interactivity.modes.repulse.distance/6, 3);
+
+ var dx = pJS.interactivity.mouse.click_pos_x - p.x,
+ dy = pJS.interactivity.mouse.click_pos_y - p.y,
+ d = dx*dx + dy*dy;
+
+ var force = -repulseRadius / d * 1;
+
+ function process(){
+
+ var f = Math.atan2(dy,dx);
+ p.vx = force * Math.cos(f);
+ p.vy = force * Math.sin(f);
+
+ if(pJS.particles.move.out_mode == 'bounce'){
+ var pos = {
+ x: p.x + p.vx,
+ y: p.y + p.vy
+ }
+ if (pos.x + p.radius > pJS.canvas.w) p.vx = -p.vx;
+ else if (pos.x - p.radius < 0) p.vx = -p.vx;
+ if (pos.y + p.radius > pJS.canvas.h) p.vy = -p.vy;
+ else if (pos.y - p.radius < 0) p.vy = -p.vy;
+ }
+
+ }
+
+ // default
+ if(d <= repulseRadius){
+ process();
+ }
+
+ // bang - slow motion mode
+ // if(!pJS.tmp.repulse_finish){
+ // if(d <= repulseRadius){
+ // process();
+ // }
+ // }else{
+ // process();
+ // }
+
+
+ }else{
+
+ if(pJS.tmp.repulse_clicking == false){
+
+ p.vx = p.vx_i;
+ p.vy = p.vy_i;
+
+ }
+
+ }
+
+ }
+
+ }
+
+
+ pJS.fn.modes.grabParticle = function(p){
+
+ if(pJS.interactivity.events.onhover.enable && pJS.interactivity.status == 'mousemove'){
+
+ var dx_mouse = p.x - pJS.interactivity.mouse.pos_x,
+ dy_mouse = p.y - pJS.interactivity.mouse.pos_y,
+ dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse);
+
+ /* draw a line between the cursor and the particle if the distance between them is under the config distance */
+ if(dist_mouse <= pJS.interactivity.modes.grab.distance){
+
+ var opacity_line = pJS.interactivity.modes.grab.line_linked.opacity - (dist_mouse / (1/pJS.interactivity.modes.grab.line_linked.opacity)) / pJS.interactivity.modes.grab.distance;
+
+ if(opacity_line > 0){
+
+ /* style */
+ var color_line = pJS.particles.line_linked.color_rgb_line;
+ pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')';
+ pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width;
+ //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */
+
+ /* path */
+ pJS.canvas.ctx.beginPath();
+ pJS.canvas.ctx.moveTo(p.x, p.y);
+ pJS.canvas.ctx.lineTo(pJS.interactivity.mouse.pos_x, pJS.interactivity.mouse.pos_y);
+ pJS.canvas.ctx.stroke();
+ pJS.canvas.ctx.closePath();
+
+ }
+
+ }
+
+ }
+
+ };
+
+
+
+ /* ---------- pJS functions - vendors ------------ */
+
+ pJS.fn.vendors.eventsListeners = function(){
+
+ /* events target element */
+ if(pJS.interactivity.detect_on == 'window'){
+ pJS.interactivity.el = window;
+ }else{
+ pJS.interactivity.el = pJS.canvas.el;
+ }
+
+
+ /* detect mouse pos - on hover / click event */
+ if(pJS.interactivity.events.onhover.enable || pJS.interactivity.events.onclick.enable){
+
+ /* el on mousemove */
+ pJS.interactivity.el.addEventListener('mousemove', function(e){
+
+ if(pJS.interactivity.el == window){
+ var pos_x = e.clientX,
+ pos_y = e.clientY;
+ }
+ else{
+ var pos_x = e.offsetX || e.clientX,
+ pos_y = e.offsetY || e.clientY;
+ }
+
+ pJS.interactivity.mouse.pos_x = pos_x;
+ pJS.interactivity.mouse.pos_y = pos_y;
+
+ if(pJS.tmp.retina){
+ pJS.interactivity.mouse.pos_x *= pJS.canvas.pxratio;
+ pJS.interactivity.mouse.pos_y *= pJS.canvas.pxratio;
+ }
+
+ pJS.interactivity.status = 'mousemove';
+
+ });
+
+ /* el on onmouseleave */
+ pJS.interactivity.el.addEventListener('mouseleave', function(e){
+
+ pJS.interactivity.mouse.pos_x = null;
+ pJS.interactivity.mouse.pos_y = null;
+ pJS.interactivity.status = 'mouseleave';
+
+ });
+
+ }
+
+ /* on click event */
+ if(pJS.interactivity.events.onclick.enable){
+
+ pJS.interactivity.el.addEventListener('click', function(){
+
+ pJS.interactivity.mouse.click_pos_x = pJS.interactivity.mouse.pos_x;
+ pJS.interactivity.mouse.click_pos_y = pJS.interactivity.mouse.pos_y;
+ pJS.interactivity.mouse.click_time = new Date().getTime();
+
+ if(pJS.interactivity.events.onclick.enable){
+
+ switch(pJS.interactivity.events.onclick.mode){
+
+ case 'push':
+ if(pJS.particles.move.enable){
+ pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse);
+ }else{
+ if(pJS.interactivity.modes.push.particles_nb == 1){
+ pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse);
+ }
+ else if(pJS.interactivity.modes.push.particles_nb > 1){
+ pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb);
+ }
+ }
+ break;
+
+ case 'remove':
+ pJS.fn.modes.removeParticles(pJS.interactivity.modes.remove.particles_nb);
+ break;
+
+ case 'bubble':
+ pJS.tmp.bubble_clicking = true;
+ break;
+
+ case 'repulse':
+ pJS.tmp.repulse_clicking = true;
+ pJS.tmp.repulse_count = 0;
+ pJS.tmp.repulse_finish = false;
+ setTimeout(function(){
+ pJS.tmp.repulse_clicking = false;
+ }, pJS.interactivity.modes.repulse.duration*1000)
+ break;
+
+ }
+
+ }
+
+ });
+
+ }
+
+
+ };
+
+ pJS.fn.vendors.densityAutoParticles = function(){
+
+ if(pJS.particles.number.density.enable){
+
+ /* calc area */
+ var area = pJS.canvas.el.width * pJS.canvas.el.height / 1000;
+ if(pJS.tmp.retina){
+ area = area/(pJS.canvas.pxratio*2);
+ }
+
+ /* calc number of particles based on density area */
+ var nb_particles = area * pJS.particles.number.value / pJS.particles.number.density.value_area;
+
+ /* add or remove X particles */
+ var missing_particles = pJS.particles.array.length - nb_particles;
+ if(missing_particles < 0) pJS.fn.modes.pushParticles(Math.abs(missing_particles));
+ else pJS.fn.modes.removeParticles(missing_particles);
+
+ }
+
+ };
+
+
+ pJS.fn.vendors.checkOverlap = function(p1, position){
+ for(var i = 0; i < pJS.particles.array.length; i++){
+ var p2 = pJS.particles.array[i];
+
+ var dx = p1.x - p2.x,
+ dy = p1.y - p2.y,
+ dist = Math.sqrt(dx*dx + dy*dy);
+
+ if(dist <= p1.radius + p2.radius){
+ p1.x = position ? position.x : Math.random() * pJS.canvas.w;
+ p1.y = position ? position.y : Math.random() * pJS.canvas.h;
+ pJS.fn.vendors.checkOverlap(p1);
+ }
+ }
+ };
+
+
+ pJS.fn.vendors.createSvgImg = function(p){
+
+ /* set color to svg element */
+ var svgXml = pJS.tmp.source_svg,
+ rgbHex = /#([0-9A-F]{3,6})/gi,
+ coloredSvgXml = svgXml.replace(rgbHex, function (m, r, g, b) {
+ if(p.color.rgb){
+ var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+p.opacity+')';
+ }else{
+ var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+p.opacity+')';
+ }
+ return color_value;
+ });
+
+ /* prepare to create img with colored svg */
+ var svg = new Blob([coloredSvgXml], {type: 'image/svg+xml;charset=utf-8'}),
+ DOMURL = window.URL || window.webkitURL || window,
+ url = DOMURL.createObjectURL(svg);
+
+ /* create particle img obj */
+ var img = new Image();
+ img.addEventListener('load', function(){
+ p.img.obj = img;
+ p.img.loaded = true;
+ DOMURL.revokeObjectURL(url);
+ pJS.tmp.count_svg++;
+ });
+ img.src = url;
+
+ };
+
+
+ pJS.fn.vendors.destroypJS = function(){
+ cancelAnimationFrame(pJS.fn.drawAnimFrame);
+ canvas_el.remove();
+ pJSDom = null;
+ };
+
+
+ pJS.fn.vendors.drawShape = function(c, startX, startY, sideLength, sideCountNumerator, sideCountDenominator){
+
+ // By Programming Thomas - https://programmingthomas.wordpress.com/2013/04/03/n-sided-shapes/
+ var sideCount = sideCountNumerator * sideCountDenominator;
+ var decimalSides = sideCountNumerator / sideCountDenominator;
+ var interiorAngleDegrees = (180 * (decimalSides - 2)) / decimalSides;
+ var interiorAngle = Math.PI - Math.PI * interiorAngleDegrees / 180; // convert to radians
+ c.save();
+ c.beginPath();
+ c.translate(startX, startY);
+ c.moveTo(0,0);
+ for (var i = 0; i < sideCount; i++) {
+ c.lineTo(sideLength,0);
+ c.translate(sideLength,0);
+ c.rotate(interiorAngle);
+ }
+ //c.stroke();
+ c.fill();
+ c.restore();
+
+ };
+
+ pJS.fn.vendors.exportImg = function(){
+ window.open(pJS.canvas.el.toDataURL('image/png'), '_blank');
+ };
+
+
+ pJS.fn.vendors.loadImg = function(type){
+
+ pJS.tmp.img_error = undefined;
+
+ if(pJS.particles.shape.image.src != ''){
+
+ if(type == 'svg'){
+
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', pJS.particles.shape.image.src);
+ xhr.onreadystatechange = function (data) {
+ if(xhr.readyState == 4){
+ if(xhr.status == 200){
+ pJS.tmp.source_svg = data.currentTarget.response;
+ pJS.fn.vendors.checkBeforeDraw();
+ }else{
+ console.log('Error pJS - Image not found');
+ pJS.tmp.img_error = true;
+ }
+ }
+ }
+ xhr.send();
+
+ }else{
+
+ var img = new Image();
+ img.addEventListener('load', function(){
+ pJS.tmp.img_obj = img;
+ pJS.fn.vendors.checkBeforeDraw();
+ });
+ img.src = pJS.particles.shape.image.src;
+
+ }
+
+ }else{
+ console.log('Error pJS - No image.src');
+ pJS.tmp.img_error = true;
+ }
+
+ };
+
+
+ pJS.fn.vendors.draw = function(){
+
+ if(pJS.particles.shape.type == 'image'){
+
+ if(pJS.tmp.img_type == 'svg'){
+
+ if(pJS.tmp.count_svg >= pJS.particles.number.value){
+ pJS.fn.particlesDraw();
+ if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
+ else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
+ }else{
+ //console.log('still loading...');
+ if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
+ }
+
+ }else{
+
+ if(pJS.tmp.img_obj != undefined){
+ pJS.fn.particlesDraw();
+ if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
+ else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
+ }else{
+ if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
+ }
+
+ }
+
+ }else{
+ pJS.fn.particlesDraw();
+ if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
+ else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
+ }
+
+ };
+
+
+ pJS.fn.vendors.checkBeforeDraw = function(){
+
+ // if shape is image
+ if(pJS.particles.shape.type == 'image'){
+
+ if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg == undefined){
+ pJS.tmp.checkAnimFrame = requestAnimFrame(check);
+ }else{
+ //console.log('images loaded! cancel check');
+ cancelRequestAnimFrame(pJS.tmp.checkAnimFrame);
+ if(!pJS.tmp.img_error){
+ pJS.fn.vendors.init();
+ pJS.fn.vendors.draw();
+ }
+
+ }
+
+ }else{
+ pJS.fn.vendors.init();
+ pJS.fn.vendors.draw();
+ }
+
+ };
+
+
+ pJS.fn.vendors.init = function(){
+
+ /* init canvas + particles */
+ pJS.fn.retinaInit();
+ pJS.fn.canvasInit();
+ pJS.fn.canvasSize();
+ pJS.fn.canvasPaint();
+ pJS.fn.particlesCreate();
+ pJS.fn.vendors.densityAutoParticles();
+
+ /* particles.line_linked - convert hex colors to rgb */
+ pJS.particles.line_linked.color_rgb_line = hexToRgb(pJS.particles.line_linked.color);
+
+ };
+
+
+ pJS.fn.vendors.start = function(){
+
+ if(isInArray('image', pJS.particles.shape.type)){
+ pJS.tmp.img_type = pJS.particles.shape.image.src.substr(pJS.particles.shape.image.src.length - 3);
+ pJS.fn.vendors.loadImg(pJS.tmp.img_type);
+ }else{
+ pJS.fn.vendors.checkBeforeDraw();
+ }
+
+ };
+
+
+
+
+ /* ---------- pJS - start ------------ */
+
+
+ pJS.fn.vendors.eventsListeners();
+
+ pJS.fn.vendors.start();
+
+
+
+};
+
+/* ---------- global functions - vendors ------------ */
+
+Object.deepExtend = function(destination, source) {
+ for (var property in source) {
+ if (source[property] && source[property].constructor &&
+ source[property].constructor === Object) {
+ destination[property] = destination[property] || {};
+ arguments.callee(destination[property], source[property]);
+ } else {
+ destination[property] = source[property];
+ }
+ }
+ return destination;
+};
+
+window.requestAnimFrame = (function(){
+ return window.requestAnimationFrame ||
+ window.webkitRequestAnimationFrame ||
+ window.mozRequestAnimationFrame ||
+ window.oRequestAnimationFrame ||
+ window.msRequestAnimationFrame ||
+ function(callback){
+ window.setTimeout(callback, 1000 / 60);
+ };
+})();
+
+window.cancelRequestAnimFrame = ( function() {
+ return window.cancelAnimationFrame ||
+ window.webkitCancelRequestAnimationFrame ||
+ window.mozCancelRequestAnimationFrame ||
+ window.oCancelRequestAnimationFrame ||
+ window.msCancelRequestAnimationFrame ||
+ clearTimeout
+} )();
+
+function hexToRgb(hex){
+ // By Tim Down - https://stackoverflow.com/a/5624139/3493650
+ // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
+ var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
+ hex = hex.replace(shorthandRegex, function(m, r, g, b) {
+ return r + r + g + g + b + b;
+ });
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+ return result ? {
+ r: parseInt(result[1], 16),
+ g: parseInt(result[2], 16),
+ b: parseInt(result[3], 16)
+ } : null;
+};
+
+function clamp(number, min, max) {
+ return Math.min(Math.max(number, min), max);
+};
+
+function isInArray(value, array) {
+ return array.indexOf(value) > -1;
+}
+
+
+/* ---------- particles.js functions - start ------------ */
+
+window.pJSDom = [];
+
+window.particlesJS = function(tag_id, params){
+
+ //console.log(params);
+
+ /* no string id? so it's object params, and set the id with default id */
+ if(typeof(tag_id) != 'string'){
+ params = tag_id;
+ tag_id = 'particles-js';
+ }
+
+ /* no id? set the id to default id */
+ if(!tag_id){
+ tag_id = 'particles-js';
+ }
+
+ /* pJS elements */
+ var pJS_tag = document.getElementById(tag_id),
+ pJS_canvas_class = 'particles-js-canvas-el',
+ exist_canvas = pJS_tag.getElementsByClassName(pJS_canvas_class);
+
+ /* remove canvas if exists into the pJS target tag */
+ if(exist_canvas.length){
+ while(exist_canvas.length > 0){
+ pJS_tag.removeChild(exist_canvas[0]);
+ }
+ }
+
+ /* create canvas element */
+ var canvas_el = document.createElement('canvas');
+ canvas_el.className = pJS_canvas_class;
+
+ /* set size canvas */
+ canvas_el.style.width = "100%";
+ canvas_el.style.height = "100%";
+
+ /* append canvas */
+ var canvas = document.getElementById(tag_id).appendChild(canvas_el);
+
+ /* launch particle.js */
+ if(canvas != null){
+ pJSDom.push(new pJS(tag_id, params));
+ }
+
+};
+
+window.particlesJS.load = function(tag_id, path_config_json, callback){
+
+ /* load json config */
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', path_config_json);
+ xhr.onreadystatechange = function (data) {
+ if(xhr.readyState == 4){
+ if(xhr.status == 200){
+ var params = JSON.parse(data.currentTarget.response);
+ window.particlesJS(tag_id, params);
+ if(callback) callback();
+ }else{
+ console.log('Error pJS - XMLHttpRequest status: '+xhr.status);
+ console.log('Error pJS - File config not found');
+ }
+ }
+ };
+ xhr.send();
+
+};
diff --git a/docs/logos/meson.build b/docs/logos/meson.build
index 70ba67d71c..0038d4fa42 100644
--- a/docs/logos/meson.build
+++ b/docs/logos/meson.build
@@ -18,6 +18,8 @@ docs_logo_files = [
'logo-square.svg',
'logo-sticker-hexagon.svg',
'logo-sticker-square.svg',
+ 'penguin.svg',
+ 'penguin.png',
]
install_data(docs_logo_files, install_dir: docs_html_dir / 'logos')
diff --git a/docs/logos/penguin.png b/docs/logos/penguin.png
new file mode 100644
index 0000000000000000000000000000000000000000..48a481c54b6a71f2d43f5ebdf1d4455202c27d8a
GIT binary patch
literal 4236
zcmV;75OeQ|P)<h;3K|Lk000e1NJLTq002n<004>z1^@s6<_~Aa00009a7bBm000*e
z000*e0m>%xKL7v#8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H15E)5C
zK~#90-JN@I6;+<cKj-E_ZmvWi1QH-@<PktwP%;c6%YwK%NP!NHKp|Bdq1<Jc$6AFY
z1I*S+>F%ntjKU}bItCVNgaIcEGosE8h`3Caw=#uHz)?hA3E?4<L_!|-w}14#m%e>p
z-F>_7P3Bv5D(UXi=XdV6f9Lc$zw`T@Rw6<yD5W|9vw=y#cYqwg4;%;f1HTrLKg2BH
zF9jkJH33tAGk_#W$ACFNMy#?rdWuERzW}W!2-2q`z`g1IK`9{#co?loSs^Hx{J?8K
zZn}S%lSu`L0YE9$5BLPgOR^RJ5qMNYK2Nfob^(v!_&-UWAb{b(ex=mkI#5>H5z-{3
z)Lp<~Ksi``6HqQ9TO2Gi<<M)=Je(y6v?0SrrBu1Y<)#!$L{Lh3f%8BYm*n_?IU=&b
zrSe@xP?IL(9zj7l6-udTF3NBXL6ZJ11+p@LUnr&SOMxs$5hUr}6v@j5DwR^hQY6n2
zD4+*$A;ogP1V)O;<rK@c1rKmXG6nd2J~nRL$ijsSQOfko@it(yQYs@E*{Q^Q>`g%g
zkf~FrN)XRJ`>fUbUr6_q!_?dj_^Fv6l$)Cy_58ef^Fk!GwYABJ5hJY5^}e5O5)vg3
z&?}Lu&7M7*hK2@Se)(lQp75E>rAwDW|9d<hmM&eIs5m_ouudt}*UC-lz#bAj@yg1|
zkhUydyg2My@7}#dkCv7e$;->L+U!1}9owS-P9*vf+qP{Bk#PO`btx<?47+~t;K4AW
zCQqJhr+-_TZZhIEw_6jb+Ue7$L;vUG<gj4Dg0Sl^z4TJpaY;!@q9UVVxl-z{?cC@#
zJZO{9xcK0M55kTge)!?A<IS5l^WlddhK_?OY7yDM2BlP%otxc86A7Av*XxxF7cPXF
zli%-`E?v5W<tZ#Il)ZcRN>fvl3>h-S_K*VjVY-`Fv_8p{sdmYdC1L%}z<~oJ@_0O+
z2=Z*C>p*F`iP0wov=M2cj6haa7JK&WVbrKm`2BwJ^YgiS^(p`b`Ec(T7(W`icY`js
z!lf&)eFtpX1~yvX4iS04@?9?CIwqfTmo8mo{rdIt{PWKXAS3TYwpJi*XAwCcJ+1gR
z+Zy#~x;03zN#9`6uHE?-`1uN$@lfKtr_Oa{;OKf<TU)J&05}T_5s?O~H#!XuTE}e~
zCB?A+U2_BhlnnYOs;jHH?>@_Bq&~optls1nKF4Ge$jCsB?2O&CBGScCBL2qE8*%mO
z)zYa`Co4_v2GBp<%?;py*-B6N8w&(|T`uDPR*cxYcdzvB-P;OLZ>5_g4`ABx_02UC
znX<kMU4IK*{u`7x;_}^h-_3yo2e{)7(`KxhN~zIiGrNUfVBxJ(wPUu(h5kCN@rYa;
zA@a>rA~$wLXih9#ym(Q{%F4{j{V3hd?PaqB<>ux}Lqmi1EB*CRo0An>y?Rydy6Y~p
zL`_O3NsG*q^vENRBt=Rz)Ya8VX=$k$`G*Ls6Q(+OfSXhN1eiE+qS>sbQBY98d+)tR
zj~+b|Wi3PVnMw;rVp5Zi9692+CIwMdRVCTk*@^1#F=@~yfSzUu@_N0}+}!LMNg^Vz
zzWS<}hcz|jBn6ndny7L^hYod>pdiZ2%M+1wFx4alXaAoiYLk8Yrp8vkdi81s4H^_L
z%Xd<}R30Shc%qEO#l<dHMT5`h<E^*eB0D=fUbY{mq%r{nNji}zV}5?V%T>9Fva&Lk
zFJB%n%l%5JvJ_P(MADxUW%T)cE>|TSPe1)MWo2=BSeB}~1W7uQC}VDJuFF*kM`mUw
z6%`d^WyM?<ctj~RH5GLUl5`5V5-($?PMut@j1j|!4`<P$Me(w%R!VhsyB;0@5fL=k
z<e0EwS#$)?Jo8Mvb-W_rCvMk4zX0%Yyo@a^EiP9jI=o&lFTVI<yezYoQV+UW2R%uL
z<7I4aZg#UCaWQ@RbjFPv7ca{?rBs1i^7SOejW(*UuXn2srm$+&stAu39SYG_f1P%*
z26QBe$T{Lz1oSR8>A>*e!+Gqn$Kqvq5cmf-WE&q%Ol`V+IsNX9&pr2CqLKJZN~ySW
z8aptOR23`Z#ful6mTeg&B_%xZ#1rwd_<*;SQqGQi^|M`I7%^tw{rdHD+W=q+=g*%P
zuh*N%Qm{#!HkHUtk`z!IO>kCLmbA9Erjn1Cm_L8M8N1UWaf2k$h}slO@K;}bl}avR
z;`Hg$W~`X4zyso-JxPxpv6|+oQ>V<fVpmaIT+GawGZSSChG`5)R$erccE-wFU0t25
zJjbwP$&z^ErXUJ{|4~X6CL=3Ciin&>^ACu?v17-Qk>w}`4<5{e51N{d^aFmE%!oYJ
zqljv$JbLt~T{*5`;lhPxvknJ7Qc5NCS&xcn9To61qI8D&`S~gAo)g3G_sihHgH0`m
z1=0ziNF3<6LEAJT0+%me4s%ydH<VJ$pFiKqEv3Nkl~T7@xyceq0Q>gsvr@k6C@(LM
zW?F6pR-%QB88H-?Zbe2clFr4t;lP0dR?2rBojZ4C+O&wMRUc3xBK^=7Unc@{fhB>z
zZ(9-)tqr2Zz(sA>W5$e0b=Q*+d-m*!R@Wus)`(j)l6u4<$?Nq>Q&Uq4DM$>z-!Fp(
z4Kmhsk2t)7Ys6(VC-?|lzkZ#)d-qz>R=1&)V$Pg7#?zyfQr(>>KPpKg(ng%s6MY;>
zd%?_^GmYV`8EAb`(ug;%k7<hBwQH9XvK>WnaWVJYbC2<~BT)tMNNS9AVgLU9G&H2$
z2R#BaX3Q|2a>TJB9!WQ1U1(`(Vdu`6^Wd~$+O%n8WP}BX_fkp?PPSZIBmunh&O6D<
zb{vI;g^U?9#&|kuZHh-y+;EER+qdKQM|}aN6%RcW5zjFp*)nZwQe9mg2M-=hR=(pf
zMs)(?lU<LCM^eJY|83j0B_rDv3>Ywg($Z4>sct}0{Zc%VB4Zv5*s^6yaD?8jFl9=F
zCv#F^7fF$H^5n^O+2roO|9;~s*GP)y|M!jY#OBSLlacQV#*Q6p^ruQLfG5_Z4sFD(
zpD_B-HlwQ6pYPMBkF>S5rD`r~8e_+f)z`fZxK*5-;3}oE(K<XmR*T3^;8p#}vuDq;
zd-v|79+VrHFd^*C??JP3+d{17mQVOjf&YsZr~|M8%{e}Vii!%m@?FFD@#BrB?zCN4
zH1z^*Cp?~`tKs@jbk`*(Cr7Saxst-hlo$;S4U(Cesc&)>;;=pGG@7ZT5||(&UmLEk
zMr-E)G&MD`Y11a#56TVrd_Hc!{dWB+XPcX7VdmXM<WUj18s+*);Me+dZ@lq_-8#62
zQKLrb5ARS)W!fnx<`6(6;VAJx(9{@!Pd@pCs;ZdoO=*FFq#WR{?39ymF+CPU<Ol}m
zidSBF#cpw~VA!yTof-$)D#&hU7ErYD=sNJs%uG3R=8UTyvK2HmG>FIJ(Rbbp#KDf+
zEWx{h{|g?swzjf%?b>9DbQC_H&*&&`%MB+fk^=a5{lVI`YulA+cj(Ze`a@gIEoqWO
z<bAZkCZPEXy!P5_$rkGv1`G&O9$P_sPG}Oqzv>TGtXM%)lcjxPT!W#x71=4n5t2k?
z4-ne;t+uw7H{X2IiK3InZMWT~Kg?H3CEUX<0(N@)XbBjF?oC%xQqnG#!$1A>Q{(b?
ziKO!FW*~b%@T=hQsZ*zT{q@(KD&95<3nSbmt@}?}Wi?(x+Z{Qy+h9RKfn2+G&3$!=
zgSNId$;imiYm#NRWydrrK=_wv8x8|nsKu&PtDF>J86J;^u3f`|E3JQW#44+a63`i_
zA@Jn#^75pnrp9%Ri3fvQ&g^LQj+Y$OqyXvl!1CbnwQJW{wk&0V*HMv^6ZS&0tVxcO
z6u{4ckQ38}4I9$xMra8CiW>_S4X%(RB7QXA#1;U*-_MgzKAE;<@dPn)3E`F|AtFbC
zknLpOzJ07&v&JoPabY67BL4jj)gu<3K^L;Rbm>ygoQdiE>>3&yW4c<If~zEnW(IzO
zfCaO@zMi>r=ej8}DhwpWbp(k9w>1e7*#U&w+57Lm&$@N%+!h-KgXt#1W}gsN#|(B7
zkc+lQlK|rL`Q-TV<8BR$!qD2<Dp^@s`f<_}tMzwXlL8OoTePpBwt=Spvu4do$%YIy
zH8sZFF(UjK5+Nld0f<Nyx<TgQ!-rYCc(LnpqXZ0{w_Hdv&B$s(dnms{XS%4UsBo>R
zi9~Fs*9v4?u6HWP2@|M=e4Y(f-0Stqp+kpUBkA$SAJ>!grL8)rlAw@KxCfm{rB|<B
za`NO!S4c8UZg+GTk^)3cNB0qj{{8z)ZEdZi1f4i>!f2Iz&Q4uZ)^Qsl+80e<2p)g&
z#TQJPG|ACDQ7S7dji>BI4y8+z0@~yOeu?gB4;eB<&Ye4#v=%itH%m!LiP76F-&Q@-
zNm78QEZ`kIQ3D4Kl+Ql<EGd%KuU~I$YP)UMG2J8uh|0z=G|0=#ldW5~+9If~u1<=I
zii{-9@6aR#h`I%BcZ<*u^LRY+)KgDMV`HOff|{F~WzwWcMuKhtg&m$Gxv5bR8_JZF
zlt^V|WkN6ChK7b{1PSo7r0SJ!Vxkb`0aiu%p;B5}Dl1p6l<Mm0FmmeZ>SWEDHL<>8
zaRcc47e$hetXV*PG_nBc)~%cL>(@{E^yw4zx-KnFwl1NsythXvrG@|-vF~2I1DGh9
z&E0-I+A~Q2N+}PTb@RWlwj8t*_<;xwoMQkP^hfB9Hh1if1WYE1CKP|Bl|R#mQy>w$
zj<$P}f>28J1Qr1Qh_-J*EPOj+7{C3)HZFN{7>Ty+hS`nq>QTIl@GFY=4M;0=Ad-Rz
zxXyeJ7zcb8?VFi7J-TyY+GK87_9Xp#^~BPKEirH$m_?C%+~G)yK#lqV+D`8yT`2t;
ziqRdHq#9L*_Vu2z#w*zLXp4cj(`E&*jkC&2t$GFRYhp%%0OkR|aZuufjz!Wrbtf4d
zLRdg-`}`;rKSCG#k|ewxhol-c3lICyBB<hFG=*{uou5>aINCA#q#Csh&0pM1==w#9
zqz4z258()6&%r$e#f<i^N$1s%(Sm)<#`YI*T6LwTG}6YSXkTZwi+3rME$y468np<;
z)0XecK-*KYxBL+g(+Ri$Sws~cW<UxTCoSW=dI)VQVjW61!tN>C@h}mnvrxk8G;$w3
zr4iaINnfj5@vsKF_45$Ee%@1d(Z&ei_X+O&6T$-&$y^3V$os@rB%$kQ;#t7n?xFym
zC>vz;k#oTJs8u5o<^p5TzP0N|i!=UdV7?Y%F=&5pw@a!sE!3iUqS%4<c5@KzuemjI
zH}(mFIJ-dGMf)R3*>FY=zkj7eH3^~pk>ufHVr<`N0$V8*$9<vOA4xssOSBaet2jU=
z<xW=z+9OE-S^P8VX8c?NTm@d>2ID9YSK?aR-`gz&<>5S2Q2agG?ht)}Z_!pzJ_q*U
iXD2OGQ6jE}Y5qTwpyTPgK1_}P0000<MNUMnLSTZ-C<_w+
literal 0
HcmV?d00001
diff --git a/docs/logos/penguin.svg b/docs/logos/penguin.svg
new file mode 100644
index 0000000000..9938dc35ab
--- /dev/null
+++ b/docs/logos/penguin.svg
@@ -0,0 +1,358 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="46.727402"
+ height="88.205261"
+ viewBox="0 0 12.363292 23.337642"
+ version="1.1"
+ id="svg2754"
+ inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+ sodipodi:docname="penguin.svg"
+ inkscape:export-filename="../logo-square.png"
+ inkscape:export-xdpi="150"
+ inkscape:export-ydpi="150"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <defs
+ id="defs2748">
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter5799-3"
+ x="-0.042427354"
+ y="-0.049351394"
+ width="1.1025327"
+ height="1.1192659">
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood5801-7" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite5803-4" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="6"
+ result="blur"
+ id="feGaussianBlur5805-3" />
+ <feOffset
+ dx="6"
+ dy="6"
+ result="offset"
+ id="feOffset5807-7" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite5809-1" />
+ </filter>
+ <mask
+ maskUnits="userSpaceOnUse"
+ id="mask3913-3">
+ <path
+ style="fill:#2f6962"
+ id="path3915-9"
+ d="M 95.108,61.776 244.59,10.309 c 15.666,-5.394 32.738,2.933 38.132,18.599 l 39.799,115.58 c 5.394,15.666 -2.932,32.738 -18.598,38.131 l -103.98,35.801 z"
+ inkscape:connector-curvature="0" />
+ </mask>
+ <mask
+ maskUnits="userSpaceOnUse"
+ id="mask4168-6">
+ <path
+ style="fill:#7c858c"
+ id="path4170-4"
+ d="m 113.124,36.661 c 17.233,36.62 75.371,131.675 105.366,171.054 -4.069,13.505 -18.428,20.812 -30.299,17.44 L 72.849,58.555 C 72.779,46.208 95.748,31.956 113.124,36.661 Z"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0" />
+ </mask>
+ <filter
+ inkscape:label="Ridged Border"
+ inkscape:menu="Bevels"
+ inkscape:menu-tooltip="Ridged border with inner bevel"
+ style="color-interpolation-filters:sRGB"
+ id="filter5576-4"
+ x="0"
+ y="0"
+ width="1"
+ height="1">
+ <feMorphology
+ radius="4.3"
+ in="SourceAlpha"
+ result="result91"
+ id="feMorphology5578-9" />
+ <feComposite
+ operator="out"
+ in="SourceGraphic"
+ in2="result91"
+ id="feComposite5580-1" />
+ <feGaussianBlur
+ result="result0"
+ stdDeviation="1.2"
+ id="feGaussianBlur5582-2" />
+ <feDiffuseLighting
+ diffuseConstant="1"
+ id="feDiffuseLighting5584-3">
+ <feDistantLight
+ elevation="66"
+ azimuth="225"
+ id="feDistantLight5586-1" />
+ </feDiffuseLighting>
+ <feBlend
+ mode="multiply"
+ in2="SourceGraphic"
+ id="feBlend5588-8" />
+ <feComposite
+ operator="in"
+ in2="SourceAlpha"
+ id="feComposite5590-1" />
+ </filter>
+ <linearGradient
+ id="linearGradient3301">
+ <stop
+ id="stop3303"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3305"
+ offset="1"
+ style="stop-color:#868686;stop-opacity:1;" />
+ </linearGradient>
+ <mask
+ maskUnits="userSpaceOnUse"
+ id="mask4481-9">
+ <path
+ style="clip-rule:evenodd;fill:#aaaaaa;fill-rule:evenodd"
+ id="path4483-2"
+ d="m 213.96734,236.83626 c -1.97572,1.50086 -5.71734,14.75814 -3.57441,17.84065 3.18643,4.58465 22.42412,-12.69851 20.66112,-17.24646 -1.81294,-4.67518 -15.35694,-1.41227 -17.08671,-0.59419 z m -9.6286,-7.34722 2.48938,3.78195 c 0,0 0.69017,1.04372 0.29628,3.40302 -0.6156,3.68976 -3.17495,13.25876 -3.32578,21.12255 -0.0183,0.94976 -0.91914,9.5039 7.21943,7.07006 8.1393,-2.43309 24.96824,-17.85854 28.33195,-24.69252 3.36372,-6.83399 -0.96483,-10.63865 -6.21591,-10.98709 -5.2511,-0.34921 -13.3456,0.21962 -17.06874,0.84795 -3.72313,0.62832 -3.49361,-0.75818 -6.67723,-4.3506 -0.23896,-0.26961 -5.04938,3.80468 -5.04938,3.80468 z"
+ inkscape:connector-curvature="0" />
+ </mask>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter6162"
+ x="-0.23894344"
+ y="-0.15139444"
+ width="1.4778869"
+ height="1.3658699">
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood6164" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite6166" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="6"
+ result="blur"
+ id="feGaussianBlur6168" />
+ <feOffset
+ dx="6"
+ dy="6"
+ result="offset"
+ id="feOffset6170" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="fbSourceGraphic"
+ id="feComposite6172" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix6174" />
+ <feFlood
+ id="feFlood6176"
+ flood-opacity="1"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ id="feComposite6178"
+ in2="fbSourceGraphic"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur6180"
+ in="composite1"
+ stdDeviation="6"
+ result="blur" />
+ <feOffset
+ id="feOffset6182"
+ dx="-6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ id="feComposite6184"
+ in2="offset"
+ in="fbSourceGraphic"
+ operator="over"
+ result="composite2" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.5027778"
+ inkscape:cx="103.28524"
+ inkscape:cy="68.324084"
+ inkscape:document-units="mm"
+ inkscape:current-layer="g2753-0"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1920"
+ inkscape:window-height="1131"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ units="px"
+ inkscape:showpageshadow="2"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1" />
+ <metadata
+ id="metadata2751">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(15.314622,-233.97731)">
+ <g
+ id="g4944"
+ transform="matrix(0.24862701,-0.09049283,0.09049283,0.24862701,-92.040544,272.60195)">
+ <g
+ transform="rotate(19,545.20406,769.86173)"
+ id="g4988-0">
+ <g
+ id="g5736-0">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="137.92564"
+ y="176.00142"
+ id="text5724-0"
+ transform="rotate(1.0000002)"><tspan
+ sodipodi:role="line"
+ id="tspan5726-6"
+ x="137.92564"
+ y="176.00142"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:180px;font-family:Overpass;-inkscape-font-specification:'Overpass Bold';letter-spacing:-10px;fill:#e6e6e6;fill-opacity:1" /></text>
+ <g
+ id="g2753-0"
+ transform="translate(-18.749067,-72.815807)">
+ <path
+ d="m 122.88954,229.92364 c 3.341,7.154 7.81,5.77 7.88,5.746 1.371,-0.472 5.829,-2.582 4.696,-5.873 -1.025,-2.977 -8.385,-3.373 -13.437,-1.633 -5.015,1.727 -10.665,6.602 -9.64,9.579 1.133,3.291 5.946,2.208 7.316,1.737 0.069,-0.024 4.799,-0.91 2.672,-9.379 -0.078,-0.312 0.404,-0.412 0.513,-0.177 z"
+ id="path2755-8"
+ style="clip-rule:evenodd;fill:#ffe600;fill-rule:evenodd"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="../penguin.png"
+ inkscape:export-xdpi="150"
+ inkscape:export-ydpi="150" />
+ <path
+ d="m 93.013543,187.02664 c -4.764,-17.913 -3.791,-32.973 2.812,-35.247 6.601997,-2.273 16.640997,8.995 23.914997,26.044 1.745,2.829 5.157,8.08 7.865,10.513 1.976,1.775 1.993,2.732 -1.079,2.212 -0.927,-0.157 -1.726,-0.358 -2.438,-0.662 5.736,19.254 5.048,35.957 -1.934,38.36 -6.981,2.404 -17.806,-10.334 -25.140997,-29.038 -0.374,0.678 -0.879,1.328 -1.513,2.022 -2.1,2.301 -2.676,1.537 -2.212,-1.079 0.636,-3.584 0.092,-9.822 -0.275,-13.125 z"
+ id="path2757-1"
+ style="fill:#000000;fill-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 100.36354,200.08264 c -5.497997,-15.966 -5.113997,-30.576 0.857,-32.632 5.971,-2.056 15.268,9.22 20.766,25.187 5.498,15.966 5.114,30.576 -0.857,32.632 -5.971,2.056 -15.268,-9.22 -20.766,-25.187 z m 0.699,-36.784 c -0.536,-1.558 -0.428,-3.008 0.243,-3.239 0.671,-0.231 1.649,0.845 2.186,2.402 0.536,1.558 0.427,3.008 -0.243,3.239 -0.671,0.231 -1.65,-0.845 -2.186,-2.402 z m -4.700997,1.618 c -0.536,-1.558 -0.427,-3.008 0.243,-3.239 0.67,-0.231 1.649,0.845 2.185,2.402 0.536,1.557 0.428,3.008 -0.243,3.239 -0.671,0.231 -1.649,-0.844 -2.185,-2.402 z"
+ id="path2759-9"
+ style="clip-rule:evenodd;fill:#ffffff;fill-opacity:1;fill-rule:evenodd"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g2761-8"
+ transform="translate(-7.9684573,2.7456446)">
+ <ellipse
+ transform="matrix(-0.9455,0.3255,-0.3255,-0.9455,267.4128,287.6192)"
+ cx="109.643"
+ cy="166.18201"
+ rx="4.428"
+ ry="2.142"
+ id="ellipse2763-1"
+ style="fill:#ffe600" />
+ <path
+ d=""
+ id="path2765-6"
+ style="fill:#ffe600"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ </g>
+ <text
+ transform="rotate(1.0000002)"
+ id="text5053-7"
+ y="53.587437"
+ x="-408.52026"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="53.587437"
+ x="-408.52026"
+ id="tspan5055-2"
+ sodipodi:role="line" /></text>
+ <text
+ transform="rotate(1.0000002)"
+ id="text5057-8"
+ y="-232.88652"
+ x="-525.88629"
+ style="font-style:normal;font-weight:normal;font-size:90px;line-height:125%;font-family:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="-232.88652"
+ x="-525.88629"
+ id="tspan5059-1"
+ sodipodi:role="line" /></text>
+ <text
+ transform="rotate(1.0000002)"
+ id="text5069-7"
+ y="-200.07454"
+ x="543.02759"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="-200.07454"
+ x="543.02759"
+ id="tspan5071-7"
+ sodipodi:role="line" /></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:25px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="582.63574"
+ y="-37.070248"
+ id="text4950"><tspan
+ sodipodi:role="line"
+ id="tspan4948"
+ x="582.63574"
+ y="-37.070248" /></text>
+ </g>
+ </g>
+</svg>
diff --git a/docs/page.xsl b/docs/page.xsl
index 548d5a11c4..7c4f295053 100644
--- a/docs/page.xsl
+++ b/docs/page.xsl
@@ -116,6 +116,9 @@
<script type="text/javascript" src="{$href_base}js/main.js">
<xsl:comment>// forces non-empty element</xsl:comment>
</script>
+ <script type="text/javascript" src="{$href_base}js/particles.js">
+ <xsl:comment>// forces non-empty element</xsl:comment>
+ </script>
</head>
<body onload="pageload()">
<div id="body">
@@ -197,6 +200,11 @@
</div>
<br class="clear"/>
</div>
+ <xsl:if test="$pagesrc = 'docs/404.html.in'">
+ <script src="{$href_base}js/app.js">
+ <xsl:comment>// forces non-empty element</xsl:comment>
+ </script>
+ </xsl:if>
</body>
</html>
</xsl:template>
--
2.39.1
4
4
The following changes since commit 6a50f64ca01d0a7b97f14f069762bfd88160f31e:
Merge tag 'pull-request-2023-02-14' of https://gitlab.com/thuth/qemu into staging (2023-02-14 14:46:10 +0000)
are available in the Git repository at:
https://gitlab.com/berrange/qemu tags/misc-next-pull-request
for you to fetch changes up to 36debafddd788066be10b33c5f11b984a08e5c85:
ui: remove deprecated 'password' option for SPICE (2023-02-15 11:14:58 -0500)
----------------------------------------------------------------
* Document 'password-secret' option for -iscsi
* Deprecate iSCSI 'password' in favour of 'password-secret'
* Remove deprecated 'password' option for SPICE
* Fix handling of cached read buffers with TLS
----------------------------------------------------------------
Antoine Damhet (2):
crypto: TLS: introduce `check_pending`
io/channel-tls: fix handling of bigger read buffers
Daniel P. Berrangé (3):
block: mention 'password-secret' option for -iscsi
block: deprecate iSCSI 'password' in favour of 'password-secret'
ui: remove deprecated 'password' option for SPICE
block/iscsi.c | 3 ++
crypto/tlssession.c | 14 +++++++
docs/about/deprecated.rst | 16 ++++----
docs/about/removed-features.rst | 7 ++++
include/crypto/tlssession.h | 11 ++++++
io/channel-tls.c | 66 ++++++++++++++++++++++++++++++++-
qemu-options.hx | 13 ++-----
ui/spice-core.c | 15 --------
8 files changed, 111 insertions(+), 34 deletions(-)
--
2.39.1
2
6
Here are some cleanup, as promised here:
https://listman.redhat.com/archives/libvir-list/2023-February/237721.html
Now, there are still some patches missing.
Firstly, we still don't really capture error from passt. My suggestion
was to wait for socket to show up with errfd open. But active wait is
viewed as undesirable [1].
Secondly, Laine reported SELinux issues. Yeah, I don't see us setting
SELinux label on nor socket that passt and QEMU talk to each other, nor
on the log file. Speaking of which - we usually have per domain (or per
helper daemon instance even) log file, while for passt we have a global
one (/var/log/passt.log). I don't think that will fly if two or more
SELinux enabled domains want to use passt.
Thirdly, Stefano suggested a graceful shutdown for passt: have libvirt
connect to the socket and close it. Since we pass --one-off, this should
singal passt to exit. But I haven't implemented that because it's
redundant. We can't rely on passt quitting itself and thus use the big
gun (virPidFileForceCleanupPath()) at which point, the socket way is
just an optimization.
I might look into the first two, at some point. But not today.
1: https://listman.redhat.com/archives/libvir-list/2023-February/237663.html
Michal PrĂvoznĂk (4):
Revert "qemu: allow passt to self-daemonize"
qemu_extdevice: Make qemuExtDevicesHasDevice() check def->nets
qemu_passt: Report error when getting passt PID failed
qemu_passt: Don't let passt fork off
src/qemu/qemu_extdevice.c | 11 +++++++++++
src/qemu/qemu_passt.c | 15 ++++++++++-----
2 files changed, 21 insertions(+), 5 deletions(-)
--
2.39.1
5
18
[PATCH v4 14/16] qapi: deprecate "device" field of DEVICE_* events
by Vladimir Sementsov-Ogievskiy 16 Feb '23
by Vladimir Sementsov-Ogievskiy 16 Feb '23
16 Feb '23
The device field is redundant, because QOM path always include device
ID when this ID exist.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov(a)yandex-team.ru>
---
docs/about/deprecated.rst | 9 +++++++++
qapi/qdev.json | 12 ++++++++++--
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index da2e6fe63d..b389934691 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -171,6 +171,15 @@ accepted incorrect commands will return an error. Users should make sure that
all arguments passed to ``device_add`` are consistent with the documented
property types.
+QEMU Machine Protocol (QMP) events
+----------------------------------
+
+``DEVICE_DELETED`` & ``DEVICE_UNPLUG_GUEST_ERROR`` field ``device`` (since 8.0)
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+Devices that has ``ID`` always has QOM path `/machine/peripheral/ID`. So, the
+``device`` field is redundant and deprecated. Use the ``path`` field instead.
+
Host Architectures
------------------
diff --git a/qapi/qdev.json b/qapi/qdev.json
index 2708fb4e99..325ef554f9 100644
--- a/qapi/qdev.json
+++ b/qapi/qdev.json
@@ -124,6 +124,9 @@
#
# @path: the device's QOM path
#
+# Features:
+# @deprecated: Member @device is deprecated as redundant. Use @path instead.
+#
# Since: 1.5
#
# Example:
@@ -135,7 +138,8 @@
#
##
{ 'event': 'DEVICE_DELETED',
- 'data': { '*device': 'str', 'path': 'str' } }
+ 'data': { '*device': { 'type': 'str', 'features': [ 'deprecated' ] },
+ 'path': 'str' } }
##
# @DEVICE_UNPLUG_GUEST_ERROR:
@@ -146,6 +150,9 @@
#
# @path: the device's QOM path
#
+# Features:
+# @deprecated: Member @device is deprecated as redundant. Use @path instead.
+#
# Since: 6.2
#
# Example:
@@ -157,4 +164,5 @@
#
##
{ 'event': 'DEVICE_UNPLUG_GUEST_ERROR',
- 'data': { '*device': 'str', 'path': 'str' } }
+ 'data': { '*device': { 'type': 'str', 'features': [ 'deprecated' ] },
+ 'path': 'str' } }
--
2.34.1
5
17
[PATCH] qemu_extdevice: Add a comment into qemuExtDevicesSetupCgroup()
by Michal Privoznik 15 Feb '23
by Michal Privoznik 15 Feb '23
15 Feb '23
The way setting up CGroups for external helpers work, is:
qemuExtDevicesHasDevice() is called first to determine whether
there is a helper process running, the CGroup controller is
created and then qemuExtDevicesSetupCgroup() is called to place
helpers into the CGroup. But when one reads just
qemuExtDevicesSetupCgroup() it's easy to miss this hidden logic.
Therefore, add a warning at the beginning of the function.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_extdevice.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/qemu/qemu_extdevice.c b/src/qemu/qemu_extdevice.c
index 47e97f3565..1c397972e4 100644
--- a/src/qemu/qemu_extdevice.c
+++ b/src/qemu/qemu_extdevice.c
@@ -331,6 +331,9 @@ qemuExtDevicesSetupCgroup(virQEMUDriver *driver,
virDomainDef *def = vm->def;
size_t i;
+ /* Don't forget to adjust qemuExtDevicesHasDevice() accordingly.
+ * Otherwise, this function might not be called at all. */
+
if (qemuDBusSetupCgroup(driver, vm, cgroup) < 0)
return -1;
--
2.39.1
2
1
https://gitlab.com/libvirt/libvirt-wiki/-/merge_requests/1
Hi,
in order to ease editing of the libvirt wiki, remove the need for
registering users and remove the need to run PHP in an openshift instance
I've decided to contents of the libvirt wiki into a staticaly generated
page using (almost) the same approach we use to generate the libvirt web
pages from rST documents in the repo.
All articles were converted into rST files [1] and images linked from
currently existing articles were dowloaded.
Advantages:
- same workflow as with editing the libvirt pages
- gitlab still provides a web editor
- local editing for users who hate web
- no need to deal with user registration
- no need to run PHP in openshift
- we still keep separate space for docs which don't really belong into the
main repo
- even if we decide to kill-off the wiki eventually the valuable content
will be easier to port to the kbase as it'll be in rST
- the conversion fixed many orphaned pages
Disadvantages:
- all links will be broken [2]
- changes will need to be reviewed/approved
- low quality/obsolete content is forward-ported as I didn't review
anything
- the build script is in bash (This obviously can be changed if somebody
cares more than I do.)
The generator is based on a cleaned up page.xsl and other assets from
libvirt's repo and the check-html-references script [3] to validate linking.
The new wiki can for now be browsed from artifacts of the pipeline job that
I've used to test it:
https://pipo.sk.gitlab.io/-/libvirt-wiki/-/jobs/3771076975/artifacts/websit…
(I know my username is unfortunate to contain a dot which breaks the
certificate)
If somebody wishes to see the extremely ugly conversion scripts:
https://gitlab.com/pipo.sk/libvirt-wiki/-/commit/fe36e37d3580a76ca18e512354…
[1] The conversion was done using a collection of ugly scripts and pandoc.
Unfortunately markdown-eque formats have the issue of not really having
strict rules and in certain cases the tools used to process them not
implementing them correctly. This meant that the least painful was actually
the coversion from HTML!!! and not the internal mediawiki format.
[2] If we really want to preserve links I can modify the script to generate
a list of redirects for the webserver, but I really doubt that preserving
links has value. Additionally some content was moved to the knowledge base,
so I really want to just delete it from the wiki, so breaking links is a
feature.
[3] It uses the version after the last patchset:
https://listman.redhat.com/archives/libvir-list/2023-February/237785.html
2
4
Improve the checker tool to also track orphaned pages and check presence
and usage of images. In addition to that this series fixes handful of
instances of the problems that the script caught.
This series adds two documents:
- docs/logos/README.rst (converted into docs/logos/index.html)
The page shows all logos which libvirt has. It's now linked from the
docs page.
https://pipo.sk.gitlab.io/-/libvirt/-/jobs/3770134533/artifacts/website/log…
- docs/golang.rst
The page ties together the 4 go module pages we have which were not
linked and is linked from docs.html
https://pipo.sk.gitlab.io/-/libvirt/-/jobs/3770134533/artifacts/website/gol…
Peter Krempa (9):
docs: XSL: Add source document name as custom data attribute for
<html>
scripts: check-html-references: Rename --prefix to --webroot and make
it mandatory
scripts: check-html-references: Improve error messages and don't mess
with relative paths
docs: manpages: Add missing manpages to index
docs: Add sub-page for all golang modules
scripts: check-html-references: Detect pages that are not linked to
kbase: eventloop: Fix path to referenced images
docs: logos: Turn 'README' into rST, generate an index and link to
images
scripts: check-html-refernces: Add checking for image file usage
docs/docs.rst | 5 +-
docs/golang.rst | 21 +++
docs/kbase/internals/eventloop.rst | 4 +-
docs/logos/README | 98 --------------
docs/logos/README.rst | 166 ++++++++++++++++++++++++
docs/logos/meson.build | 47 +++++++
docs/manpages/index.rst | 3 +
docs/meson.build | 3 +-
docs/page.xsl | 2 +-
scripts/check-html-references.py | 198 +++++++++++++++++++++++------
10 files changed, 406 insertions(+), 141 deletions(-)
create mode 100644 docs/golang.rst
delete mode 100644 docs/logos/README
create mode 100644 docs/logos/README.rst
--
2.39.1
2
18