]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: add QEMU_CAPS_STORAGE_WERROR
authorJán Tomko <jtomko@redhat.com>
Wed, 1 Apr 2020 08:22:30 +0000 (10:22 +0200)
committerJán Tomko <jtomko@redhat.com>
Wed, 1 Apr 2020 13:45:48 +0000 (15:45 +0200)
Detect the werror property on SCSI and virtio disks.
But clear it if the QEMU supports usb-storage device without it
also supporting this option for usb-storage.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
28 files changed:
src/qemu/qemu_capabilities.c
src/qemu/qemu_capabilities.h
tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml
tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml
tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml
tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml
tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml
tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml
tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml
tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml
tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml
tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml
tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml
tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml
tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml
tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml
tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml
tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml
tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml
tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml
tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml
tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml
tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml
tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml
tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml
tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml
tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml
tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml

index 3afe8a7b2c3bd97ad4e67a4e701d9284c4d37738..73a8856f343d4f21b2474978c42a457ed4f2e7b8 100644 (file)
@@ -567,6 +567,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
               "query-named-block-nodes.flat",
               "blockdev-snapshot.allow-write-only-overlay",
               "blockdev-reopen",
+              "storage.werror",
     );
 
 
@@ -1304,6 +1305,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioBlk[] = {
     { "iommu_platform", QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM },
     { "ats", QEMU_CAPS_VIRTIO_PCI_ATS },
     { "write-cache", QEMU_CAPS_DISK_WRITE_CACHE },
+    { "werror", QEMU_CAPS_STORAGE_WERROR },
 };
 
 static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioNet[] = {
@@ -1339,6 +1341,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsSCSIDisk[] = {
     { "share-rw", QEMU_CAPS_DISK_SHARE_RW },
     { "write-cache", QEMU_CAPS_DISK_WRITE_CACHE },
     { "device_id", QEMU_CAPS_SCSI_DISK_DEVICE_ID },
+    { "werror", QEMU_CAPS_STORAGE_WERROR },
 };
 
 static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsIDEDrive[] = {
@@ -4853,6 +4856,11 @@ virQEMUCapsInitProcessCapsInterlock(virQEMUCapsPtr qemuCaps)
 {
     if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV))
         virQEMUCapsClear(qemuCaps, QEMU_CAPS_INCREMENTAL_BACKUP);
+
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_USB_STORAGE) &&
+        !virQEMUCapsGet(qemuCaps, QEMU_CAPS_USB_STORAGE_WERROR)) {
+        virQEMUCapsClear(qemuCaps, QEMU_CAPS_STORAGE_WERROR);
+    }
 }
 
 
index f0961e273ceb22ad855a8bbda4498bf9abce7193..51ec1a516541a01005ff76a2faa5f5e06b70c6ba 100644 (file)
@@ -548,6 +548,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
     QEMU_CAPS_QMP_QUERY_NAMED_BLOCK_NODES_FLAT, /* query-named-block-nodes supports the 'flat' option */
     QEMU_CAPS_BLOCKDEV_SNAPSHOT_ALLOW_WRITE_ONLY, /* blockdev-snapshot has the 'allow-write-only-overlay' feature */
     QEMU_CAPS_BLOCKDEV_REOPEN, /* 'blockdev-reopen' qmp command is supported */
+    QEMU_CAPS_STORAGE_WERROR, /* virtio-blk,scsi-hd.werror */
 
     QEMU_CAPS_LAST /* this must always be the last item */
 } virQEMUCapsFlags;
index aa9027d514f0e503131d9ff303174fac5a82cc89..04ac8729851aeade7d73ef80710a504393591ea2 100644 (file)
   <flag name='iothread.poll-max-ns'/>
   <flag name='query-cpu-model-baseline'/>
   <flag name='query-cpu-model-comparison'/>
+  <flag name='storage.werror'/>
   <version>2010000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100287</microcodeVersion>
index db51d461a8d37ecd1103327210039f4cce0d1e4f..6d36a6e4840d59ac0c38d12ccf05c463b28790c1 100644 (file)
   <flag name='iothread.poll-max-ns'/>
   <flag name='query-cpu-model-baseline'/>
   <flag name='query-cpu-model-comparison'/>
+  <flag name='storage.werror'/>
   <version>2011000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100288</microcodeVersion>
index cbbe24823a5d7128830df2004f562f3c10b9bc10..21a168dd3b6565221431b9bea628194c6355367f 100644 (file)
   <flag name='query-cpu-model-baseline'/>
   <flag name='query-cpu-model-comparison'/>
   <flag name='drive-nvme'/>
