[libvirt] [PATCH 0/4] qemu: move rerror/werror to -device

This series requires the qemu 3.0.0 capabilities that I've sent with https://www.redhat.com/archives/libvir-list/2018-July/msg00454.html Peter Krempa (4): tests: qemuxml2argv: Unify all tests for disk error policy tests: qemuxml2argv: Add CAPS_LATEST version for the disk error policy test qemu: capabilities: Add capability for werror/rerror for 'usb-device' frontend qemu: command: Format rerror/werror with -device instead of -drive src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 6 +++- tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml | 1 + .../disk-drive-error-policy-enospace.args | 30 ---------------- .../disk-drive-error-policy-enospace.xml | 37 ------------------- .../disk-drive-error-policy-stop.args | 30 ---------------- .../disk-drive-error-policy-stop.xml | 37 ------------------- ...t-rignore.args => disk-drive-error-policy.args} | 9 +++-- .../disk-drive-error-policy.x86_64-latest.args | 41 ++++++++++++++++++++++ ...ort-rignore.xml => disk-drive-error-policy.xml} | 13 ++++--- tests/qemuxml2argvtest.c | 5 ++- .../disk-drive-error-policy-enospace.xml | 41 ---------------------- .../disk-drive-error-policy-stop.xml | 41 ---------------------- ...ort-rignore.xml => disk-drive-error-policy.xml} | 13 ++++--- tests/qemuxml2xmltest.c | 4 +-- 16 files changed, 77 insertions(+), 234 deletions(-) delete mode 100644 tests/qemuxml2argvdata/disk-drive-error-policy-enospace.args delete mode 100644 tests/qemuxml2argvdata/disk-drive-error-policy-enospace.xml delete mode 100644 tests/qemuxml2argvdata/disk-drive-error-policy-stop.args delete mode 100644 tests/qemuxml2argvdata/disk-drive-error-policy-stop.xml rename tests/qemuxml2argvdata/{disk-drive-error-policy-wreport-rignore.args => disk-drive-error-policy.args} (73%) create mode 100644 tests/qemuxml2argvdata/disk-drive-error-policy.x86_64-latest.args rename tests/qemuxml2argvdata/{disk-drive-error-policy-wreport-rignore.xml => disk-drive-error-policy.xml} (75%) delete mode 100644 tests/qemuxml2xmloutdata/disk-drive-error-policy-enospace.xml delete mode 100644 tests/qemuxml2xmloutdata/disk-drive-error-policy-stop.xml rename tests/qemuxml2xmloutdata/{disk-drive-error-policy-wreport-rignore.xml => disk-drive-error-policy.xml} (78%) -- 2.16.2

