This series fixes and improves the 'json:' pseudo-protocol parser and implements the 'offset' and 'size' attributes and exposes them as <slice> in the XML. The previous version attempted an easy route, but that didn't cover all cases. This version adds storage slice support for everything except image creation. https://bugzilla.redhat.com/show_bug.cgi?id=1791788 Peter Krempa (15): qemu: domain: Refactor formatting of node names into status XML docs: formatdomain: Close <source> on one of disk examples tests: virstorage: Add test data for json specified raw image with offset/size util: virstoragefile: Add data structure for storing storage source slices qemuBlockStorageSourceGetFormatRawProps: format 'offset' and 'size' for slice qemuDomainValidateStorageSource: Reject unsupported slices qemu: block: forbid creation of storage sources with <slice> docs: Document the new <slices> sub-element of disk's <source> conf: Implement support for <slices> of disk source qemu: domain: Store nodenames of slice in status XML qemu: block: Properly format storage slice into backing store strings tests: qemublock: Add cases for creating image overlays on top of disks with <slice> qemu: Add support for slices of type 'storage' tests: qemu: Add test data for the new <slice> element virStorageSourceParseBackingJSONRaw: Parse 'offset' and 'size' attributes docs/formatdomain.html.in | 14 ++ docs/schemas/domaincommon.rng | 19 ++ src/conf/domain_conf.c | 86 +++++++++ src/qemu/qemu_block.c | 169 ++++++++++++++---- src/qemu/qemu_block.h | 4 + src/qemu/qemu_blockjob.c | 1 + src/qemu/qemu_command.c | 8 + src/qemu/qemu_domain.c | 36 +++- src/util/virstoragefile.c | 49 +++++ src/util/virstoragefile.h | 12 ++ tests/qemublocktest.c | 2 + .../qcow2-backing-qcow2-slice.json | 15 ++ .../imagecreate/qcow2-backing-qcow2-slice.xml | 1 + .../imagecreate/qcow2-backing-raw-slice.json | 15 ++ .../imagecreate/qcow2-backing-raw-slice.xml | 1 + .../imagecreate/qcow2-slice.xml | 14 ++ .../imagecreate/raw-slice.xml | 14 ++ tests/qemustatusxml2xmldata/modern-in.xml | 4 + .../disk-slices.x86_64-latest.args | 53 ++++++ tests/qemuxml2argvdata/disk-slices.xml | 45 +++++ tests/qemuxml2argvtest.c | 2 + .../disk-slices.x86_64-latest.xml | 56 ++++++ tests/qemuxml2xmltest.c | 2 + tests/virstoragetest.c | 13 ++ 24 files changed, 590 insertions(+), 45 deletions(-) create mode 100644 tests/qemublocktestdata/imagecreate/qcow2-backing-qcow2-slice.json create mode 120000 tests/qemublocktestdata/imagecreate/qcow2-backing-qcow2-slice.xml create mode 100644 tests/qemublocktestdata/imagecreate/qcow2-backing-raw-slice.json create mode 120000 tests/qemublocktestdata/imagecreate/qcow2-backing-raw-slice.xml create mode 100644 tests/qemublocktestdata/imagecreate/qcow2-slice.xml create mode 100644 tests/qemublocktestdata/imagecreate/raw-slice.xml create mode 100644 tests/qemuxml2argvdata/disk-slices.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/disk-slices.xml create mode 100644 tests/qemuxml2xmloutdata/disk-slices.x86_64-latest.xml -- 2.24.1