+  <flag name='storage.werror'/>
   <version>2012000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100289</microcodeVersion>
index 762ce4946e3ac1744cdcfb0156214c5bb604f6fa..17351ca6bfebff588a97ace75ca108c5b8379d2e 100644 (file)
@@ -90,6 +90,7 @@
   <flag name='virtual-css-bridge'/>
   <flag name='sdl-gl'/>
   <flag name='zpci'/>
+  <flag name='storage.werror'/>
   <version>2007000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100245</microcodeVersion>
index 6000bed68270ec00c2e08ea367d323910504a73f..d204b82030c9079d73fbe88dd45a780aeb3a0818 100644 (file)
@@ -95,6 +95,7 @@
   <flag name='zpci'/>
   <flag name='query-cpu-model-baseline'/>
   <flag name='query-cpu-model-comparison'/>
+  <flag name='storage.werror'/>
   <version>2007093</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100246</microcodeVersion>
index 95251de02248ae2e080e4a363ce9d8e91c7f0f59..9a6d94d37b01ed16441d88c1a1587a387fbc13bf 100644 (file)
   <flag name='iothread.poll-max-ns'/>
   <flag name='query-cpu-model-baseline'/>
   <flag name='query-cpu-model-comparison'/>
+  <flag name='storage.werror'/>
   <version>2009000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100247</microcodeVersion>
index 0b507ec80ec54360c84543618f84ba50e841fcc1..6814a2f9c6b9d7bc87f0317be08a41806448d630 100644 (file)
@@ -95,6 +95,7 @@
   <flag name='memory-backend-file.align'/>
   <flag name='ramfb'/>
   <flag name='drive-nvme'/>
+  <flag name='storage.werror'/>
   <version>3000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>0</microcodeVersion>
index 0d7c589f71dc4ae380c15a9202b49723c5b6e293..b81f5825ccc2e7e0fcf5cbecfee41e4f765ced1c 100644 (file)
@@ -95,6 +95,7 @@
   <flag name='memory-backend-file.align'/>
   <flag name='ramfb'/>
   <flag name='drive-nvme'/>
+  <flag name='storage.werror'/>
   <version>3000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>0</microcodeVersion>
index da57f8738bca9c6af1d474276a3f3e5f7c8a6fc3..85cda12076c7dfa0db2aad1a014c75996a72906c 100644 (file)
   <flag name='query-cpu-model-comparison'/>
   <flag name='ramfb'/>
   <flag name='drive-nvme'/>
+  <flag name='storage.werror'/>
   <version>3000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100239</microcodeVersion>
index 9d122156004aca845b74d0da2d9700ee8944fe00..517e27d815e4c638e6be9a02a44a3021e158dad4 100644 (file)
   <flag name='ramfb'/>
   <flag name='drive-nvme'/>
   <flag name='i8042'/>
+  <flag name='storage.werror'/>
   <version>3000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100239</microcodeVersion>
index 2cf2e4f655c791bd128e43d09e687ce8e170b386..680102320835742b1e9dde638f324279e55a926b 100644 (file)
   <flag name='bochs-display'/>
   <flag name='drive-nvme'/>
   <flag name='i8042'/>
+  <flag name='storage.werror'/>
   <version>3000091</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>42900240</microcodeVersion>
index 5df9b5ef1b3d02a1f9e6455e4d84170d8b21d2bc..d901715ffcbd625705b81ab2fc8cdec15a15e9e9 100644 (file)
   <flag name='ramfb'/>
   <flag name='drive-nvme'/>
   <flag name='i8042'/>
+  <flag name='storage.werror'/>
   <version>3000092</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100240</microcodeVersion>
index 757bf193fc4ccc59d67381cad5d83fd86015c911..6fd1880ae287edac3f6d0bc05275e22b5f9ac0da 100644 (file)
   <flag name='ramfb'/>
   <flag name='arm-max-cpu'/>
   <flag name='drive-nvme'/>
+  <flag name='storage.werror'/>
   <version>4000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>61700240</microcodeVersion>
index 964f02b062e1f52af9221adfd891383c70dff36d..f7e69fcc972002e94a6d9214a69fdf670c43135c 100644 (file)
   <flag name='machine.pseries.cap-ccf-assist'/>
   <flag name='drive-nvme'/>
   <flag name='i8042'/>
+  <flag name='storage.werror'/>
   <version>4000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>42900240</microcodeVersion>