Add multiple drives with the various configurations rather than having multiple tests. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- .../disk-drive-error-policy-enospace.args | 30 ---------------- .../disk-drive-error-policy-enospace.xml | 37 ------------------- .../disk-drive-error-policy-stop.args | 30 ---------------- .../disk-drive-error-policy-stop.xml | 37 ------------------- ...t-rignore.args => disk-drive-error-policy.args} | 9 +++-- ...ort-rignore.xml => disk-drive-error-policy.xml} | 13 ++++--- tests/qemuxml2argvtest.c | 4 +-- .../disk-drive-error-policy-enospace.xml | 41 ---------------------- .../disk-drive-error-policy-stop.xml | 41 ---------------------- ...ort-rignore.xml => disk-drive-error-policy.xml} | 13 ++++--- tests/qemuxml2xmltest.c | 4 +-- 11 files changed, 26 insertions(+), 233 deletions(-) delete mode 100644 tests/qemuxml2argvdata/disk-drive-error-policy-enospace.args delete mode 100644 tests/qemuxml2argvdata/disk-drive-error-policy-enospace.xml delete mode 100644 tests/qemuxml2argvdata/disk-drive-error-policy-stop.args delete mode 100644 tests/qemuxml2argvdata/disk-drive-error-policy-stop.xml rename tests/qemuxml2argvdata/{disk-drive-error-policy-wreport-rignore.args => disk-drive-error-policy.args} (73%) rename tests/qemuxml2argvdata/{disk-drive-error-policy-wreport-rignore.xml => disk-drive-error-policy.xml} (75%) delete mode 100644 tests/qemuxml2xmloutdata/disk-drive-error-policy-enospace.xml delete mode 100644 tests/qemuxml2xmloutdata/disk-drive-error-policy-stop.xml rename tests/qemuxml2xmloutdata/{disk-drive-error-policy-wreport-rignore.xml => disk-drive-error-policy.xml} (78%) diff --git a/tests/qemuxml2argvdata/disk-drive-error-policy-enospace.args b/tests/qemuxml2argvdata/disk-drive-error-policy-enospace.args deleted file mode 100644 index 3b7f54c975..0000000000 --- a/tests/qemuxml2argvdata/disk-drive-error-policy-enospace.args +++ /dev/null @@ -1,30 +0,0 @@ -LC_ALL=C \ -PATH=/bin \ -HOME=/home/test \ -USER=test \ -LOGNAME=test \ -QEMU_AUDIO_DRV=none \ -/usr/bin/qemu-system-i686 \ --name QEMUGuest1 \ --S \ --machine pc,accel=tcg,usb=off,dump-guest-core=off \ --m 214 \ --smp 1,sockets=1,cores=1,threads=1 \ --uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ --display none \ --no-user-config \ --nodefaults \ --chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ -server,nowait \ --mon chardev=charmonitor,id=monitor,mode=control \ --rtc base=utc \ --no-shutdown \ --no-acpi \ --boot c \ --usb \ --drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-ide0-0-0,\ -werror=enospc,cache=none \ --device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 \ --drive file=/dev/HostVG/QEMUGuest2,format=raw,if=none,id=drive-ide0-1-0,\ -media=cdrom,readonly=on \ --device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 diff --git a/tests/qemuxml2argvdata/disk-drive-error-policy-enospace.xml b/tests/qemuxml2argvdata/disk-drive-error-policy-enospace.xml deleted file mode 100644 index dcde3fd2ed..0000000000 --- a/tests/qemuxml2argvdata/disk-drive-error-policy-enospace.xml +++ /dev/null @@ -1,37 +0,0 @@ -<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='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i686</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='qcow2' cache='none' error_policy='enospace'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <disk type='block' device='cdrom'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest2'/> - <target dev='hdc' bus='ide'/> - <readonly/> - <address type='drive' controller='0' bus='1' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'/> - <controller type='ide' index='0'/> - <controller type='pci' index='0' model='pci-root'/> - <input type='mouse' bus='ps2'/> - <input type='keyboard' bus='ps2'/> - <memballoon model='none'/> - </devices> -</domain> diff --git a/tests/qemuxml2argvdata/disk-drive-error-policy-stop.args b/tests/qemuxml2argvdata/disk-drive-error-policy-stop.args deleted file mode 100644 index 28a9727c67..0000000000 --- a/tests/qemuxml2argvdata/disk-drive-error-policy-stop.args +++ /dev/null @@ -1,30 +0,0 @@ -LC_ALL=C \ -PATH=/bin \ -HOME=/home/test \ -USER=test \ -LOGNAME=test \ -QEMU_AUDIO_DRV=none \ -/usr/bin/qemu-system-i686 \ --name QEMUGuest1 \ --S \ --machine pc,accel=tcg,usb=off,dump-guest-core=off \ --m 214 \ --smp 1,sockets=1,cores=1,threads=1 \ --uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ --display none \ --no-user-config \ --nodefaults \ --chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ -server,nowait \ --mon chardev=charmonitor,id=monitor,mode=control \ --rtc base=utc \ --no-shutdown \ --no-acpi \ --boot c \ --usb \ --drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-ide0-0-0,\ -werror=stop,rerror=stop,cache=none \ --device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 \ --drive file=/dev/HostVG/QEMUGuest2,format=raw,if=none,id=drive-ide0-1-0,\ -media=cdrom,readonly=on \ --device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 diff --git a/tests/qemuxml2argvdata/disk-drive-error-policy-stop.xml b/tests/qemuxml2argvdata/disk-drive-error-policy-stop.xml deleted file mode 100644 index 004dc974cd..0000000000 --- a/tests/qemuxml2argvdata/disk-drive-error-policy-stop.xml +++ /dev/null @@ -1,37 +0,0 @@ -<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='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i686</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='qcow2' cache='none' error_policy='stop'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <disk type='block' device='cdrom'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest2'/> - <target dev='hdc' bus='ide'/> - <readonly/> - <address type='drive' controller='0' bus='1' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'/> - <controller type='ide' index='0'/> - <controller type='pci' index='0' model='pci-root'/> - <input type='mouse' bus='ps2'/> - <input type='keyboard' bus='ps2'/> - <memballoon model='none'/> - </devices> -</domain> diff --git a/tests/qemuxml2argvdata/disk-drive-error-policy-wreport-rignore.args b/tests/qemuxml2argvdata/disk-drive-error-policy.args similarity index 73% rename from tests/qemuxml2argvdata/disk-drive-error-policy-wreport-rignore.args rename to tests/qemuxml2argvdata/disk-drive-error-policy.args index b570de2ed6..9d510015f6 100644 --- a/tests/qemuxml2argvdata/disk-drive-error-policy-wreport-rignore.args +++ b/tests/qemuxml2argvdata/disk-drive-error-policy.args @@ -23,8 +23,11 @@ server,nowait \ -boot c \ -usb \ -drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-ide0-0-0,\ -werror=report,rerror=ignore,cache=none \ +werror=stop,rerror=stop,cache=none \ -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 \ --drive file=/dev/HostVG/QEMUGuest2,format=raw,if=none,id=drive-ide0-1-0,\ -media=cdrom,readonly=on \ +-drive file=/dev/HostVG/QEMUGuest2,format=qcow2,if=none,id=drive-ide0-0-1,\ +werror=enospc,cache=none \ +-device ide-drive,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1 \ +-drive file=/dev/HostVG/QEMUGuest3,format=qcow2,if=none,id=drive-ide0-1-0,\ +werror=report,rerror=ignore,cache=none \ -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 diff --git a/tests/qemuxml2argvdata/disk-drive-error-policy-wreport-rignore.xml b/tests/qemuxml2argvdata/disk-drive-error-policy.xml similarity index 75% rename from tests/qemuxml2argvdata/disk-drive-error-policy-wreport-rignore.xml rename to tests/qemuxml2argvdata/disk-drive-error-policy.xml index 98d2be9f2e..708c13fc0e 100644 --- a/tests/qemuxml2argvdata/disk-drive-error-policy-wreport-rignore.xml +++ b/tests/qemuxml2argvdata/disk-drive-error-policy.xml @@ -15,16 +15,21 @@ <devices> <emulator>/usr/bin/qemu-system-i686</emulator> <disk type='block' device='disk'> - <driver name='qemu' type='qcow2' cache='none' error_policy='report' rerror_policy='ignore'/> + <driver name='qemu' type='qcow2' cache='none' error_policy='stop'/> <source dev='/dev/HostVG/QEMUGuest1'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> - <disk type='block' device='cdrom'> - <driver name='qemu' type='raw'/> + <disk type='block' device='disk'> + <driver name='qemu' type='qcow2' cache='none' error_policy='enospace'/> <source dev='/dev/HostVG/QEMUGuest2'/> + <target dev='hdb' bus='ide'/> + <address type='drive' controller='0' bus='0' target='0' unit='1'/> + </disk> + <disk type='block' device='disk'> + <driver name='qemu' type='qcow2' cache='none' error_policy='report' rerror_policy='ignore'/> + <source dev='/dev/HostVG/QEMUGuest3'/> <target dev='hdc' bus='ide'/> - <readonly/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <controller type='usb' index='0'/> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 3be5af03aa..65b034a75c 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1035,9 +1035,7 @@ mymain(void) DO_TEST_PARSE_ERROR("disk-drive-shared-qcow", NONE); DO_TEST("disk-drive-shared-locking", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DISK_SHARE_RW); - DO_TEST("disk-drive-error-policy-stop", NONE); - DO_TEST("disk-drive-error-policy-enospace", NONE); - DO_TEST("disk-drive-error-policy-wreport-rignore", NONE); + DO_TEST("disk-drive-error-policy", NONE); DO_TEST("disk-drive-cache-v2-wt", NONE); DO_TEST("disk-drive-cache-v2-wb", NONE); DO_TEST("disk-drive-cache-v2-none", NONE); diff --git a/tests/qemuxml2xmloutdata/disk-drive-error-policy-enospace.xml b/tests/qemuxml2xmloutdata/disk-drive-error-policy-enospace.xml deleted file mode 100644 index 6ec367c76e..0000000000 --- a/tests/qemuxml2xmloutdata/disk-drive-error-policy-enospace.xml +++ /dev/null @@ -1,41 +0,0 @@ -<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='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i686</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='qcow2' cache='none' error_policy='enospace'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <disk type='block' device='cdrom'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest2'/> - <target dev='hdc' bus='ide'/> - <readonly/> - <address type='drive' controller='0' bus='1' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> - </controller> - <controller type='ide' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> - </controller> - <controller type='pci' index='0' model='pci-root'/> - <input type='mouse' bus='ps2'/> - <input type='keyboard' bus='ps2'/> - <memballoon model='none'/> - </devices> -</domain> diff --git a/tests/qemuxml2xmloutdata/disk-drive-error-policy-stop.xml b/tests/qemuxml2xmloutdata/disk-drive-error-policy-stop.xml deleted file mode 100644 index 51bd87fa6c..0000000000 --- a/tests/qemuxml2xmloutdata/disk-drive-error-policy-stop.xml +++ /dev/null @@ -1,41 +0,0 @@ -<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='i686' machine='pc'>hvm</type> - <boot dev='hd'/> - </os> - <clock offset='utc'/> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <devices> - <emulator>/usr/bin/qemu-system-i686</emulator> - <disk type='block' device='disk'> - <driver name='qemu' type='qcow2' cache='none' error_policy='stop'/> - <source dev='/dev/HostVG/QEMUGuest1'/> - <target dev='hda' bus='ide'/> - <address type='drive' controller='0' bus='0' target='0' unit='0'/> - </disk> - <disk type='block' device='cdrom'> - <driver name='qemu' type='raw'/> - <source dev='/dev/HostVG/QEMUGuest2'/> - <target dev='hdc' bus='ide'/> - <readonly/> - <address type='drive' controller='0' bus='1' target='0' unit='0'/> - </disk> - <controller type='usb' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> - </controller> - <controller type='ide' index='0'> - <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> - </controller> - <controller type='pci' index='0' model='pci-root'/> - <input type='mouse' bus='ps2'/> - <input type='keyboard' bus='ps2'/> - <memballoon model='none'/> - </devices> -</domain> diff --git a/tests/qemuxml2xmloutdata/disk-drive-error-policy-wreport-rignore.xml b/tests/qemuxml2xmloutdata/disk-drive-error-policy.xml similarity index 78% rename from tests/qemuxml2xmloutdata/disk-drive-error-policy-wreport-rignore.xml rename to tests/qemuxml2xmloutdata/disk-drive-error-policy.xml index e4a21f4f11..0e534a1add 100644 --- a/tests/qemuxml2xmloutdata/disk-drive-error-policy-wreport-rignore.xml +++ b/tests/qemuxml2xmloutdata/disk-drive-error-policy.xml @@ -15,16 +15,21 @@ <devices> <emulator>/usr/bin/qemu-system-i686</emulator> <disk type='block' device='disk'> - <driver name='qemu' type='qcow2' cache='none' error_policy='report' rerror_policy='ignore'/> + <driver name='qemu' type='qcow2' cache='none' error_policy='stop'/> <source dev='/dev/HostVG/QEMUGuest1'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> - <disk type='block' device='cdrom'> - <driver name='qemu' type='raw'/> + <disk type='block' device='disk'> + <driver name='qemu' type='qcow2' cache='none' error_policy='enospace'/> <source dev='/dev/HostVG/QEMUGuest2'/> + <target dev='hdb' bus='ide'/> + <address type='drive' controller='0' bus='0' target='0' unit='1'/> + </disk> + <disk type='block' device='disk'> + <driver name='qemu' type='qcow2' cache='none' error_policy='report' rerror_policy='ignore'/> + <source dev='/dev/HostVG/QEMUGuest3'/> <target dev='hdc' bus='ide'/> - <readonly/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <controller type='usb' index='0'> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index bbb995656e..c0b228515c 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -356,9 +356,7 @@ mymain(void) DO_TEST("disk-virtio-drive-queues", QEMU_CAPS_VIRTIO_BLK_NUM_QUEUES); DO_TEST("disk-drive-boot-disk", NONE); DO_TEST("disk-drive-boot-cdrom", NONE); - DO_TEST("disk-drive-error-policy-stop", NONE); - DO_TEST("disk-drive-error-policy-enospace", NONE); - DO_TEST("disk-drive-error-policy-wreport-rignore", NONE); + DO_TEST("disk-drive-error-policy", NONE); DO_TEST("disk-drive-fmt-qcow", NONE); DO_TEST("disk-drive-copy-on-read", NONE); DO_TEST("disk-drive-cache-v2-wt", NONE); -- 2.16.2

