This series refactors the qemu disk hotplug code so that it can be easily extended for hotplug of transient disks and then also used at startup to plug in disks where the users want to share the backing image. Masayoshi Mizuma (1): qemu_snapshot: Add the guest name to the transient disk path Peter Krempa (34): qemu: snapshot: Extract setup of snapshot disk definition for transient disks qemu: process: Setup transient disks only when starting a fresh VM qemuSnapshotDiskPrepareOne: Pass in qemuSnapshotDiskContext qemuSnapshotDiskContext: Store virQEMUDriverConfig in the struct qemuSnapshotDiskPrepareOne: Use data from qemuSnapshotDiskContext qemuSnapshotDiskCreate: Use 'cfg' from the qemuSnapshotDiskContext qemu: snapshot: move transient snapshot code to qemu_process qemu: Move 'bootindex' handling for disks out of command line formatter qemu: Move bootindex usage logic into qemuBuildDiskDeviceStr qemuxml2argvtest: Remove pointless tests for keywrapping on s390 qemu: Move iothread and s390 address validation for disk devices into the validator Replace virDomainDiskInsertPreAlloced by virDomainDiskInsert conf: remove virDomainDiskInsertPreAlloced qemuBlockStorageSourceChainData: Add handling of 'copy-on-read' filter layer qemuDomainAttachDiskGeneric: Move 'copy-on-read' handling to qemuBlockStorageSourceChainData qemuDomainRemoveDiskDevice: Move 'copy-on-read' handling to qemuBlockStorageSourceChainData qemuDomainAttachDeviceDiskLiveInternal: Absorb qemuDomainAttachUSBMassStorageDevice qemuDomainAttachDeviceDiskLiveInternal: Absorb qemuDomainAttachVirtioDiskDevice qemuDomainAttachDeviceDiskLiveInternal: Absorb qemuDomainAttachSCSIDisk qemuDomainAttachDeviceDiskLiveInternal: Simplify call to qemuDomainAttachDiskGeneric qemuDomainAttachDiskGeneric: Move setup of disk into qemuDomainAttachDeviceDiskLiveInternal qemu: hotplug: Move post-insertion steps of disk hotplug to qemuDomainAttachDeviceDiskLiveInternal qemuDomainAttachDiskGeneric: Fix whitespace qemuDomainAttachDiskGeneric: Refactor cleanup qemuDomainAttachDiskGeneric: Move PR helper attach into qemuDomainAttachDeviceDiskLiveInternal qemuDomainAttachDiskGeneric: Refactor rollback handling qemuDomainAttachDiskGeneric: Split up frontend and backend attachment qemu: Track creation of <transient> disk overlay individually qemuDomainAttachDiskGeneric: Implement hotplug of <transient> disk qemuDomainAttachDiskGeneric: Pass the qemu async job type qemuDomainAttachDiskGeneric: Export conf: Introduce 'shareBacking' for <transient> disks qemu: Allow <transient> disks with images shared accross VMs tests: Add qemuxml2argv and qemuxml2xml test for <transient shareBacking='yes'> docs/formatdomain.rst | 6 + docs/schemas/domaincommon.rng | 5 + src/conf/domain_conf.c | 33 +- src/conf/domain_conf.h | 3 +- src/libvirt_private.syms | 1 - src/libxl/libxl_driver.c | 4 +- src/lxc/lxc_driver.c | 6 +- src/qemu/qemu_block.c | 12 + src/qemu/qemu_block.h | 4 + src/qemu/qemu_command.c | 134 ++----- src/qemu/qemu_command.h | 1 - src/qemu/qemu_domain.c | 2 - src/qemu/qemu_domain.h | 11 +- src/qemu/qemu_hotplug.c | 335 +++++++++--------- src/qemu/qemu_hotplug.h | 6 + src/qemu/qemu_process.c | 203 ++++++++++- src/qemu/qemu_snapshot.c | 160 +++------ src/qemu/qemu_snapshot.h | 27 +- src/qemu/qemu_validate.c | 73 ++++ .../disk-transient.x86_64-4.1.0.err | 2 +- .../disk-transient.x86_64-latest.args | 4 +- tests/qemuxml2argvdata/disk-transient.xml | 6 + tests/qemuxml2argvtest.c | 8 - .../disk-transient.x86_64-latest.xml | 48 +++ tests/qemuxml2xmltest.c | 3 +- 25 files changed, 644 insertions(+), 453 deletions(-) create mode 100644 tests/qemuxml2xmloutdata/disk-transient.x86_64-latest.xml -- 2.31.1