index 7d3a1bec6fae6b433df28b551bb64cfe594f06ad..6a567239b9dedeb63394c08d9434c2a7ca05d2eb 100644 (file)
   <flag name='bochs-display'/>
   <flag name='migration-file-drop-cache'/>
   <flag name='drive-nvme'/>
+  <flag name='storage.werror'/>
   <version>4000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>0</microcodeVersion>
index 1732139db8987f0edc7811bae7730aabedb098c0..d6686b7c68511af62254cd0794cbb9d14c7f152e 100644 (file)
   <flag name='bochs-display'/>
   <flag name='migration-file-drop-cache'/>
   <flag name='drive-nvme'/>
+  <flag name='storage.werror'/>
   <version>4000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>0</microcodeVersion>
index fd124ce0c5ad1167b93e3b9be95a36dd004899ae..9dc29832f91123fabe05c88aa674f352df333d38 100644 (file)
   <flag name='query-cpu-model-baseline'/>
   <flag name='query-cpu-model-comparison'/>
   <flag name='drive-nvme'/>
+  <flag name='storage.werror'/>
   <version>4000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100240</microcodeVersion>
index d545c3d9e8074a67ef7d5466a364f112fcd9ff5a..ae4004ad3cafb50139aaec0862f579c6c2ae6f76 100644 (file)
   <flag name='ramfb'/>
   <flag name='drive-nvme'/>
   <flag name='i8042'/>
+  <flag name='storage.werror'/>
   <version>4000000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100240</microcodeVersion>
index 6e6deca477b512c00d77a3ac2c4fb065eba8e4c9..d9bdeb251636f57a83d6a2f97b549cc749904775 100644 (file)
   <flag name='drive-nvme'/>
   <flag name='smp-dies'/>
   <flag name='i8042'/>
+  <flag name='storage.werror'/>
   <version>4001000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100241</microcodeVersion>
index 640ce29c8c3d103154645082c4dd6907ed3d1149..de16451b8b26b46117fa1f92c3b119e345343b86 100644 (file)
   <flag name='rng-builtin'/>
   <flag name='virtio-net.failover'/>
   <flag name='vhost-user-fs'/>
+  <flag name='storage.werror'/>
   <version>4001050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>61700242</microcodeVersion>
index 0da578572be4e0484ce9fa15189bd7285b94afea..99ec98e8cd0dda27d6700334bf2c35dc35c7af28 100644 (file)
   <flag name='smp-dies'/>
   <flag name='i8042'/>
   <flag name='rng-builtin'/>
+  <flag name='storage.werror'/>
   <version>4001050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>42900242</microcodeVersion>
index 37776e1bbedd354c25ea4f79119b4d23b2c0e21f..fa3c2ef3e49f24152fc7f7ac7cd7735494ea3881 100644 (file)
   <flag name='smp-dies'/>
   <flag name='rng-builtin'/>
   <flag name='vhost-user-fs'/>
+  <flag name='storage.werror'/>
   <version>4001050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>39100242</microcodeVersion>
index 83e804ea36c9668e86d5927c4960e3320e5e15d3..c1b73f4ad5ef348a4555d51dc71ede0c6ab92d3a 100644 (file)
   <flag name='rng-builtin'/>
   <flag name='virtio-net.failover'/>
   <flag name='vhost-user-fs'/>
+  <flag name='storage.werror'/>
   <version>4002000</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100242</microcodeVersion>
index e52c60607d634a2e812f9daf62ebd7708011d6f8..53fcd750d986a0b949690f675ca67eca050fb61c 100644 (file)
   <flag name='virtio-net.failover'/>
   <flag name='cpu.kvm-no-adjvtime'/>
   <flag name='vhost-user-fs'/>
+  <flag name='storage.werror'/>
   <version>4002050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>61700241</microcodeVersion>
index 85fdb21c56b05a8986e71be9e4e6e1f737a598fc..2fb5bb49a922cd83d61765cd4e2fb88eec0dc869 100644 (file)
   <flag name='vhost-user-fs'/>
   <flag name='query-named-block-nodes.flat'/>
   <flag name='blockdev-snapshot.allow-write-only-overlay'/>
+  <flag name='storage.werror'/>
   <version>4002050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>42900241</microcodeVersion>
index d773f7e356ff7a0d486455cb2996361727bc9975..f43090c9e74c8f27c5a6572b8a8d52c2fa439434 100644 (file)
   <flag name='vhost-user-fs'/>
   <flag name='query-named-block-nodes.flat'/>
   <flag name='blockdev-snapshot.allow-write-only-overlay'/>
+  <flag name='storage.werror'/>
   <version>4002050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100241</microcodeVersion>