Files
libvirt/tests/qemuxmlconfdata/disk-usb-device.x86_64-latest.xml
T
Peter Krempa f08af07f83 qemu: Fill in model of 'usb' disks to preserve ABI compatibility
While 'usb-bot' and 'usb-storage' are ABI and migration compatible for
disks it's not the case for cdroms. When migrating from a new config
using 'usb-bot' to an older daemon which would use 'usb-storage' the
guest os will get I/O errors.

Thus we must properly fill in models for 'usb' disks so that cdroms can
be handled properly.

When parsing XML fill in the models and drop the appropriate models when
formatting migratable XML.

The logic is explained in comments in the code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2025-06-24 16:29:12 +02:00

108 lines
3.6 KiB
XML

<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219136</memory>
<currentMemory unit='KiB'>219136</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
<cpu mode='custom' match='exact' check='none'>
<model fallback='forbid'>qemu64</model>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/img1'/>
<target dev='sda' bus='usb'/>
</disk>
<disk type='file' device='cdrom' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/img2'/>
<target dev='sdb' bus='usb'/>
<readonly/>
</disk>
<disk type='file' device='disk' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/img3'/>
<target dev='sdc' bus='usb'/>
<serial>testserial1</serial>
</disk>
<disk type='file' device='cdrom' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/img4'/>
<target dev='sdd' bus='usb'/>
<readonly/>
<serial>testserial2</serial>
</disk>
<disk type='file' device='disk' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/img5'/>
<target dev='sde' bus='usb'/>
<alias name='ua-test1'/>
</disk>
<disk type='file' device='cdrom' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/img6'/>
<target dev='sdf' bus='usb'/>
<readonly/>
<alias name='ua-test2'/>
</disk>
<disk type='file' device='disk' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/img7'/>
<target dev='sdg' bus='usb'/>
<serial>testserial3</serial>
<alias name='ua-test3'/>
</disk>
<disk type='file' device='cdrom' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/img8'/>
<target dev='sdh' bus='usb'/>
<readonly/>
<serial>testserial4</serial>
<alias name='ua-test4'/>
</disk>
<disk type='file' device='disk' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/img9'/>
<target dev='sdi' bus='usb' removable='on'/>
</disk>
<disk type='file' device='disk' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/imga'/>
<target dev='sdj' bus='usb' removable='on'/>
<serial>testserial5</serial>
</disk>
<disk type='file' device='disk' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/imgb'/>
<target dev='sdk' bus='usb' removable='on'/>
<alias name='ua-test5'/>
</disk>
<disk type='file' device='disk' model='usb-storage'>
<driver name='qemu' type='raw'/>
<source file='/tmp/imgc'/>
<target dev='sdl' bus='usb' removable='on'/>
<serial>testserial6</serial>
<alias name='ua-test6'/>
</disk>
<controller type='usb' index='0' model='piix3-uhci'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<audio id='1' type='none'/>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</memballoon>
</devices>
</domain>