Add output arguments generated with the latest qemu capabilities. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- .../disk-drive-error-policy.x86_64-latest.args | 41 ++++++++++++++++++++++ tests/qemuxml2argvtest.c | 1 + 2 files changed, 42 insertions(+) create mode 100644 tests/qemuxml2argvdata/disk-drive-error-policy.x86_64-latest.args diff --git a/tests/qemuxml2argvdata/disk-drive-error-policy.x86_64-latest.args b/tests/qemuxml2argvdata/disk-drive-error-policy.x86_64-latest.args new file mode 100644 index 0000000000..388f78df0f --- /dev/null +++ b/tests/qemuxml2argvdata/disk-drive-error-policy.x86_64-latest.args @@ -0,0 +1,41 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-i686 \ +-name guest=QEMUGuest1,debug-threads=on \ +-S \ +-object secret,id=masterKey0,format=raw,\ +file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ +-machine pc,accel=tcg,usb=off,dump-guest-core=off \ +-m 214 \ +-realtime mlock=off \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=charmonitor,fd=1729,server,nowait \ +-mon chardev=charmonitor,id=monitor,mode=control \ +-rtc base=utc \ +-no-shutdown \ +-no-acpi \ +-boot strict=on \ +-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ +-drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-ide0-0-0,\ +werror=stop,rerror=stop,cache=none \ +-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1,\ +write-cache=on \ +-drive file=/dev/HostVG/QEMUGuest2,format=qcow2,if=none,id=drive-ide0-0-1,\ +werror=enospc,cache=none \ +-device ide-hd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1,\ +write-cache=on \ +-drive file=/dev/HostVG/QEMUGuest3,format=qcow2,if=none,id=drive-ide0-1-0,\ +werror=report,rerror=ignore,cache=none \ +-device ide-hd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,\ +write-cache=on \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\ +resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 65b034a75c..a929e4314e 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1036,6 +1036,7 @@ mymain(void) DO_TEST("disk-drive-shared-locking", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DISK_SHARE_RW); DO_TEST("disk-drive-error-policy", NONE); + DO_TEST_CAPS_LATEST("disk-drive-error-policy"); DO_TEST("disk-drive-cache-v2-wt", NONE); DO_TEST("disk-drive-cache-v2-wb", NONE); DO_TEST("disk-drive-cache-v2-none", NONE); -- 2.16.2

Support for specifying it with the -device frontend was added recently. Add a capability for it. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml | 1 + 3 files changed, 4 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c7da916f9a..23b483349f 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -502,6 +502,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "sev-guest", "machine.pseries.cap-hpt-max-page-size", "machine.pseries.cap-htm", + "usb-storage.werror", ); @@ -1240,6 +1241,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsUSBStorage[] = { { "removable", QEMU_CAPS_USB_STORAGE_REMOVABLE }, { "share-rw", QEMU_CAPS_DISK_SHARE_RW }, { "write-cache", QEMU_CAPS_DISK_WRITE_CACHE }, + { "werror", QEMU_CAPS_USB_STORAGE_WERROR }, }; static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsKVMPit[] = { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index a048a1cf02..1fa0ebfea3 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -486,6 +486,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_SEV_GUEST, /* -object sev-guest,... */ QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE, /* -machine pseries.cap-hpt-max-page-size */ QEMU_CAPS_MACHINE_PSERIES_CAP_HTM, /* -machine pseries.cap-htm */ + QEMU_CAPS_USB_STORAGE_WERROR, /* -device usb-storage,werror=..,rerror=.. */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml index 07e3de8677..d7c25c65dd 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml @@ -209,6 +209,7 @@ <flag name='mch'/> <flag name='mch.extended-tseg-mbytes'/> <flag name='sev-guest'/> + <flag name='usb-storage.werror'/> <version>2012050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>437827</microcodeVersion> -- 2.16.2

Use the new proper location for the read/write error policy selection. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 6 +++++- .../disk-drive-error-policy.x86_64-latest.args | 12 ++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3c1e87fad4..7fd2c8b372 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1664,7 +1664,8 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk, /* werror/rerror are really frontend attributes, but older * qemu requires them on -drive instead of -device */ - qemuBuildDiskFrontendAttributeErrorPolicy(disk, &opt); + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_USB_STORAGE_WERROR)) + qemuBuildDiskFrontendAttributeErrorPolicy(disk, &opt); /* While this is a frontend attribute, it only makes sense to be used when @@ -2126,6 +2127,9 @@ qemuBuildDriveDevStr(const virDomainDef *def, qemuBuildDiskFrontendAttributes(disk, &opt); + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_USB_STORAGE_WERROR)) + qemuBuildDiskFrontendAttributeErrorPolicy(disk, &opt); + if (virBufferCheckError(&opt) < 0) goto error; diff --git a/tests/qemuxml2argvdata/disk-drive-error-policy.x86_64-latest.args b/tests/qemuxml2argvdata/disk-drive-error-policy.x86_64-latest.args index 388f78df0f..e8fa9e2452 100644 --- a/tests/qemuxml2argvdata/disk-drive-error-policy.x86_64-latest.args +++ b/tests/qemuxml2argvdata/disk-drive-error-policy.x86_64-latest.args @@ -25,17 +25,17 @@ file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -boot strict=on \ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ -drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-ide0-0-0,\ -werror=stop,rerror=stop,cache=none \ +cache=none \ -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1,\ -write-cache=on \ +write-cache=on,werror=stop,rerror=stop \ -drive file=/dev/HostVG/QEMUGuest2,format=qcow2,if=none,id=drive-ide0-0-1,\ -werror=enospc,cache=none \ +cache=none \ -device ide-hd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1,\ -write-cache=on \ +write-cache=on,werror=enospc \ -drive file=/dev/HostVG/QEMUGuest3,format=qcow2,if=none,id=drive-ide0-1-0,\ -werror=report,rerror=ignore,cache=none \ +cache=none \ -device ide-hd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,\ -write-cache=on \ +write-cache=on,werror=report,rerror=ignore \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\ resourcecontrol=deny \ -msg timestamp=on -- 2.16.2

On Mon, Jul 09, 2018 at 17:56:20 +0200, Peter Krempa wrote:
This series requires the qemu 3.0.0 capabilities that I've sent with
https://www.redhat.com/archives/libvir-list/2018-July/msg00454.html
As the capability patch did not make it through the moderation queue you can fetch this series along with all necessary patches at: git fetch git://pipo.sk/pipo/libvirt.git usb-werror

On Mon, Jul 09, 2018 at 05:56:20PM +0200, Peter Krempa wrote:
This series requires the qemu 3.0.0 capabilities that I've sent with
https://www.redhat.com/archives/libvir-list/2018-July/msg00454.html
Peter Krempa (4): tests: qemuxml2argv: Unify all tests for disk error policy tests: qemuxml2argv: Add CAPS_LATEST version for the disk error policy test qemu: capabilities: Add capability for werror/rerror for 'usb-device' frontend qemu: command: Format rerror/werror with -device instead of -drive
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano
participants (2)
-
Ján Tomko
-
Peter Krempa