From 30b580dcad8052d8e101c8622583ebb2dd9202ea Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 3 Nov 2020 07:01:38 -0500 Subject: [PATCH] import libvirt-6.0.0-28.module+el8.3.0+7827+5e65edd7 --- .gitignore | 2 +- .libvirt.metadata | 2 +- ...pying-bitmaps-to-larger-data-buffers.patch | 56 - ...IA-V100-GPU-with-NVLink2-passthrough.patch | 183 - ...e-types-to-qemuDomainMachineNeedsFDC.patch | 31 +- ...HEL-Fix-virConnectGetMaxVcpus-output.patch | 10 +- ...round-changed-Broadwell-Haswell-CPUs.patch | 129 +- ...y-after-firewalld-switch-to-nftables.patch | 146 - ...ility-to-set-sgio-values-for-hostdev.patch | 36 +- ...iv-sgio-for-SCSI-generic-host-device.patch | 35 +- ...tUnprivSGIO-hostdev-shareable-logic.patch} | 16 +- ...lter-val-usage-in-qemuSetUnprivSGIO.patch} | 22 +- ...ix-crash-trying-to-use-iSCSI-hostdev.patch | 12 +- ...ix-logic-error-in-qemuSetUnprivSGIO.patch} | 14 +- ...IO-use-sysfs_path-to-get-unpriv_sgio.patch | 20 +- ...ulated-sysfs_path-to-set-unpriv_sgio.patch | 52 +- ...pe-before-getting-it-s-dev-node-name.patch | 50 +- ...-virSCSIDeviceGetUnprivSGIOSysfsPath.patch | 61 +- ...ort-TAPEs-in-virSCSIDeviceGetDevName.patch | 73 +- ...-non-block-devices-in-virGetDeviceID.patch | 14 +- ...ecking-of-return-value-of-virHashNew.patch | 62 + ...bvirt-Remove-qemuDomainSecretInfoNew.patch | 109 + ...y-after-firewalld-switch-to-nftables.patch | 84 - ...-StateAutoStart-from-StateInitialize.patch | 93 - ..._ACCESS_DENIED-to-include-driverName.patch | 163 - ...up-into-virCgroupDetectControllersCB.patch | 108 - ...r-Separate-AutoStart-from-Initialize.patch | 295 - ...lers-not-managed-by-systemd-on-error.patch | 83 - ...nding-ACL-access-API-name-generation.patch | 60 - ..._ACCESS_DENIED-to-include-driverName.patch | 173 - ...CCESS_DENIED-to-include-driverName_1.patch | 159 - ...ss-their-UID-matches-the-current-UID.patch | 61 - ...pervisorCPU-on-read-only-connections.patch | 46 - ...apabilities-on-read-only-connections.patch | 38 - ...onseTimeout-on-read-only-connections.patch | 45 + ...veDefineXML-on-read-only-connections.patch | 40 - ...eGetXMLDesc-on-read-only-connections.patch | 98 - ...of-domains-into-bhyveStateInitialize.patch | 65 - ...r-uid-and-fid-PCI-address-attributes.patch | 67 - ...ort-for-cookies-for-HTTP-based-disks.patch | 449 + ...Add-support-for-http-s-query-strings.patch | 160 + ...-ssl-validation-for-https-ftps-disks.patch | 242 + ...and-readahead-size-for-network-disks.patch | 205 + ...conf-Add-validation-of-input-devices.patch | 76 - ...e-release-uid-and-fid-in-PCI-address.patch | 527 - ...VIR_DOMAIN_DEF_FORMAT_SECURE-is-used.patch | 58 + ...-t-generate-machine-names-with-a-dot.patch | 97 + ...pose-virDomainSCSIDriveAddressIsUsed.patch | 69 - ...sg-typo-in-virDomainVideoDefValidate.patch | 35 - ...nf-Fix-check-for-chardev-source-path.patch | 113 - ...nt-support-for-slices-of-disk-source.patch | 143 + ...duce-VIR_DOMAIN_TIMER_NAME_ARMVTIMER.patch | 129 + ...e-address-caching-for-PCI-extensions.patch | 241 - ...flag-and-zPCI-member-for-PCI-address.patch | 283 - ...roduce-new-hostdev-attribute-display.patch | 416 - ...t-conf-Introduce-new-video-type-none.patch | 504 - ...uce-parser-formatter-for-uid-and-fid.patch | 574 - ...onf-Introduce-virCPUDefCheckFeatures.patch | 103 - ...troduce-virDomainDefPostParseMemtune.patch | 210 - ...ce-virDomainDefPostParseVideo-helper.patch | 89 - ...virDomainGraphicsDefHasOpenGL-helper.patch | 105 - ...roduce-virDomainVideoDefClear-helper.patch | 84 - ...m-post-parse-to-QEMU-validation-code.patch | 122 - ...validation-check-out-of-qemu_command.patch | 247 - ...gepages-validation-out-of-XML-parser.patch | 126 - ...f-Parse-and-format-nested-hv-feature.patch | 152 - ...e-and-format-the-HTM-pSeries-feature.patch | 194 - ...e-guestfwd-channel-device-info-again.patch | 48 - ...in-virDomainHostdevDefParseXMLSubsys.patch | 175 - ...-add-new-PCI_CONNECT-flag-AUTOASSIGN.patch | 87 + ...rt-for-specifying-CPU-dies-parameter.patch | 1510 + ...iofs-related-elements-and-attributes.patch | 395 + ...figuration-of-names-exported-via-NBD.patch | 146 + ...ntal-backup-checkpoint-name-per-disk.patch | 67 + ...t-flag-when-validating-a-PCI-address.patch | 51 + ...boot-order-error-during-domain-parse.patch | 214 - ...ate-machine-names-ending-with-a-dash.patch | 70 + ...of-return-value-of-virHashCreateFull.patch | 73 + ...-that-the-controller-support-hotplug.patch | 47 + ...ttribute-hotplug-for-pci-controllers.patch | 290 + ...rmat-teaming-subelement-of-interface.patch | 468 + ...add-support-for-Hyper-V-PV-TLB-flush.patch | 262 - ...d-support-for-Hyper-V-frequency-MSRs.patch | 262 - ...yper-V-reenlightenment-notifications.patch | 264 - ...conf-qemu-add-virtiofs-fsdriver-type.patch | 327 + ...UGGABLE-VIR_PCI_CONNECT_AUTOASSIGN-g.patch | 161 + ...sed-virCapabilitiesSetHostCPU-method.patch | 88 + ...y-of-struct-_virStorageSourceNVMeDef.patch | 144 + ...hecking-for-AUTOASSIGN-PCI-addresses.patch | 83 + ...Element-in-virDomainDeviceInfoFormat.patch | 154 - ...ormatElement-in-virDomainFSDefFormat.patch | 70 + ...nge-HAVE_FIREWALLD-to-WITH_FIREWALLD.patch | 110 - ...ely-install-a-firewalld-libvirt-zone.patch | 280 - ...Add-support-for-stibp-x86_64-feature.patch | 202 - ...nge-control-flow-in-virCPUUpdateLive.patch | 53 + ...invalid-memory-in-virCPUx86Translate.patch | 59 - ...op-CPUID-definition-for-hv-spinlocks.patch | 82 - ...Drop-KVM_-from-hyperv-feature-macros.patch | 156 - ...libvirt-cpu-Drop-unused-KVM-features.patch | 102 - ...check-full-for-host-passthrough-CPUs.patch | 100 + ...t-cpu-Introduce-virCPUDataAddFeature.patch | 176 - ...low-include-files-for-CPU-definition.patch | 159 - ...cleanup-when-signature-parsing-fails.patch | 51 - ...-more-parsing-logic-into-common-code.patch | 782 - ...t-cpu-simplify-failure-cleanup-paths.patch | 397 - ...or-virCapabilitiesGetNodeInfo-retval.patch | 41 + ...Format-vendor_id-for-host-model-CPUs.patch | 80 + ...nf-Introduce-virCPUDefFilterFeatures.patch | 91 - ...y-to-CPU-feature-filtering-callbacks.patch | 165 - ...map-Add-Cascadelake-Server-CPU-model.patch | 211 - ...cpu_map-Add-Cooperlake-x86-CPU-model.patch | 289 + ...bvirt-cpu_map-Add-Icelake-CPU-models.patch | 219 - ...O-bit-for-IA32_ARCH_CAPABILITIES-MSR.patch | 47 - ...L-bit-for-IA32_ARCH_CAPABILITIES-MSR.patch | 46 - ...element-to-x86-CPU-model-definitions.patch | 749 + ...pu_map-Add-features-for-Icelake-CPUs.patch | 379 - ...Add-hex-representation-of-signatures.patch | 318 - ...pu_map-Add-more-noTSX-x86-CPU-models.patch | 831 + ...-signatures-for-Broadwell-CPU-models.patch | 254 - ...more-signatures-for-Conroe-CPU-model.patch | 41 - ...re-signatures-for-Haswell-CPU-models.patch | 76 - ...-signatures-for-IvyBridge-CPU-models.patch | 50 - ...re-signatures-for-Nehalem-CPU-models.patch | 54 - ...more-signatures-for-Penryn-CPU-model.patch | 41 - ...ignatures-for-SandyBridge-CPU-models.patch | 50 - ...atures-for-Skylake-Client-CPU-models.patch | 58 - ...re-signatures-for-Westmere-CPU-model.patch | 184 - ...no-bit-in-IA32_ARCH_CAPABILITIES-MSR.patch | 212 + ...upport-for-arch-capabilities-feature.patch | 110 - ...Add-support-for-cldemote-CPU-feature.patch | 46 - ...rt-cpu_map-Define-md-clear-CPUID-bit.patch | 102 - ...scadelake-Server-from-Skylake-Server.patch | 154 + ...pu_map-Distribute-x86_Cooperlake.xml.patch | 37 + ...new-noTSX-models-for-host-model-CPUs.patch | 137 + ...config-from-Icelake-Server-CPU-model.patch | 190 - ...-IA32_ARCH_CAPABILITIES-MSR-features.patch | 155 - ...6-Add-support-for-BFLOAT16-data-type.patch | 46 - ...t-for-stepping-part-of-CPU-signature.patch | 183 + ...-for-storing-MSR-features-in-CPU-map.patch | 328 - ...-virCPUx86DataGetSignature-for-tests.patch | 81 - ...86-Add-x86ModelCopySignatures-helper.patch | 77 - ...-multiple-signatures-for-a-CPU-model.patch | 114 - ...u_x86-Do-not-cache-microcode-version.patch | 60 - ...t-check-return-value-of-x86ModelCopy.patch | 74 + ...rop-noTSX-hint-for-incompatible-CPUs.patch | 102 + ...x86-Fix-memory-leak-virCPUx86GetHost.patch | 43 - ...-placement-of-CheckFeature-functions.patch | 119 - ..._x86-Honor-CPU-models-decode-element.patch | 67 + ...t-cpu_x86-Introduce-virCPUx86DataCmp.patch | 60 - ...e-virCPUx86DataItem-container-struct.patch | 850 - ...Introduce-virCPUx86FeatureFilter-MSR.patch | 133 - ...ntroduce-virCPUx86SignatureFromCPUID.patch | 71 + ...86-Introduce-virCPUx86SignaturesFree.patch | 64 + ...Log-decoded-CPU-model-and-signatures.patch | 79 - ...PU-model-names-are-unique-in-cpu_map.patch | 49 - ...86-Make-x86cpuidAndBits-more-general.patch | 64 - ...-Make-x86cpuidClearBits-more-general.patch | 84 - ..._x86-Make-x86cpuidMatch-more-general.patch | 96 - ...ake-x86cpuidMatchMasked-more-general.patch | 88 - ...86-Make-x86cpuidSetBits-more-general.patch | 64 - ...-cpu_x86-Move-CheckFeature-functions.patch | 115 - ...-Move-and-rename-x86FormatSignatures.patch | 97 + ...ve-and-rename-x86ModelCopySignatures.patch | 100 + ...Move-and-rename-x86ModelHasSignature.patch | 101 + ...PUx86UpdateLive-for-easier-extension.patch | 59 + ...ures-from-IA32_ARCH_CAPABILITIES-MSR.patch | 61 - ...-cpu_x86-Rename-virCPUx86CPUIDSorter.patch | 50 - ...cpu_x86-Rename-virCPUx86DataAddCPUID.patch | 274 - ..._x86-Rename-virCPUx86DataAddCPUIDInt.patch | 107 - ...6-Rename-virCPUx86DataItem-variables.patch | 328 - ...cpu_x86-Rename-virCPUx86Vendor.cpuid.patch | 99 - ...pu_x86-Rename-virCPUx86VendorToCPUID.patch | 60 - .../libvirt-cpu_x86-Rename-x86DataCpuid.patch | 141 - ...x86-Rename-x86DataCpuidNext-function.patch | 113 - ...ures-in-virCPUx86Model-with-a-struct.patch | 325 + ...uire-cpuid-within-feature-in-CPU-map.patch | 46 - ...tor-model-parsing-from-x86ModelParse.patch | 110 - ...ture-list-parsing-from-x86ModelParse.patch | 129 - ...signature-parsing-from-x86ModelParse.patch | 103 - ...te-vendor-parsing-from-x86ModelParse.patch | 109 - .../libvirt-cpu_x86-Simplify-x86DataAdd.patch | 54 - ..._x86-Store-CPU-signature-in-an-array.patch | 161 - ...e-virCPUx86DataItem-content-in-union.patch | 487 - ...Ux86DataIteratorInit-into-a-function.patch | 147 - ..._x86-Use-g_auto-in-virCPUx86Baseline.patch | 160 + ...-Use-g_auto-in-virCPUx86CheckFeature.patch | 54 + ...u_x86-Use-g_auto-in-virCPUx86Compare.patch | 69 + ...se-g_auto-in-virCPUx86CopyMigratable.patch | 54 + ...x86-Use-g_auto-in-virCPUx86DataParse.patch | 87 + ...se-g_auto-in-virCPUx86ExpandFeatures.patch | 86 + ...u_x86-Use-g_auto-in-virCPUx86GetHost.patch | 71 + ...u_x86-Use-g_auto-in-virCPUx86LoadMap.patch | 51 + ...x86-Use-g_auto-in-virCPUx86Translate.patch | 85 + ...pu_x86-Use-g_auto-in-virCPUx86Update.patch | 73 + ...86-Use-g_auto-in-virCPUx86UpdateLive.patch | 116 + ...irt-cpu_x86-Use-g_auto-in-x86Compute.patch | 181 + ...t-cpu_x86-Use-g_auto-in-x86DataToCPU.patch | 71 + ...virt-cpu_x86-Use-g_auto-in-x86Decode.patch | 99 + ...virt-cpu_x86-Use-g_auto-in-x86Encode.patch | 141 + ...pu_x86-Use-g_auto-in-x86EncodePolicy.patch | 46 + ...pu_x86-Use-g_auto-in-x86FeatureParse.patch | 115 + ...pu_x86-Use-g_auto-in-x86ModelFromCPU.patch | 74 + ...-cpu_x86-Use-g_auto-in-x86ModelParse.patch | 80 + ...x86-Use-g_auto-in-x86UpdateHostModel.patch | 71 + ...cpu_x86-Use-g_auto-in-x86VendorParse.patch | 76 + ...-glib-allocation-for-virCPU-x86-Data.patch | 149 + ...glib-allocation-for-virCPUx86Feature.patch | 74 + ...Use-glib-allocation-for-virCPUx86Map.patch | 69 + ...e-glib-allocation-for-virCPUx86Model.patch | 103 + ...-glib-allocation-for-virCPUx86Vendor.patch | 53 + ...lib-allocation-in-virCPUx86GetModels.patch | 52 + ...-cputest-Add-data-for-Cooperlake-CPU.patch | 1869 + ...dd-data-for-Intel-R-Core-TM-i7-7600U.patch | 979 - ...l-R-Core-TM-i7-8550U-CPU-without-TSX.patch | 2028 + ...Add-data-for-Intel-R-Core-TM-i7-8700.patch | 873 - ...ta-for-Intel-R-Xeon-R-CPU-E3-1225-v5.patch | 885 - ...ta-for-Intel-R-Xeon-R-CPU-E5-2630-v4.patch | 824 - ...-data-for-Intel-R-Xeon-R-CPU-E5-2650.patch | 1144 - ...dd-data-for-Intel-R-Xeon-R-CPU-E7540.patch | 1317 - ...ta-for-Intel-R-Xeon-R-Gold-6130-CPU.patch} | 380 +- ...or-Intel-R-Xeon-R-Platinum-9242-CPU.patch} | 973 +- ...ort-for-MSR-features-to-cpu-parse.sh.patch | 41 - .../libvirt-cputest-Test-CPU-signatures.patch | 755 - ...-secret-driver-before-storage-driver.patch | 59 - ...protected-virtualization-guest-setup.patch | 245 + ...-slices-sub-element-of-disk-s-source.patch | 100 + ...-tun-from-the-list-of-shared-devices.patch | 39 - ...ion-to-describe-secondary-connection.patch | 173 - ...the-armvtimer-timer-among-all-others.patch | 42 + ...diated-devices-hostdev-section-a-bit.patch | 44 - ...Update-AMD-launch-secure-description.patch | 56 + SOURCES/libvirt-docs-add-virtiofs-kbase.patch | 198 + ...ocument-interface-subelement-teaming.patch | 180 + ...DOMAIN_UNDEFINE_CHECKPOINTS_METADATA.patch | 43 + SOURCES/libvirt-docs-fix-a-typo.patch | 38 + ...Close-source-on-one-of-disk-examples.patch | 35 + ...rmatdomain-Mention-missing-protocols.patch | 45 + ...docs-mention-hotplug-off-in-news.xml.patch | 48 + ...cessive-spacing-in-ToC-for-RST-files.patch | 39 + ...er-class-literal-with-monospace-font.patch | 41 + ...ma-Add-missing-alias-to-vsock-device.patch | 39 - ...e-the-virtio-options-from-each-other.patch | 44 - ...in-virDomainConfNWFilterTeardownImpl.patch | 46 - ...x-storage-Fix-typo-lsilogic-lsiLogic.patch | 42 - ...clean-traffic-gateway-into-nwfilters.patch | 77 - ...or-reporting-die_id-in-NUMA-topology.patch | 519 + ...introduce-a-family-of-NULLSTR-macros.patch | 55 - ...ernals-of-incremental-backup-in-qemu.patch | 267 + ...s-how-to-securely-probe-image-format.patch | 54 + ...larify-some-aspects-of-image-probing.patch | 70 + SOURCES/libvirt-lib-Drop-UDEVSETTLE.patch | 73 - ...ocking-restrict-sockets-to-mode-0600.patch | 54 - ...ogging-restrict-sockets-to-mode-0600.patch | 54 - ...bvirt-lxc-Use-virCgroupGetMemoryStat.patch | 100 - ...bvirt-m4-Drop-needless-string-checks.patch | 51 - ...4-Provide-default-value-fore-UDEVADM.patch | 100 - ...ne-for-virtual-network-bridge-device.patch | 332 - ...llow-icmp-icmpv6-in-libvirt-zonefile.patch | 61 - ...ges-to-libvirt-zone-when-appropriate.patch | 174 - ...-error-if-unable-to-read-leases-file.patch | 59 - ...-usage-vs-initial-device-enumeration.patch | 256 + ...e-SEGV-for-NWFilter-Snoop-processing.patch | 79 - ...-MAC-and-IP-values-to-filter-binding.patch | 164 - ...s-wait-longer-5-30s-on-hard-shutdown.patch | 56 - ...-longer-on-kill-per-assigned-Hostdev.patch | 138 - ...dd-APIs-for-translating-CPU-features.patch | 124 - ...pability-for-the-HTM-pSeries-feature.patch | 80 - ...qemu-Add-ccw-support-for-vhost-vsock.patch | 343 - ...k-for-whether-KVM-nesting-is-enabled.patch | 162 - ...pport-for-PCI-devices-on-S390-guests.patch | 316 - ...d-support-for-slices-of-type-storage.patch | 231 + ..._CAPS_CPU_KVM_NO_ADJVTIME-capability.patch | 82 + ...ter-to-qemuMonitorJSONParsePropsList.patch | 89 - ...mu-Add-zPCI-address-definition-check.patch | 156 - ...uests-with-graphics-and-no-USB-mouse.patch | 76 - ...o-add-pci-root-for-s390-s390x-guests.patch | 46 - ...cate-resume-events-and-state-changes.patch | 243 - ...ing-non-native-binaries-all-the-time.patch | 45 - ...-AMD-secure-guest-support-is-enabled.patch | 80 + ...s390-secure-guest-support-is-enabled.patch | 166 + .../libvirt-qemu-Clarify-QEMU_CAPS_KVM.patch | 88 - ...emu-Create-multipath-targets-for-PRs.patch | 399 + ...t-qemu-Don-t-cache-microcode-version.patch | 154 - ...emu-Don-t-check-for-dev-kvm-presence.patch | 45 - ...when-getting-targets-for-a-multipath.patch | 84 + ...PENDED_POSTCOPY-event-on-destination.patch | 53 + ...virt-qemu-Don-t-ignore-resume-events.patch | 68 - ...tore-disk-alias-in-qemuAgentDiskInfo.patch | 192 + ...-pointer-in-qemuDomainSecretInfoFree.patch | 161 + ...u-Don-t-use-full-CPU-model-expansion.patch | 2643 -- ...em-prealloc-among-with-.prealloc-yes.patch | 200 - ...atures-from-host-model-with-old-QEMU.patch | 65 - ...bvirt-qemu-Drop-QEMU_CAPS_ENABLE_KVM.patch | 108 - ...abel-from-qemuProcessInitCpuAffinity.patch | 74 - ...isabled-CPU-features-unknown-to-QEMU.patch | 99 - ...e-from-qemuDomainDefValidateFeatures.patch | 60 - ...Drop-user-prefix-for-guestfwd-netdev.patch | 65 - ...Enable-PCI-multi-bus-for-S390-guests.patch | 54 - ...ne-from-getting-a-PCI-address-on-Q35.patch | 45 - ...lidation-code-into-a-separate-helper.patch | 93 - ...-pr-helper-process-info-on-reconnect.patch | 104 - ...evs-in-qemuHostdevPrepareSCSIDevices.patch | 41 - ...UTE_NONNULL-for-qemuMonitorAddObject.patch | 41 - ...-qemu-Fix-KVM-features-with-QEMU-4.1.patch | 67 - ...access-in-qemuProcessInitCpuAffinity.patch | 47 - ...ed-by-qemuDomainDefFormatBufInternal.patch | 51 - ...mu-Fix-hyperv-features-with-QEMU-4.1.patch | 100 - ...x-leak-in-qemuProcessInitCpuAffinity.patch | 65 - ...ix-post-copy-migration-on-the-source.patch | 110 - ...-qemu-Fix-probing-of-AMD-SEV-support.patch | 143 - ...-qemu-Fix-qemuProcessInitCpuAffinity.patch | 76 - ...etting-global_period-cputune-element.patch | 40 - ...-of-device-argument-for-block-commit.patch | 43 + ...-device-argument-for-blockdev-mirror.patch | 58 + ...mu-Forbid-MSR-features-with-old-QEMU.patch | 80 - ...ested-hv-feature-on-the-command-line.patch | 68 - ...-qemu-Format-the-HTM-pSeries-feature.patch | 102 - ...-armvtimer-timer-on-the-command-line.patch | 52 + ...use-zPCI-device-in-QEMU-command-line.patch | 834 - ...-for-secret-objects-for-http-cookies.patch | 117 + ...nstantiation-issues-during-reconnect.patch | 88 - ...U_CAPS_MACHINE_PSERIES_CAP_NESTED_HV.patch | 109 - ...a-new-graphics-display-type-headless.patch | 908 - ...r-creating-alias-for-a-secret-object.patch | 70 + ...oduce-generic-qemuMonitorGetGuestCPU.patch | 323 - ...bvirt-qemu-Introduce-zPCI-capability.patch | 156 - ...onitorGetGuestCPU-usable-on-x86-only.patch | 228 - ...unning-reason-to-resume-event-detail.patch | 121 - ...nning-reason-to-RESUME-event-handler.patch | 123 - ...-ssh-block-driver-used-by-libguestfs.patch | 169 + ...mu-Prefer-dashes-for-hyperv-features.patch | 160 - ...t-qemu-Probe-for-max-x86_64-cpu-type.patch | 155 - ...or-unavailable-features-CPU-property.patch | 3972 -- ...mu-Probe-host-CPU-after-capabilities.patch | 403 - ...R_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT.patch | 42 - ...n-machines-that-do-not-have-this-bus.patch | 605 + ...emove-duplicated-qemuAgentCheckError.patch | 48 - ...ssSecurityDriver-from-qemuOpenFileAs.patch | 157 - ...ort-more-appropriate-running-reasons.patch | 61 - ...qemu-Rework-setting-process-affinity.patch | 265 - ...ite-bitmap-handling-for-block-commit.patch | 518 + ...write-bitmap-handling-for-block-copy.patch | 281 + ...dentity-for-the-reconnect-all-thread.patch | 94 - ...and-cpuset.mems-before-exec-ing-qemu.patch | 70 - ...zation-of-secrets-for-iscsi-hostdevs.patch | 80 + ...t-qemu-Stop-domain-on-failed-restore.patch | 107 + ...cdrivers-which-images-are-top-parent.patch | 312 + ...names-from-query-cpu-model-expansion.patch | 133 - ...eatures-in-virQEMUCapsGetCPUFeatures.patch | 69 - ...e-g_autoptr-for-qemuDomainSaveCookie.patch | 146 + ...statement-in-qemuBuildCpuCommandLine.patch | 74 + ...tachChrDevice-to-build-device-string.patch | 43 - ...onfiguration-for-the-armvtimer-timer.patch | 78 + ...e-up-PR_MANAGER_STATUS_CHANGED-event.patch | 275 - ...u-add-QEMU_CAPS_DEVICE_VHOST_USER_FS.patch | 122 + ...rt-qemu-add-QEMU_CAPS_STORAGE_WERROR.patch | 407 + ...pabilities-flag-for-failover-feature.patch | 123 + ...qemu-add-code-for-handling-virtiofsd.patch | 528 + ...ecifying-CPU-dies-topology-parameter.patch | 382 + .../libvirt-qemu-add-vfio-ap-capability.patch | 58 - ...emu-add-virtiofsd_debug-to-qemu.conf.patch | 99 + ...unplug-to-qemu-migration-status-enum.patch | 82 + ...e-video-devices-within-a-single-loop.patch | 52 - ...signed-PCI-hostdev-if-teaming-is-set.patch | 96 + ...non-x86-guests-with-APIC-EOI-setting.patch | 80 + ...kipped-in-an-intermediate-checkpoint.patch | 81 + ...cking-store-for-backup-target-images.patch | 125 + ...ackup-disk-bitmap-name-configuration.patch | 56 + ...ackup-disk-export-name-configuration.patch | 46 + ...-store-source-properly-and-just-once.patch | 49 + ...eckpoint-list-for-incremental-backup.patch | 213 + ...handling-to-the-new-bitmap-semantics.patch | 457 + ...-checkpoint-list-looking-for-bitmaps.patch | 165 + ...u-block-Add-support-for-HTTP-cookies.patch | 122 + ...ging-dirty-bitmaps-for-all-scenarios.patch | 238 + ...bitmap-chains-accross-backing-chains.patch | 196 + ...ip-creation-of-luks-formatted-images.patch | 59 + ...NamedNodeData-into-a-helper-function.patch | 122 + ...-Extract-formatting-of-cookie-string.patch | 108 + ...ing-with-bitmaps-during-block-commit.patch | 287 + ...d-timeout-properties-for-curl-driver.patch | 82 + ...ement-ssl-verification-configuration.patch | 65 + ...ulate-bitmap-handling-for-block-copy.patch | 189 + ...age-slice-into-backing-store-strings.patch | 138 + ...ven-if-there-are-no-bitmaps-to-merge.patch | 105 + ...T-PULL-REBASE_RELATIVE-with-blockdev.patch | 127 + ...eation-of-storage-sources-with-slice.patch | 43 + ...mplement-helpers-for-blockdev-reopen.patch | 155 + ...mages-when-mirror-job-fails-to-start.patch | 43 + ...opy-of-read-only-disks-with-blockdev.patch | 71 + ...-the-backing-chain-of-a-shallow-copy.patch | 137 + ...orary-bitmap-on-failed-active-commit.patch | 65 + ...-commit-on-QEMU_CAPS_BLOCKDEV_REOPEN.patch | 59 + ...-after-finish-of-normal-block-commit.patch | 95 + ...le-bitmaps-after-failed-block-commit.patch | 90 + ...e-field-from-commit-job-private-data.patch | 219 + ...re-flags-for-all-the-block-job-types.patch | 154 + ...b-Store-jobflags-with-block-job-data.patch | 125 + ...-of-bitmaps-disabled-prior-to-commit.patch | 117 + ...ld-vhost-user-fs-device-command-line.patch | 222 + ...lities-Add-QEMU_CAPS_BLOCKDEV_REOPEN.patch | 53 + ...error-rerror-for-usb-device-frontend.patch | 73 - ...S_BLOCKDEV_SNAPSHOT_ALLOW_WRITE_ONLY.patch | 71 + ...caps-Add-vfio-pci.display-capability.patch | 142 - ...ask-for-CAP_DAC_OVERRIDE-if-non-root.patch | 39 - ...EV-platform-data-into-qemuCaps-cache.patch | 238 - ...roduce-a-capability-for-egl-headless.patch | 223 - ...r-probing-to-avoid-permission-issues.patch | 127 - ...sev-only-to-domains-that-require-SEV.patch | 65 - ...-checkpoint-redefine-for-offline-VMs.patch | 59 + ...-Don-t-chain-bitmaps-for-checkpoints.patch | 97 + ...-t-merge-checkpoints-during-deletion.patch | 312 + ...tmap-merging-for-checkpoint-deletion.patch | 140 + ...heckpoint-disk-definition-in-parents.patch | 215 + ...leting-checkpoints-accross-snapshots.patch | 298 + ...-checkpoint-is-current-in-a-variable.patch | 56 + ...nd-relabel-images-for-bitmap-merging.patch | 257 + ...on-directly-when-creating-checkpoint.patch | 62 + ...-chkdisk-in-qemuCheckpointAddActions.patch | 58 + ...disk-in-qemuCheckpointDiscardBitmaps.patch | 75 + ...plit-out-checkpoint-deletion-bitmaps.patch | 192 + ...missing-disks-on-checkpoint-deletion.patch | 85 + ...mat-image-properties-for-empty-drive.patch | 143 - ...-and-throttling-info-for-empty-drive.patch | 108 - ...vfio-pci.display-option-onto-cmdline.patch | 479 - ...aphics-iteration-to-its-own-function.patch | 105 - ...m-the-default-cgroup-device-acl-list.patch | 81 - ...ect-flag-during-PCI-address-set-init.patch | 199 + ...of-qemuBuildChrChardevStr-into-flags.patch | 313 - ...qemu-do-not-revert-to-NULL-bandwidth.patch | 45 + ...e-domain-mount-namespace-selectively.patch | 75 - ...t-detected-iso-image-format-into-raw.patch | 43 + ...name-to-qemuDomainDiskGetTopNodename.patch | 106 + ...commit-blockjob-data-into-a-function.patch | 72 + ...commit-blockjob-data-into-a-function.patch | 104 + ...atting-of-node-names-into-status-XML.patch | 51 + ...nused-qemuDomainDiskNodeFormatLookup.patch | 66 + ...O-memLockLimit-calculation-for-PPC64.patch | 66 - ...ret-object-representing-http-cookies.patch | 105 + ...ore-nodenames-of-slice-in-status-XML.patch | 74 + ...n-t-access-vmdef-within-qemu_agent.c.patch | 947 + ...dev-FD-passing-for-vhostuser-backend.patch | 171 - ...rdev-FD-passing-with-standalone-args.patch | 63 - ...eliminate-ret-in-qemuExtDevicesStart.patch | 68 + ...-agent-job-in-qemuDomainSetTimeAgent.patch | 41 + ...et-chardevs-operating-in-client-mode.patch | 132 - ...-pids-when-multiple-dies-are-present.patch | 136 + ...issions-for-pre-created-UNIX-sockets.patch | 50 - ...ecting-binary-in-domain-capabilities.patch | 118 + ...-migration-with-vhost-user-fs-device.patch | 52 + ...up-pcie-root-port-hotplug-off-option.patch | 174 + ...-object-for-TLS-if-it-does-not-exist.patch | 40 - ...cess-srcPriv-when-it-s-not-allocated.patch | 42 - ...lug-Fix-asynchronous-unplug-of-shmem.patch | 47 - ...the-copy-on-read-layer-with-blockdev.patch | 94 + ...message-in-qemuDomainAttachNetDevice.patch | 51 - ...nging-rom-enabled-attr-for-net-iface.patch | 40 - ...ay-property-only-with-vfio-pci-mdevs.patch | 43 - ...itor-Add-handler-for-blockdev-reopen.patch | 113 + ...message-when-QEMU-reply-is-too-large.patch | 51 + ...re-robust-against-programming-errors.patch | 91 - ...onitorJSONExtractCPUArchInfo-wrapper.patch | 88 - ...-of-arch-in-reply-of-query-cpus-fast.patch | 52 - ...ilities-flag-pcie-root-port.hotplug.patch} | 31850 +++++++++++----- ...op-external-devices-after-the-domain.patch | 49 + ...nObjPtr-to-qemuExtDevicesSetupCgroup.patch | 66 + ...preserve-error-on-bandwidth-rollback.patch | 59 + ...ice-on-a-controller-with-hotplug-off.patch | 79 + ...-be-the-directory-to-create-files-in.patch | 66 - ...ner-s-SEV-files-created-before-start.patch | 51 - ...put-virtiofsd-in-the-emulator-cgroup.patch | 108 + ...ndLine-Use-a-helper-variable-mdevsrc.patch | 49 - ...oLogd-param-from-vhostuser-code-path.patch | 98 - ...e-qemuDomainObjBegin-EndJobWithAgent.patch | 228 + ...ename-qemuAgentGetFSInfoInternalDisk.patch | 53 + ...uest-agent-in-qemuAgentGetInterfaces.patch | 50 - ...d-only-disks-when-we-can-create-them.patch | 43 + ...re-data-when-reusing-existing-images.patch | 46 + ...ain-XML-when-doing-inactive-snapshot.patch | 48 + ...snapshot-go-through-cleanup-on-error.patch | 41 + ...omplete-agent-filesystem-information.patch | 116 + ...port-interface-teaming-functionality.patch | 222 + ...AGE_WERROR-for-disk-error-attributes.patch | 114 + ...ead-of-vm-def-in-qemuExtDevicesStart.patch | 54 + ...he-vhost-user-schemas-to-find-binary.patch | 150 + ...time-switch-type-checking-for-videos.patch | 59 - ...t-qemu-validate-virtiofs-filesystems.patch | 137 + .../libvirt-qemu-vfio-ap-device-support.patch | 166 - ...t-qemu-virtiofs-shorten-pid-filename.patch | 49 + ...emu-virtiofs-shorten-socket-filename.patch | 39 + ...rt-qemu-vnc-switch-to-tls-creds-x509.patch | 87 - ...rams-Remove-pointless-returned-value.patch | 137 + ...gin-Don-t-leak-def-on-early-failures.patch | 39 + ...ess-when-rolling-back-due-to-failure.patch | 43 + ...-exit-early-when-the-job-has-started.patch | 75 + ...ataCleanupOne-Free-incrementalBitmap.patch | 37 + ...ed-Fix-improper-dereference-of-array.patch | 38 + ...d-Adjust-to-new-semantics-of-bitmaps.patch | 95 + ...inish-Use-proper-variable-to-iterate.patch | 42 + ...tStart-Fix-allocation-of-string-list.patch | 41 + ...xtra-wrapping-object-to-JSON-strings.patch | 129 + ...ckingStoreString-Add-pretty-argument.patch | 103 + ...andle-http-s-with-cookies-and-others.patch | 226 + ...ckingStoreString-Remove-ret-variable.patch | 67 + ...Commit-Propagate-disabledBitmapsBase.patch | 72 + ...-write-access-when-formatting-images.patch | 59 + ...chPrepare-Get-rid-of-cleanup-section.patch | 55 + ...ps-Report-errors-on-all-switch-cases.patch | 65 + ...ops-format-offset-and-size-for-slice.patch | 58 + ...eGetURI-Pass-through-query-component.patch | 136 + ...iv-instead-of-its-individual-members.patch | 172 - ...intCreateXML-Check-VM-liveness-first.patch | 57 + ...open-images-for-bitmap-modifications.patch | 54 + ...ect-field-for-checkpoint-bitmap-name.patch | 40 + ...it-Handle-bitmaps-on-start-of-commit.patch | 96 + ...on-capabilities-after-liveness-check.patch | 70 + ...on-Record-updated-flags-to-block-job.patch | 49 + ...g-checkpoints-for-virDomainBlockCopy.patch | 84 + ...when-pivoting-an-active-block-commit.patch | 61 + ...ures-of-creating-active-layer-bitmap.patch | 42 + ...k-prior-to-executing-the-pivot-steps.patch | 60 + ...ivot-Rename-actions-to-bitmapactions.patch | 73 + ...heck-for-range-only-if-IP-prefix-set.patch | 41 - ...reSecAlias-Hardcode-restored-aliases.patch | 58 + ...to-free-a-negative-number-of-entries.patch | 77 + ...GuestInfo-don-t-assign-NULL-hostname.patch | 49 + ...tanding-uses-with-qemuAliasForSecret.patch | 110 + ...ad-Don-t-leak-array-with-0-iothreads.patch | 48 + ...NestedJobAllowed-Allow-QEMU_JOB_NONE.patch | 47 - ...Device-Remove-associated-chardev-too.patch | 76 - ...Use-VIR_AUTOCLOSE-for-intermediatefd.patch | 56 + ...StartVM-Use-g_autoptr-for-virCommand.patch | 46 + ...emory-Don-t-enforce-dynamicOwnership.patch | 90 - ...tup-Allocate-and-return-secinfo-here.patch | 146 + ...Automatically-free-non-secret-locals.patch | 88 + ...etup-Split-out-lookup-of-secret-data.patch | 174 + ...tupFromSecret-Use-qemuAliasForSecret.patch | 123 + ...fo-Register-autoptr-cleanup-function.patch | 36 + ...pare-Change-aliases-for-disk-secrets.patch | 640 + ...repare-Fix-naming-of-alias-variables.patch | 60 + ...repare-Setup-secret-for-http-cookies.patch | 90 + ...load-the-relative-path-with-blockdev.patch | 42 + ...gic-of-relative-backing-store-update.patch | 78 + ...rageSource-Reject-unsupported-slices.patch | 52 + ...ateStorageSource-Relax-PR-validation.patch | 64 - ...idate-new-network-storage-parameters.patch | 113 + ...-qemuExtDevicesStart-pass-logManager.patch | 67 + ...NBD-Exit-early-if-there-are-no-disks.patch | 56 + ...ng-of-capacity-when-blockdev-is-used.patch | 74 + ...BD-Move-monitor-call-out-of-the-loop.patch | 65 + ...emove-ret-variable-and-cleanup-label.patch | 61 + ...kieAddNBD-Use-glib-memory-allocators.patch | 47 + ...automatic-freeing-of-virHashTablePtr.patch | 57 + ...ionCookieNBD-Extract-embedded-struct.patch | 52 + ...LS-Adapt-to-modern-memory-management.patch | 59 + ...uMigrationParamsResetTLS-Fix-comment.patch | 39 + ...kdevAdd-Take-double-pointer-argument.patch | 146 + ...itorJSONBlockdevAdd-Refactor-cleanup.patch | 61 + ...itorJSONBlockdevDel-Refactor-cleanup.patch | 63 + ...te-Output-validator-output-to-stderr.patch | 80 + ...emoryPathsImpl-Don-t-overwrite-error.patch | 45 - ...t-NS-iff-domain-was-started-with-one.patch | 52 - ...roduce-virQEMUCapsGetCPUModelX86Data.patch | 120 - ...Introduce-virQEMUCapsGetCPUModelInfo.patch | 65 - ...apabilities-Rework-domain-caps-cache.patch | 328 + ...ities-Use-virQEMUCapsGetCPUModelInfo.patch | 132 - ...-Use-canonical-names-of-CPU-features.patch | 137 - ...e-consistent-syntax-for-CPU-features.patch | 121 - ...in-virQEMUDriverGetHost-NUMACaps-CPU.patch | 85 + ...ify-access-to-a-NVMe-disk-iff-needed.patch | 52 + ...-bridge-detection-function-for-PPC64.patch | 85 - ...main-add-a-PPC64-memLockLimit-helper.patch | 219 - ...lug-Attach-guestfwd-using-netdev_add.patch | 65 - ...-Check-for-duplicate-drive-addresses.patch | 43 - ...lug-Detach-guestfwd-using-netdev_del.patch | 137 - ...qemuDomainDetachExtensionDevice-call.patch | 52 - ...l-to-qemuDomainDetachExtensionDevice.patch | 99 - ...ration-Avoid-writing-to-freed-memory.patch | 48 - ...duce-qemuMonitorJSONGetPRManagerInfo.patch | 180 - ...refer-generic-qemuMonitorGetGuestCPU.patch | 81 - ...ement-qemuSecurityDomainSetPathLabel.patch | 166 - ...test-cases-for-block-device-backends.patch | 149 + ...sic-tests-for-backup-bitmap-handling.patch | 139 + ...sic-tests-for-commit-bitmap-handling.patch | 355 + ...e-for-blockcopy-bitmap-handling-test.patch | 47 + ...-case-for-checkpoint-bitmap-handling.patch | 46 + ...d-empty-case-for-checkpoint-deletion.patch | 68 + ...pty-case-for-incremental-backup-test.patch | 74 + ...test-Add-empty-test-case-for-bitmaps.patch | 133 + ...ommit-bitmap-handling-with-snapshots.patch | 945 + ...p-detection-and-validation-test-case.patch | 593 + ...ots-tests-for-backup-bitmap-handling.patch | 161 + ...sts-for-block-commit-bitmap-handling.patch | 1105 + ...r-handling-bitmaps-during-block-copy.patch | 685 + ...dling-of-bitmaps-during-block-commit.patch | 418 + ...-re-enabling-of-bitmaps-after-commit.patch | 460 + ...p-chain-handling-during-block-commit.patch | 585 + ...tQemuDiskXMLToProps-from-dd94f36ffbe.patch | 60 + ...t-Delete-synthetic-bitmap-test-cases.patch | 1903 + ...le-testcases-for-all-bitmap-handling.patch | 3366 ++ ...st-Extract-printing-of-nodename-list.patch | 78 + ...ema-root-for-blockdev-add-validation.patch | 71 + ...st-Fix-and-optimize-fake-image-chain.patch | 47 + ...emublocktest-Load-QMP-schema-earlier.patch | 85 + ...dation-for-basic-and-snapshots-cases.patch | 49 + ...oduce-testing-of-checkpoint-deletion.patch | 401 + ...LETE_MERGE-to-TEST_CHECKPOINT_DELETE.patch | 81 + ...asic-bitmap-detection-test-case-data.patch | 282 + ...hots-bitmap-detection-test-case-data.patch | 1476 + ...blocktest-Test-backing-store-strings.patch | 1587 + ...st-formatting-parsing-of-modern-JSON.patch | 103 + ...blocktest-xml-json-Add-test-for-NVMe.patch | 94 + ...actor-cleanup-in-test-case-functions.patch | 208 + ...est-Don-t-plug-a-SCSI-disk-at-unit-7.patch | 71 - ...test-Test-guestfwd-attach-and-detach.patch | 117 - ...rjsontest-AddNetdev-Use-real-variant.patch | 43 + ...Add-tests-for-Icelake-Server-pconfig.patch | 128 - ...st-case-for-disks-with-http-s-source.patch | 166 + ...dd-test-for-CPU-features-translation.patch | 134 - ...st-Add-case-for-host-model-vendor_id.patch | 79 + ...ltest-Wire-up-disk-network-http-case.patch | 115 + ...xml2xmltest-set-driver-as-privileged.patch | 38 + ...el-Enable-usage-of-x-blockdev-reopen.patch | 186 + ...hsession-update-deprecated-functions.patch | 63 - ...hema-wrap-fsDriver-in-a-choice-group.patch | 89 + ...nterleave-in-the-disk-source-element.patch | 497 + ...-for-correct-usage-when-LookupByUUID.patch | 78 - ...if-locking-a-file-on-NFS-mount-fails.patch | 45 + ...paths-we-haven-t-locked-successfully.patch | 117 + ...Y_DOMAIN_IMAGE_PARENT_CHAIN_TOP-flag.patch | 182 + ...dac-Relabel-dev-sev-in-the-namespace.patch | 122 - ...y-dac-also-label-listen-UNIX-sockets.patch | 64 - ...report-an-error-when-not-returning-1.patch | 55 - ...ry-leak-in-virNWFilterBindingDispose.patch | 69 - ...t-in-virDomainDetachDeviceAlias-docs.patch | 40 - ...s-sysmacros.h-always-exists-on-Linux.patch | 168 + ...-qemu-img-command-when-shrinking-vol.patch | 47 - ...ol-to-have-any-format-for-encryption.patch | 137 - ...orage-Allow-inputvol-to-be-encrypted.patch | 347 - ...backing-store-support-for-fat-prefix.patch | 123 + ...urce-properties-from-json-pseudo-uri.patch | 115 + ...h-from-_virStorageBackendQemuImgInfo.patch | 61 - ...new-images-with-write-permission-bit.patch | 69 + ...t-Introduce-virnetdevopenvswitchtest.patch | 356 - ...-all-per-image-data-in-one-structure.patch | 205 + ...-together-with-rest-of-xml-json-code.patch | 106 + ...pabilities-data-for-QEMU-2.11-x86_64.patch | 20429 ---------- ...abilities-for-QEMU-5.0.0-on-aarch64.patch} | 22934 ++++++----- ...ain-capabilities-case-for-QEMU-4.1.0.patch | 203 - ...ibvirt-tests-Add-linux-high-ids-test.patch | 1112 - ...d-missing-thread_siblings_list-files.patch | 654 - ...tests-Add-more-tests-to-qemucaps2xml.patch | 1089 - ...dd-test-case-for-the-armvtimer-timer.patch | 136 + ...uptest-to-add-virCgroupGetMemoryStat.patch | 112 - ...Follow-up-on-qemucaps2xmldata-rename.patch | 37 - ...bvirt-tests-Resolve-possible-overrun.patch | 84 - ...mucapabilities-data-for-qemucaps2xml.patch | 478 - ...abilities-data-for-QEMU-3.0.0-x86_64.patch | 837 - ...-correct-function-name-in-error-path.patch | 40 - ...CPU-data-files-for-validating-die_id.patch | 2131 ++ ...a-default-dimm-out-of-hugepages-numa.patch | 207 - ...rd-hugepages-out-of-hugepages-pages3.patch | 203 - ...pages-discard-out-of-hugepages-pages.patch | 234 - ...x-TLS-handshake-failure-with-TLS-1.3.patch | 42 - ...case-for-adding-duplicate-hash-entry.patch | 68 + ...duce-hugepages-default-1G-nodeset-2M.patch | 144 - ...rt-tests-introduce-hugepages-nodeset.patch | 106 - ...-test-data-for-the-new-slice-element.patch | 232 + ...mu-Remove-disk-from-graphics-vnc-tls.patch | 72 - ...dd-disk-error-policy-tests-for-s390x.patch | 185 + ...t-more-versions-for-graphics-vnc-tls.patch | 116 - ...-overlays-on-top-of-disks-with-slice.patch | 151 + ...deletion-test-for-deep-backing-chain.patch | 276 + ...eletion-tests-for-some-special-cases.patch | 257 + ...e-test-cases-for-checkpoint-deletion.patch | 169 + ...thetic-snapshot-checkpoint-test-data.patch | 896 + ...for-checkpoint-deletion-bitmap-merge.patch | 134 + ...-for-qemuBlockBitmapsHandleBlockcopy.patch | 577 + ...nthetic-test-case-for-broken-bitmaps.patch | 900 + ...dd-test-data-for-upcoming-qemu-3.0.0.patch | 23984 ------------ ...case-for-empty-CDROM-with-cache-mode.patch | 85 - ...uxml2argv-add-CAPS_ARCH_LATEST-macro.patch | 99 - ...elements-from-hugepages-numa-default.patch | 208 - ...ges-numa-into-hugepages-numa-default.patch | 48 - ...es-pages-into-hugepages-numa-nodeset.patch | 184 - ...ages2-into-hugepages-numa-default-2M.patch | 146 - ...es3-into-hugepages-numa-nodeset-part.patch | 137 - ...into-hugepages-numa-nodeset-nonexist.patch | 125 - ...ges-pages5-into-hugepages-default-2M.patch | 140 - ...6-into-hugepages-default-system-size.patch | 141 - ...pages-pages7-into-pages-dimm-discard.patch | 189 - ...ges8-into-hugepages-nodeset-nonexist.patch | 85 - ...ename-hugepages-to-hugepages-default.patch | 115 - ...-security-with-specific-QEMU-version.patch | 101 - ...json-pseudo-URI-without-file-wrapper.patch | 54 + ...specified-raw-image-with-offset-size.patch | 49 + ...s-for-NBD-URI-style-syntax-over-UNIX.patch | 61 + ...backing-file-format-of-created-image.patch | 39 + ...x-typo-generating-adapter_wwpn-field.patch | 35 - ...-check-for-AMD-in-virt-host-validate.patch | 107 + ...-check-on-s390-in-virt-host-validate.patch | 158 + ...ossible-error-in-virCommandMassClose.patch | 47 - ...util-Don-t-overflow-in-virRandomBits.patch | 44 - ...virt-util-Fix-virCgroupGetMemoryStat.patch | 89 - ...-parser-for-kernel-cmdline-arguments.patch | 446 + ...ibvirt-util-Introduce-virBitmapUnion.patch | 149 - ...til-Introduce-virNumaNodesetToCPUset.patch | 128 - ...rIsDevMapperDevice-to-virdevmapper.c.patch | 186 + ...l-Propagate-numad-failures-correctly.patch | 63 - ...libvirt-util-Rework-virStringListAdd.patch | 145 - ...ewrite-virHostCPUCountThreadSiblings.patch | 91 - ...terfaces-to-IPv6CheckForwarding-list.patch | 82 - .../libvirt-util-add-virBufferTrimChars.patch | 151 + ...ting-automatic-cleanup-functionality.patch | 78 - ...nction-using-VIR_DEFINE_AUTOPTR_FUNC.patch | 66 - ...instead-of-VIR_FREE-for-scalar-types.patch | 1528 - ...xthop-interfaces-of-multipath-routes.patch | 81 - ...numerating-file-descriptors-to-close.patch | 62 - ...nction-using-VIR_DEFINE_AUTOPTR_FUNC.patch | 69 - ...instead-of-VIR_FREE-for-scalar-types.patch | 194 - ...ups-v2-cpuset-controller-for-threads.patch | 44 - ...o-close-fd-of-the-file-automatically.patch | 68 - ...leak-in-virFirewallDInterfaceSetZone.patch | 45 - ...ility-of-Duplicate-key-error-message.patch | 209 + ...g_new0-for-allocating-hash-internals.patch | 79 + ...ement-virCgroupV2-Set-Get-CpusetCpus.patch | 66 - ...CgroupV2-Set-Get-CpusetMemoryMigrate.patch | 64 - ...ement-virCgroupV2-Set-Get-CpusetMems.patch | 67 - ...bvirt-util-introduce-cgroup-v2-files.patch | 256 - ...til-introduce-vircgroupbackend-files.patch | 197 - ...on-Introduce-virJSONValueArrayConcat.patch | 94 + ...nction-using-VIR_DEFINE_AUTOPTR_FUNC.patch | 69 - ...ted-during-review-of-commit-d40b820c.patch | 66 - ...ld-specific-stuff-into-its-own-files.patch | 480 - ...t-to-avoid-issues-with-mount-syscall.patch | 43 - ...instead-of-VIR_FREE-for-scalar-types.patch | 98 - ...-use-VIR_AUTOPTR-for-aggregate-types.patch | 277 - ...virt-util-new-virFirewallD-APIs-docs.patch | 343 - ...msghdr-arg-to-virNetlinkDumpCallback.patch | 51 - ...-committed-to-virFirewallDZoneExists.patch | 46 - ...etection-for-non-PCI-network-devices.patch | 51 - ...ing-store-format-in-virStorageSource.patch | 155 + ...-image-format-probing-by-file-suffix.patch | 191 + ...nsport-type-when-parsing-NBD-strings.patch | 69 + ...uce-macro-for-automatic-string-lists.patch | 94 - ...-errors-when-getting-interface-stats.patch | 55 - ...d_attr-instead-of-an-open-coded-loop.patch | 106 - ...rcgroup-improve-controller-detection.patch | 117 - ...introduce-virCgroup-Get-Set-ValueRaw.patch | 161 - ...tr-out-of-virCgroupGetValueForBlkDev.patch | 323 - ...up-into-virCgroupDetectControllersCB.patch | 105 - ...upv1-add-support-for-BFQ-blkio-files.patch | 202 - ...ircgroupv2-add-support-for-BFQ-files.patch | 211 - ...ror-out-if-enabling-controller-fails.patch | 64 - ...PU-controller-only-if-it-s-available.patch | 44 - ...y-requested-controllers-as-available.patch | 53 - ...alues-of-virCgroupV2EnableController.patch | 104 - ...ing-missing-controllers-with-systemd.patch | 80 - ...ontroller-to-create-thread-directory.patch | 42 - ...-Drop-an-unused-variable-ovs_timeout.patch | 42 - ...re-for-storing-storage-source-slices.patch | 113 + ...arbitrary-limit-on-socket_id-core_id.patch | 93 - ...mmand-use-procfs-to-learn-opened-FDs.patch | 145 - ...vMapperGetTargets-Don-t-ignore-EBADF.patch | 61 + ...getsImpl-Check-for-dm-major-properly.patch | 69 + ...etTargetsImpl-Use-VIR_AUTOSTRINGLIST.patch | 73 + ...-if-device-is-not-a-devmapper-target.patch | 68 + ...urrent-checkpoint-if-there-isn-t-any.patch | 50 + ...initialize-xml-to-avoid-random-crash.patch | 52 - ...tibleDevice-Relax-alias-change-check.patch | 55 - ...DeviceFlags-Clarify-update-semantics.patch | 50 - ...IPoolSourceHost-Remove-cleanup-label.patch | 72 + ...olSourceHost-Remove-ternary-operator.patch | 40 + ...ost-Sanitize-handling-of-string-list.patch | 63 + ...cePtr-instead-of-virDomainDiskDefPtr.patch | 99 + ...st-use-g_new0-instead-of-VIR_ALLOC_N.patch | 39 + ...mat-Format-only-valid-managed-values.patch | 43 + ...cePtr-instead-of-virDomainDiskDefPtr.patch | 88 + ...cePool-Check-for-disk-type-correctly.patch | 44 + ...-volume-disks-in-whole-backing-chain.patch | 64 + ...lit-code-to-setup-one-storage-source.patch | 228 + ...cePtr-instead-of-virDomainDiskDefPtr.patch | 62 + ...irDomainFSDefFree-Unref-private-data.patch | 53 + ...BIStability-Check-for-MTU-change-too.patch | 47 - ...mainNetDefClear-Free-persistent-name.patch | 53 + ...ter-error-message-than-Duplicate-key.patch | 123 - ...mainObjListAddLocked-fix-double-free.patch | 64 - ...dFSType-Check-for-fuse.glusterfs-too.patch | 128 - ...redFSType-Detect-direct-mount-points.patch | 80 - ...try-Simplify-allocation-of-new-entry.patch | 53 + ...-and-remove-NULL-checks-from-callers.patch | 472 + ...tchInterfaceStats-Optimize-for-speed.patch | 175 - ...retLookupDefCopy-Remove-return-value.patch | 79 + ...nagerMetadataLock-Store-locked-paths.patch | 115 + ...l-Refactor-handling-of-backing-store.patch | 65 + ...onSecretCopy-Properly-copy-internals.patch | 50 + ...romBuf-Remove-backingFormat-argument.patch | 111 + ...Remove-unused-backingFormat-argument.patch | 91 + ...-probing-under-special-circumstances.patch | 148 + ...MetadataRecurse-Expect-NULL-src-path.patch | 48 + ...tadataRecurse-Extract-storage-access.patch | 128 + ...MetadataRecurse-Remove-cleanup-label.patch | 124 + ...curse-Remove-impossible-error-report.patch | 49 + ...nd-assignment-of-backing-chain-depth.patch | 59 + ...ashHasEntry-instead-of-fake-pointers.patch | 49 + ...s-path-formatting-for-migratable-XML.patch | 80 - ...DriverParser-annotate-format-drivers.patch | 79 + ...eValidate-Accept-quoted-cookie-value.patch | 148 + ...FromBacking-Also-transfer-the-format.patch | 81 + ...son-pseudo-URIs-without-file-wrapper.patch | 115 + ...tening-of-json-URIs-out-of-recursion.patch | 69 + ...-around-original-backing-file-string.patch | 186 + ...rbitrary-nesting-with-format-drivers.patch | 93 + ...Raw-Parse-offset-and-size-attributes.patch | 78 + ...undocumented-value-off-for-sslverify.patch | 92 + ...serve-query-string-of-URI-for-http-s.patch | 73 + ...ceUpdateCapacity-Drop-probe-argument.patch | 117 + ...vices-Drop-confusing-part-of-comment.patch | 41 - ...st-declare-testBufAddStrData-earlier.patch | 55 + ...t-remove-extra-G_GNUC_UNUSED-markers.patch | 49 + ...virbuftest-remove-unnecessary-labels.patch | 152 + ...eld-names-when-initalizing-test-info.patch | 74 + .../libvirt-virbuftest-use-g_autofree.patch | 148 + ...roupRemove-inside-virCgroupMakeGroup.patch | 106 - ...up-Duplicate-string-before-modifying.patch | 75 - ...t-controller-detection-into-function.patch | 95 - ...ink-resolving-into-separate-function.patch | 137 - ...mount-options-matching-into-function.patch | 127 - ...t-placement-validation-into-function.patch | 102 - ...tandard-set-of-typedefs-and-use-them.patch | 72 - ...ce-virCgroupEnableMissingControllers.patch | 185 - ...oup-Introduce-virCgroupGetMemoryStat.patch | 155 - ...n-used-in-tests-into-vircgrouppriv.h.patch | 74 - ...-vircgroup-Remove-obsolete-sa_assert.patch | 40 - ...roup-Remove-pointless-bool-parameter.patch | 60 - ...Remove-unused-function-virCgroupKill.patch | 105 - ...up-Remove-virCgroupAddTaskController.patch | 76 - ...ame-structs-to-start-with-underscore.patch | 80 - ...-if-conditions-in-virCgroupMakeGroup.patch | 62 - ...pPathOfController-into-two-functions.patch | 138 - ...-function-virCgroupAddTaskController.patch | 148 - ...-function-virCgroupRemoveRecursively.patch | 80 - ...ntroller-in-virCgroupDetectPlacement.patch | 86 - ...add-support-for-hybrid-configuration.patch | 985 - ...lers-not-managed-by-systemd-on-error.patch | 77 - ...-detect-available-backend-for-cgroup.patch | 151 - ...ircgroup-extract-v1-detect-functions.patch | 426 - ...ct-virCgroupV1-Allow-Deny-AllDevices.patch | 140 - ...xtract-virCgroupV1-Allow-Deny-Device.patch | 250 - ...rCgroupV1-Set-Get-BlkioDeviceReadBps.patch | 181 - ...CgroupV1-Set-Get-BlkioDeviceReadIops.patch | 181 - ...irCgroupV1-Set-Get-BlkioDeviceWeight.patch | 208 - ...CgroupV1-Set-Get-BlkioDeviceWriteBps.patch | 181 - ...groupV1-Set-Get-BlkioDeviceWriteIops.patch | 181 - ...ract-virCgroupV1-Set-Get-BlkioWeight.patch | 150 - ...act-virCgroupV1-Set-Get-CpuCfsPeriod.patch | 142 - ...ract-virCgroupV1-Set-Get-CpuCfsQuota.patch | 168 - ...xtract-virCgroupV1-Set-Get-CpuShares.patch | 123 - ...tract-virCgroupV1-Set-Get-CpusetCpus.patch | 126 - ...CgroupV1-Set-Get-CpusetMemoryMigrate.patch | 132 - ...tract-virCgroupV1-Set-Get-CpusetMems.patch | 128 - ...act-virCgroupV1-Set-Get-FreezerState.patch | 123 - ...act-virCgroupV1-Set-Get-Memory-Limit.patch | 478 - ...vircgroup-extract-virCgroupV1AddTask.patch | 234 - ...rcgroup-extract-virCgroupV1Available.patch | 173 - ...rcgroup-extract-virCgroupV1BindMount.patch | 310 - ...cgroup-extract-virCgroupV1CopyMounts.patch | 129 - ...oup-extract-virCgroupV1CopyPlacement.patch | 163 - ...extract-virCgroupV1DetectControllers.patch | 218 - ...-extract-virCgroupV1GetAnyController.patch | 118 - ...-virCgroupV1GetBlkioIoDeviceServiced.patch | 278 - ...xtract-virCgroupV1GetBlkioIoServiced.patch | 265 - ...-extract-virCgroupV1GetCpuacct-Usage.patch | 122 - ...up-extract-virCgroupV1GetCpuacctStat.patch | 167 - ...p-extract-virCgroupV1GetMemSwapUsage.patch | 105 - ...oup-extract-virCgroupV1GetMemoryStat.patch | 228 - ...up-extract-virCgroupV1GetMemoryUsage.patch | 105 - ...oup-extract-virCgroupV1HasController.patch | 92 - ...oup-extract-virCgroupV1HasEmptyTasks.patch | 113 - ...rcgroup-extract-virCgroupV1MakeGroup.patch | 446 - ...-extract-virCgroupV1PathOfController.patch | 135 - ...-vircgroup-extract-virCgroupV1Remove.patch | 172 - ...rcgroup-extract-virCgroupV1SetMemory.patch | 129 - ...ircgroup-extract-virCgroupV1SetOwner.patch | 198 - ...up-extract-virCgroupV1StealPlacement.patch | 94 - ...oup-extract-virCgroupV1SupportsCpuBW.patch | 111 - ...ract-virCgroupV1ValidateMachineGroup.patch | 290 - ...extract-virCgroupV1ValidatePlacement.patch | 150 - .../libvirt-vircgroup-fix-MinGW-build.patch | 52 - ...in-virCgroupEnableMissingControllers.patch | 50 - ...fix-cgroups-v2-controllers-detection.patch | 128 - ...include-system-headers-only-on-linux.patch | 83 - ...up-introduce-cgroup-v1-backend-files.patch | 186 - ...rcgroup-introduce-virCgroupAddThread.patch | 126 - ...p-introduce-virCgroupKillRecursiveCB.patch | 286 - ...rcgroup-introduce-virCgroupTaskFlags.patch | 86 - ...rCgroupV2-Set-Get-BlkioDeviceReadBps.patch | 112 - ...CgroupV2-Set-Get-BlkioDeviceReadIops.patch | 112 - ...irCgroupV2-Set-Get-BlkioDeviceWeight.patch | 93 - ...CgroupV2-Set-Get-BlkioDeviceWriteBps.patch | 112 - ...groupV2-Set-Get-BlkioDeviceWriteIops.patch | 112 - ...duce-virCgroupV2-Set-Get-BlkioWeight.patch | 91 - ...uce-virCgroupV2-Set-Get-CpuCfsPeriod.patch | 116 - ...duce-virCgroupV2-Set-Get-CpuCfsQuota.patch | 94 - ...roduce-virCgroupV2-Set-Get-CpuShares.patch | 65 - ...virCgroupV2-Set-Get-MemSwapHardLimit.patch | 104 - ...-virCgroupV2-Set-Get-MemoryHardLimit.patch | 85 - ...-virCgroupV2-Set-Get-MemorySoftLimit.patch | 103 - ...rcgroup-introduce-virCgroupV2AddTask.patch | 67 - ...group-introduce-virCgroupV2Available.patch | 116 - ...group-introduce-virCgroupV2BindMount.patch | 83 - ...roup-introduce-virCgroupV2CopyMounts.patch | 49 - ...p-introduce-virCgroupV2CopyPlacement.patch | 68 - ...troduce-virCgroupV2DetectControllers.patch | 125 - ...up-introduce-virCgroupV2DetectMounts.patch | 58 - ...introduce-virCgroupV2DetectPlacement.patch | 72 - ...ntroduce-virCgroupV2GetAnyController.patch | 51 - ...-virCgroupV2GetBlkioIoDeviceServiced.patch | 106 - ...roduce-virCgroupV2GetBlkioIoServiced.patch | 107 - ...-introduce-virCgroupV2GetCpuacctStat.patch | 91 - ...introduce-virCgroupV2GetCpuacctUsage.patch | 75 - ...introduce-virCgroupV2GetMemSwapUsage.patch | 58 - ...p-introduce-virCgroupV2GetMemoryStat.patch | 117 - ...-introduce-virCgroupV2GetMemoryUsage.patch | 57 - ...p-introduce-virCgroupV2HasController.patch | 51 - ...p-introduce-virCgroupV2HasEmptyTasks.patch | 59 - ...group-introduce-virCgroupV2MakeGroup.patch | 174 - ...ntroduce-virCgroupV2PathOfController.patch | 66 - ...ircgroup-introduce-virCgroupV2Remove.patch | 62 - ...group-introduce-virCgroupV2SetMemory.patch | 71 - ...cgroup-introduce-virCgroupV2SetOwner.patch | 69 - ...-introduce-virCgroupV2StealPlacement.patch | 54 - ...p-introduce-virCgroupV2SupportsCpuBW.patch | 58 - ...duce-virCgroupV2ValidateMachineGroup.patch | 94 - ...troduce-virCgroupV2ValidatePlacement.patch | 57 - ...group-machinename-will-never-be-NULL.patch | 87 - ...vircgroup-register-cgroup-v2-backend.patch | 39 - ...ircgroup-remove-VIR_CGROUP_SUPPORTED.patch | 72 - ...rcgroup-rename-controllers-to-legacy.patch | 524 - ...upAdd.-Task-to-virCgroupAdd.-Process.patch | 222 - ...ontroller-into-virCgroupV1Controller.patch | 82 - ...upmock-add-support-to-test-cgroup-v2.patch | 253 - ...t-vircgroupmock-change-cgroup-prefix.patch | 104 - ...roupmock-cleanup-unused-cgroup-files.patch | 150 - ...oupmock-rewrite-cgroup-fopen-mocking.patch | 390 - ...rt-vircgrouptest-add-cgroup-v2-tests.patch | 83 - ...add-detect-mounts-test-for-cgroup-v2.patch | 115 - ...etect-mounts-test-for-hybrid-cgroups.patch | 125 - ...bvirt-vircgrouptest-add-hybrid-tests.patch | 90 - ...-call-virCgroupDetectMounts-directly.patch | 163 - ...ewSelf-instead-virCgroupDetectMounts.patch | 544 - ...initFakeFS-and-cleanupFakeFS-helpers.patch | 120 - ...testCgroupDetectMounts-for-cgroup-v2.patch | 137 - ...-prepare-validateCgroup-for-cgroupv2.patch | 150 - ...cgroupv1-fix-build-on-non-linux-OSes.patch | 94 - ...ircgroupv2-fix-abort-in-VIR_AUTOFREE.patch | 65 - ...rsing-multiple-values-in-single-file.patch | 105 - ...rcgroupv2-fix-setting-cpu.max-period.patch | 42 - ...CgroupV2GetCpuCfsQuota-for-max-value.patch | 39 - ...-fix-virCgroupV2ValidateMachineGroup.patch | 47 - ...ircgroupv2-store-enabled-controllers.patch | 79 - ...rate-mass-FD-closing-into-a-function.patch | 111 - ...cpuhost-Add-support-for-reading-MSRs.patch | 155 - ...s-long-as-the-while-loop-is-executed.patch | 49 - ...pper-Don-t-cache-device-mapper-major.patch | 99 + ...-libdevmapper-to-obtain-dependencies.patch | 467 + ...kernel-without-device-mapper-support.patch | 87 + ...rors-when-opening-dev-mapper-control.patch | 88 + ...two-WITH_DEVMAPPER-sections-together.patch | 69 + ...irt-virfile-Detect-ceph-as-shared-FS.patch | 139 - ...irfile-Rework-virFileIsSharedFixFUSE.patch | 151 - ...to-account-in-virFileIsSharedFixFUSE.patch | 187 - ...virt-virfile-added-GPFS-as-shared-fs.patch | 124 - ...libvirt-virfile-fix-cast-align-error.patch | 95 - ...t-name-prefix-for-virFileInData-test.patch | 37 - ...rt-virfiletst-Test-virFileIsSharedFS.patch | 358 - ...s-of-virHashKeyEqual-implementations.patch | 74 + ...ke-virHostCPUGetMSR-work-only-on-x86.patch | 89 - ...ifname-in-virNetDevTapInterfaceStats.patch | 60 - ...undefined-behaviour-in-virRandomBits.patch | 40 - ...explicit-domain-for-domxml-to-native.patch | 90 - ...declaration-when-extracting-CPU-XMLs.patch | 63 - ...p-persistent-for-detach-device-alias.patch | 35 - ...me-typo-in-nwfilter-binding-undefine.patch | 39 - ...verify-readahead-cookies-and-timeout.patch | 183 + ...host-validate-Fix-build-on-non-Linux.patch | 45 - ...ost-validate-require-freezer-for-LXC.patch | 38 - ...roup-detection-to-use-util-vircgroup.patch | 371 - ...idate-Add-schema-for-nwfilterbinding.patch | 53 - ...x-make-fileName-optional-for-CD-ROMs.patch | 196 + ...-few-ignore-cases-in-virVMXParseDisk.patch | 109 + SOURCES/symlinks | 99 +- SPECS/libvirt.spec | 1829 +- 993 files changed, 108657 insertions(+), 156032 deletions(-) delete mode 100644 SOURCES/libvirt-Handle-copying-bitmaps-to-larger-data-buffers.patch delete mode 100644 SOURCES/libvirt-PPC64-support-for-NVIDIA-V100-GPU-with-NVLink2-passthrough.patch delete mode 100644 SOURCES/libvirt-RHEL-network-regain-guest-network-connectivity-after-firewalld-switch-to-nftables.patch rename SOURCES/{libvirt-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch => libvirt-RHEL-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch} (78%) rename SOURCES/{libvirt-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch => libvirt-RHEL-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch} (76%) rename SOURCES/{libvirt-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch => libvirt-RHEL-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch} (84%) create mode 100644 SOURCES/libvirt-Remove-checking-of-return-value-of-virHashNew.patch create mode 100644 SOURCES/libvirt-Remove-qemuDomainSecretInfoNew.patch delete mode 100644 SOURCES/libvirt-Revert-RHEL-network-regain-guest-network-connectivity-after-firewalld-switch-to-nftables.patch delete mode 100644 SOURCES/libvirt-Revert-Separate-out-StateAutoStart-from-StateInitialize.patch delete mode 100644 SOURCES/libvirt-Revert-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName.patch delete mode 100644 SOURCES/libvirt-Revert-util-vircgroup-pass-parent-cgroup-into-virCgroupDetectControllersCB.patch delete mode 100644 SOURCES/libvirt-Revert-virStateDriver-Separate-AutoStart-from-Initialize.patch delete mode 100644 SOURCES/libvirt-Revert-vircgroup-cleanup-controllers-not-managed-by-systemd-on-error.patch delete mode 100644 SOURCES/libvirt-access-Fix-nwfilter-binding-ACL-access-API-name-generation.patch delete mode 100644 SOURCES/libvirt-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName.patch delete mode 100644 SOURCES/libvirt-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName_1.patch delete mode 100644 SOURCES/libvirt-admin-reject-clients-unless-their-UID-matches-the-current-UID.patch delete mode 100644 SOURCES/libvirt-api-disallow-virConnect-HypervisorCPU-on-read-only-connections.patch delete mode 100644 SOURCES/libvirt-api-disallow-virConnectGetDomainCapabilities-on-read-only-connections.patch create mode 100644 SOURCES/libvirt-api-disallow-virDomainAgentSetResponseTimeout-on-read-only-connections.patch delete mode 100644 SOURCES/libvirt-api-disallow-virDomainManagedSaveDefineXML-on-read-only-connections.patch delete mode 100644 SOURCES/libvirt-api-disallow-virDomainSaveImageGetXMLDesc-on-read-only-connections.patch delete mode 100644 SOURCES/libvirt-bhyve-Move-autostarting-of-domains-into-bhyveStateInitialize.patch delete mode 100644 SOURCES/libvirt-conf-Add-definitions-for-uid-and-fid-PCI-address-attributes.patch create mode 100644 SOURCES/libvirt-conf-Add-support-for-cookies-for-HTTP-based-disks.patch create mode 100644 SOURCES/libvirt-conf-Add-support-for-http-s-query-strings.patch create mode 100644 SOURCES/libvirt-conf-Add-support-for-modifying-ssl-validation-for-https-ftps-disks.patch create mode 100644 SOURCES/libvirt-conf-Add-support-for-setting-timeout-and-readahead-size-for-network-disks.patch delete mode 100644 SOURCES/libvirt-conf-Add-validation-of-input-devices.patch delete mode 100644 SOURCES/libvirt-conf-Allocate-release-uid-and-fid-in-PCI-address.patch create mode 100644 SOURCES/libvirt-conf-Don-t-format-http-cookies-unless-VIR_DOMAIN_DEF_FORMAT_SECURE-is-used.patch create mode 100644 SOURCES/libvirt-conf-Don-t-generate-machine-names-with-a-dot.patch delete mode 100644 SOURCES/libvirt-conf-Expose-virDomainSCSIDriveAddressIsUsed.patch delete mode 100644 SOURCES/libvirt-conf-Fix-a-error-msg-typo-in-virDomainVideoDefValidate.patch delete mode 100644 SOURCES/libvirt-conf-Fix-check-for-chardev-source-path.patch create mode 100644 SOURCES/libvirt-conf-Implement-support-for-slices-of-disk-source.patch create mode 100644 SOURCES/libvirt-conf-Introduce-VIR_DOMAIN_TIMER_NAME_ARMVTIMER.patch delete mode 100644 SOURCES/libvirt-conf-Introduce-address-caching-for-PCI-extensions.patch delete mode 100644 SOURCES/libvirt-conf-Introduce-extension-flag-and-zPCI-member-for-PCI-address.patch delete mode 100644 SOURCES/libvirt-conf-Introduce-new-hostdev-attribute-display.patch delete mode 100644 SOURCES/libvirt-conf-Introduce-new-video-type-none.patch delete mode 100644 SOURCES/libvirt-conf-Introduce-parser-formatter-for-uid-and-fid.patch delete mode 100644 SOURCES/libvirt-conf-Introduce-virCPUDefCheckFeatures.patch delete mode 100644 SOURCES/libvirt-conf-Introduce-virDomainDefPostParseMemtune.patch delete mode 100644 SOURCES/libvirt-conf-Introduce-virDomainDefPostParseVideo-helper.patch delete mode 100644 SOURCES/libvirt-conf-Introduce-virDomainGraphicsDefHasOpenGL-helper.patch delete mode 100644 SOURCES/libvirt-conf-Introduce-virDomainVideoDefClear-helper.patch delete mode 100644 SOURCES/libvirt-conf-Move-VFIO-AP-validation-from-post-parse-to-QEMU-validation-code.patch delete mode 100644 SOURCES/libvirt-conf-Move-hugepage-XML-validation-check-out-of-qemu_command.patch delete mode 100644 SOURCES/libvirt-conf-Move-hugepages-validation-out-of-XML-parser.patch delete mode 100644 SOURCES/libvirt-conf-Parse-and-format-nested-hv-feature.patch delete mode 100644 SOURCES/libvirt-conf-Parse-and-format-the-HTM-pSeries-feature.patch delete mode 100644 SOURCES/libvirt-conf-Parse-guestfwd-channel-device-info-again.patch delete mode 100644 SOURCES/libvirt-conf-Replace-error-with-cleanup-in-virDomainHostdevDefParseXMLSubsys.patch create mode 100644 SOURCES/libvirt-conf-add-new-PCI_CONNECT-flag-AUTOASSIGN.patch create mode 100644 SOURCES/libvirt-conf-add-support-for-specifying-CPU-dies-parameter.patch create mode 100644 SOURCES/libvirt-conf-add-virtiofs-related-elements-and-attributes.patch create mode 100644 SOURCES/libvirt-conf-backup-Allow-configuration-of-names-exported-via-NBD.patch create mode 100644 SOURCES/libvirt-conf-backup-Store-incremental-backup-checkpoint-name-per-disk.patch create mode 100644 SOURCES/libvirt-conf-check-HOTPLUGGABLE-connect-flag-when-validating-a-PCI-address.patch delete mode 100644 SOURCES/libvirt-conf-correct-false-boot-order-error-during-domain-parse.patch create mode 100644 SOURCES/libvirt-conf-do-not-generate-machine-names-ending-with-a-dash.patch create mode 100644 SOURCES/libvirt-conf-domain-Remove-checking-of-return-value-of-virHashCreateFull.patch create mode 100644 SOURCES/libvirt-conf-during-PCI-hotplug-require-that-the-controller-support-hotplug.patch create mode 100644 SOURCES/libvirt-conf-new-attribute-hotplug-for-pci-controllers.patch create mode 100644 SOURCES/libvirt-conf-parse-format-teaming-subelement-of-interface.patch delete mode 100644 SOURCES/libvirt-conf-qemu-add-support-for-Hyper-V-PV-TLB-flush.patch delete mode 100644 SOURCES/libvirt-conf-qemu-add-support-for-Hyper-V-frequency-MSRs.patch delete mode 100644 SOURCES/libvirt-conf-qemu-add-support-for-Hyper-V-reenlightenment-notifications.patch create mode 100644 SOURCES/libvirt-conf-qemu-add-virtiofs-fsdriver-type.patch create mode 100644 SOURCES/libvirt-conf-qemu-s-VIR_PCI_CONNECT_HOTPLUGGABLE-VIR_PCI_CONNECT_AUTOASSIGN-g.patch create mode 100644 SOURCES/libvirt-conf-remove-unused-virCapabilitiesSetHostCPU-method.patch create mode 100644 SOURCES/libvirt-conf-rename-namespace-property-of-struct-_virStorageSourceNVMeDef.patch create mode 100644 SOURCES/libvirt-conf-simplify-logic-when-checking-for-AUTOASSIGN-PCI-addresses.patch delete mode 100644 SOURCES/libvirt-conf-use-virXMLFormatElement-in-virDomainDeviceInfoFormat.patch create mode 100644 SOURCES/libvirt-conf-use-virXMLFormatElement-in-virDomainFSDefFormat.patch delete mode 100644 SOURCES/libvirt-configure-change-HAVE_FIREWALLD-to-WITH_FIREWALLD.patch delete mode 100644 SOURCES/libvirt-configure-selectively-install-a-firewalld-libvirt-zone.patch delete mode 100644 SOURCES/libvirt-cpu-Add-support-for-stibp-x86_64-feature.patch create mode 100644 SOURCES/libvirt-cpu-Change-control-flow-in-virCPUUpdateLive.patch delete mode 100644 SOURCES/libvirt-cpu-Don-t-access-invalid-memory-in-virCPUx86Translate.patch delete mode 100644 SOURCES/libvirt-cpu-Drop-CPUID-definition-for-hv-spinlocks.patch delete mode 100644 SOURCES/libvirt-cpu-Drop-KVM_-from-hyperv-feature-macros.patch delete mode 100644 SOURCES/libvirt-cpu-Drop-unused-KVM-features.patch create mode 100644 SOURCES/libvirt-cpu-Honor-check-full-for-host-passthrough-CPUs.patch delete mode 100644 SOURCES/libvirt-cpu-Introduce-virCPUDataAddFeature.patch delete mode 100644 SOURCES/libvirt-cpu-allow-include-files-for-CPU-definition.patch delete mode 100644 SOURCES/libvirt-cpu-fix-cleanup-when-signature-parsing-fails.patch delete mode 100644 SOURCES/libvirt-cpu-push-more-parsing-logic-into-common-code.patch delete mode 100644 SOURCES/libvirt-cpu-simplify-failure-cleanup-paths.patch create mode 100644 SOURCES/libvirt-cpu.c-Check-properly-for-virCapabilitiesGetNodeInfo-retval.patch create mode 100644 SOURCES/libvirt-cpu_conf-Format-vendor_id-for-host-model-CPUs.patch delete mode 100644 SOURCES/libvirt-cpu_conf-Introduce-virCPUDefFilterFeatures.patch delete mode 100644 SOURCES/libvirt-cpu_conf-Pass-policy-to-CPU-feature-filtering-callbacks.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-Cascadelake-Server-CPU-model.patch create mode 100644 SOURCES/libvirt-cpu_map-Add-Cooperlake-x86-CPU-model.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-Icelake-CPU-models.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-TAA_NO-bit-for-IA32_ARCH_CAPABILITIES-MSR.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-TSX_CTRL-bit-for-IA32_ARCH_CAPABILITIES-MSR.patch create mode 100644 SOURCES/libvirt-cpu_map-Add-decode-element-to-x86-CPU-model-definitions.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-features-for-Icelake-CPUs.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-hex-representation-of-signatures.patch create mode 100644 SOURCES/libvirt-cpu_map-Add-more-noTSX-x86-CPU-models.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-more-signatures-for-Broadwell-CPU-models.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-more-signatures-for-Conroe-CPU-model.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-more-signatures-for-Haswell-CPU-models.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-more-signatures-for-IvyBridge-CPU-models.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-more-signatures-for-Nehalem-CPU-models.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-more-signatures-for-Penryn-CPU-model.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-more-signatures-for-SandyBridge-CPU-models.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-more-signatures-for-Skylake-Client-CPU-models.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-more-signatures-for-Westmere-CPU-model.patch create mode 100644 SOURCES/libvirt-cpu_map-Add-pschange-mc-no-bit-in-IA32_ARCH_CAPABILITIES-MSR.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-support-for-arch-capabilities-feature.patch delete mode 100644 SOURCES/libvirt-cpu_map-Add-support-for-cldemote-CPU-feature.patch delete mode 100644 SOURCES/libvirt-cpu_map-Define-md-clear-CPUID-bit.patch create mode 100644 SOURCES/libvirt-cpu_map-Distinguish-Cascadelake-Server-from-Skylake-Server.patch create mode 100644 SOURCES/libvirt-cpu_map-Distribute-x86_Cooperlake.xml.patch create mode 100644 SOURCES/libvirt-cpu_map-Don-t-use-new-noTSX-models-for-host-model-CPUs.patch delete mode 100644 SOURCES/libvirt-cpu_map-Drop-pconfig-from-Icelake-Server-CPU-model.patch delete mode 100644 SOURCES/libvirt-cpu_map-Introduce-IA32_ARCH_CAPABILITIES-MSR-features.patch delete mode 100644 SOURCES/libvirt-cpu_map-x86-Add-support-for-BFLOAT16-data-type.patch create mode 100644 SOURCES/libvirt-cpu_x86-Add-support-for-stepping-part-of-CPU-signature.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Add-support-for-storing-MSR-features-in-CPU-map.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Add-virCPUx86DataGetSignature-for-tests.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Add-x86ModelCopySignatures-helper.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Allow-multiple-signatures-for-a-CPU-model.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Do-not-cache-microcode-version.patch create mode 100644 SOURCES/libvirt-cpu_x86-Don-t-check-return-value-of-x86ModelCopy.patch create mode 100644 SOURCES/libvirt-cpu_x86-Drop-noTSX-hint-for-incompatible-CPUs.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Fix-memory-leak-virCPUx86GetHost.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Fix-placement-of-CheckFeature-functions.patch create mode 100644 SOURCES/libvirt-cpu_x86-Honor-CPU-models-decode-element.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Introduce-virCPUx86DataCmp.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Introduce-virCPUx86DataItem-container-struct.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Introduce-virCPUx86FeatureFilter-MSR.patch create mode 100644 SOURCES/libvirt-cpu_x86-Introduce-virCPUx86SignatureFromCPUID.patch create mode 100644 SOURCES/libvirt-cpu_x86-Introduce-virCPUx86SignaturesFree.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Log-decoded-CPU-model-and-signatures.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Make-sure-CPU-model-names-are-unique-in-cpu_map.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Make-x86cpuidAndBits-more-general.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Make-x86cpuidClearBits-more-general.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Make-x86cpuidMatch-more-general.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Make-x86cpuidMatchMasked-more-general.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Make-x86cpuidSetBits-more-general.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Move-CheckFeature-functions.patch create mode 100644 SOURCES/libvirt-cpu_x86-Move-and-rename-x86FormatSignatures.patch create mode 100644 SOURCES/libvirt-cpu_x86-Move-and-rename-x86ModelCopySignatures.patch create mode 100644 SOURCES/libvirt-cpu_x86-Move-and-rename-x86ModelHasSignature.patch create mode 100644 SOURCES/libvirt-cpu_x86-Prepare-virCPUx86UpdateLive-for-easier-extension.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Read-CPU-features-from-IA32_ARCH_CAPABILITIES-MSR.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Rename-virCPUx86CPUIDSorter.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Rename-virCPUx86DataAddCPUID.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Rename-virCPUx86DataAddCPUIDInt.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Rename-virCPUx86DataItem-variables.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Rename-virCPUx86Vendor.cpuid.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Rename-virCPUx86VendorToCPUID.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Rename-x86DataCpuid.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Rename-x86DataCpuidNext-function.patch create mode 100644 SOURCES/libvirt-cpu_x86-Replace-32b-signatures-in-virCPUx86Model-with-a-struct.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Require-cpuid-within-feature-in-CPU-map.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Separate-ancestor-model-parsing-from-x86ModelParse.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Separate-feature-list-parsing-from-x86ModelParse.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Separate-signature-parsing-from-x86ModelParse.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Separate-vendor-parsing-from-x86ModelParse.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Simplify-x86DataAdd.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Store-CPU-signature-in-an-array.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Store-virCPUx86DataItem-content-in-union.patch delete mode 100644 SOURCES/libvirt-cpu_x86-Turn-virCPUx86DataIteratorInit-into-a-function.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86Baseline.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86CheckFeature.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86Compare.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86CopyMigratable.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86DataParse.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86ExpandFeatures.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86GetHost.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86LoadMap.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86Translate.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86Update.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86UpdateLive.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-x86Compute.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-x86DataToCPU.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-x86Decode.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-x86Encode.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-x86EncodePolicy.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-x86FeatureParse.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-x86ModelFromCPU.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-x86ModelParse.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-x86UpdateHostModel.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-g_auto-in-x86VendorParse.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-glib-allocation-for-virCPU-x86-Data.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-glib-allocation-for-virCPUx86Feature.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-glib-allocation-for-virCPUx86Map.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-glib-allocation-for-virCPUx86Model.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-glib-allocation-for-virCPUx86Vendor.patch create mode 100644 SOURCES/libvirt-cpu_x86-Use-glib-allocation-in-virCPUx86GetModels.patch create mode 100644 SOURCES/libvirt-cputest-Add-data-for-Cooperlake-CPU.patch delete mode 100644 SOURCES/libvirt-cputest-Add-data-for-Intel-R-Core-TM-i7-7600U.patch create mode 100644 SOURCES/libvirt-cputest-Add-data-for-Intel-R-Core-TM-i7-8550U-CPU-without-TSX.patch delete mode 100644 SOURCES/libvirt-cputest-Add-data-for-Intel-R-Core-TM-i7-8700.patch delete mode 100644 SOURCES/libvirt-cputest-Add-data-for-Intel-R-Xeon-R-CPU-E3-1225-v5.patch delete mode 100644 SOURCES/libvirt-cputest-Add-data-for-Intel-R-Xeon-R-CPU-E5-2630-v4.patch delete mode 100644 SOURCES/libvirt-cputest-Add-data-for-Intel-R-Xeon-R-CPU-E5-2650.patch delete mode 100644 SOURCES/libvirt-cputest-Add-data-for-Intel-R-Xeon-R-CPU-E7540.patch rename SOURCES/{libvirt-cputest-Add-data-for-Ice-Lake-Server-CPU.patch => libvirt-cputest-Add-data-for-Intel-R-Xeon-R-Gold-6130-CPU.patch} (78%) rename SOURCES/{libvirt-cputest-Add-data-for-Intel-R-Xeon-R-Platinum-8268-CPU.patch => libvirt-cputest-Add-data-for-Intel-R-Xeon-R-Platinum-9242-CPU.patch} (51%) delete mode 100644 SOURCES/libvirt-cputest-Add-support-for-MSR-features-to-cpu-parse.sh.patch delete mode 100644 SOURCES/libvirt-cputest-Test-CPU-signatures.patch delete mode 100644 SOURCES/libvirt-daemon-Register-secret-driver-before-storage-driver.patch create mode 100644 SOURCES/libvirt-docs-Describe-protected-virtualization-guest-setup.patch create mode 100644 SOURCES/libvirt-docs-Document-the-new-slices-sub-element-of-disk-s-source.patch delete mode 100644 SOURCES/libvirt-docs-Drop-dev-net-tun-from-the-list-of-shared-devices.patch delete mode 100644 SOURCES/libvirt-docs-Enhance-polkit-documentation-to-describe-secondary-connection.patch create mode 100644 SOURCES/libvirt-docs-List-the-armvtimer-timer-among-all-others.patch delete mode 100644 SOURCES/libvirt-docs-Rephrase-the-mediated-devices-hostdev-section-a-bit.patch create mode 100644 SOURCES/libvirt-docs-Update-AMD-launch-secure-description.patch create mode 100644 SOURCES/libvirt-docs-add-virtiofs-kbase.patch create mode 100644 SOURCES/libvirt-docs-document-interface-subelement-teaming.patch create mode 100644 SOURCES/libvirt-docs-domaincaps-Mention-VIR_DOMAIN_UNDEFINE_CHECKPOINTS_METADATA.patch create mode 100644 SOURCES/libvirt-docs-fix-a-typo.patch create mode 100644 SOURCES/libvirt-docs-formatdomain-Close-source-on-one-of-disk-examples.patch create mode 100644 SOURCES/libvirt-docs-formatdomain-Mention-missing-protocols.patch create mode 100644 SOURCES/libvirt-docs-mention-hotplug-off-in-news.xml.patch create mode 100644 SOURCES/libvirt-docs-reduce-excessive-spacing-in-ToC-for-RST-files.patch create mode 100644 SOURCES/libvirt-docs-render-class-literal-with-monospace-font.patch delete mode 100644 SOURCES/libvirt-docs-schema-Add-missing-alias-to-vsock-device.patch delete mode 100644 SOURCES/libvirt-docs-schemas-Decouple-the-virtio-options-from-each-other.patch delete mode 100644 SOURCES/libvirt-domain_nwfilter-Return-early-if-net-has-no-name-in-virDomainConfNWFilterTeardownImpl.patch delete mode 100644 SOURCES/libvirt-esx-storage-Fix-typo-lsilogic-lsiLogic.patch delete mode 100644 SOURCES/libvirt-examples-Add-clean-traffic-gateway-into-nwfilters.patch create mode 100644 SOURCES/libvirt-hostcpu-add-support-for-reporting-die_id-in-NUMA-topology.patch delete mode 100644 SOURCES/libvirt-internal-introduce-a-family-of-NULLSTR-macros.patch create mode 100644 SOURCES/libvirt-kbase-Add-document-outlining-internals-of-incremental-backup-in-qemu.patch create mode 100644 SOURCES/libvirt-kbase-backing_chains-Add-steps-how-to-securely-probe-image-format.patch create mode 100644 SOURCES/libvirt-kbase-backing_chains-Clarify-some-aspects-of-image-probing.patch delete mode 100644 SOURCES/libvirt-lib-Drop-UDEVSETTLE.patch delete mode 100644 SOURCES/libvirt-locking-restrict-sockets-to-mode-0600.patch delete mode 100644 SOURCES/libvirt-logging-restrict-sockets-to-mode-0600.patch delete mode 100644 SOURCES/libvirt-lxc-Use-virCgroupGetMemoryStat.patch delete mode 100644 SOURCES/libvirt-m4-Drop-needless-string-checks.patch delete mode 100644 SOURCES/libvirt-m4-Provide-default-value-fore-UDEVADM.patch delete mode 100644 SOURCES/libvirt-network-allow-configuring-firewalld-zone-for-virtual-network-bridge-device.patch delete mode 100644 SOURCES/libvirt-network-explicitly-allow-icmp-icmpv6-in-libvirt-zonefile.patch delete mode 100644 SOURCES/libvirt-network-set-firewalld-zone-of-bridges-to-libvirt-zone-when-appropriate.patch delete mode 100644 SOURCES/libvirt-networkGetDHCPLeases-Don-t-always-report-error-if-unable-to-read-leases-file.patch create mode 100644 SOURCES/libvirt-nodedev-fix-race-in-API-usage-vs-initial-device-enumeration.patch delete mode 100644 SOURCES/libvirt-nwfilter-Resolve-SEGV-for-NWFilter-Snoop-processing.patch delete mode 100644 SOURCES/libvirt-nwfilter-fix-adding-std-MAC-and-IP-values-to-filter-binding.patch delete mode 100644 SOURCES/libvirt-process-wait-longer-5-30s-on-hard-shutdown.patch delete mode 100644 SOURCES/libvirt-process-wait-longer-on-kill-per-assigned-Hostdev.patch delete mode 100644 SOURCES/libvirt-qemu-Add-APIs-for-translating-CPU-features.patch delete mode 100644 SOURCES/libvirt-qemu-Add-capability-for-the-HTM-pSeries-feature.patch delete mode 100644 SOURCES/libvirt-qemu-Add-ccw-support-for-vhost-vsock.patch delete mode 100644 SOURCES/libvirt-qemu-Add-check-for-whether-KVM-nesting-is-enabled.patch delete mode 100644 SOURCES/libvirt-qemu-Add-hotpluging-support-for-PCI-devices-on-S390-guests.patch create mode 100644 SOURCES/libvirt-qemu-Add-support-for-slices-of-type-storage.patch create mode 100644 SOURCES/libvirt-qemu-Add-the-QEMU_CAPS_CPU_KVM_NO_ADJVTIME-capability.patch delete mode 100644 SOURCES/libvirt-qemu-Add-type-filter-to-qemuMonitorJSONParsePropsList.patch delete mode 100644 SOURCES/libvirt-qemu-Add-zPCI-address-definition-check.patch delete mode 100644 SOURCES/libvirt-qemu-Allow-creating-ppc64-guests-with-graphics-and-no-USB-mouse.patch delete mode 100644 SOURCES/libvirt-qemu-Auto-add-pci-root-for-s390-s390x-guests.patch delete mode 100644 SOURCES/libvirt-qemu-Avoid-duplicate-resume-events-and-state-changes.patch delete mode 100644 SOURCES/libvirt-qemu-Avoid-probing-non-native-binaries-all-the-time.patch create mode 100644 SOURCES/libvirt-qemu-Check-if-AMD-secure-guest-support-is-enabled.patch create mode 100644 SOURCES/libvirt-qemu-Check-if-s390-secure-guest-support-is-enabled.patch delete mode 100644 SOURCES/libvirt-qemu-Clarify-QEMU_CAPS_KVM.patch create mode 100644 SOURCES/libvirt-qemu-Create-multipath-targets-for-PRs.patch delete mode 100644 SOURCES/libvirt-qemu-Don-t-cache-microcode-version.patch delete mode 100644 SOURCES/libvirt-qemu-Don-t-check-for-dev-kvm-presence.patch create mode 100644 SOURCES/libvirt-qemu-Don-t-crash-when-getting-targets-for-a-multipath.patch create mode 100644 SOURCES/libvirt-qemu-Don-t-emit-SUSPENDED_POSTCOPY-event-on-destination.patch delete mode 100644 SOURCES/libvirt-qemu-Don-t-ignore-resume-events.patch create mode 100644 SOURCES/libvirt-qemu-Don-t-store-disk-alias-in-qemuAgentDiskInfo.patch create mode 100644 SOURCES/libvirt-qemu-Don-t-take-double-pointer-in-qemuDomainSecretInfoFree.patch delete mode 100644 SOURCES/libvirt-qemu-Don-t-use-full-CPU-model-expansion.patch delete mode 100644 SOURCES/libvirt-qemu-Don-t-use-mem-prealloc-among-with-.prealloc-yes.patch delete mode 100644 SOURCES/libvirt-qemu-Drop-MSR-features-from-host-model-with-old-QEMU.patch delete mode 100644 SOURCES/libvirt-qemu-Drop-QEMU_CAPS_ENABLE_KVM.patch delete mode 100644 SOURCES/libvirt-qemu-Drop-cleanup-label-from-qemuProcessInitCpuAffinity.patch delete mode 100644 SOURCES/libvirt-qemu-Drop-disabled-CPU-features-unknown-to-QEMU.patch delete mode 100644 SOURCES/libvirt-qemu-Drop-duplicated-code-from-qemuDomainDefValidateFeatures.patch delete mode 100644 SOURCES/libvirt-qemu-Drop-user-prefix-for-guestfwd-netdev.patch delete mode 100644 SOURCES/libvirt-qemu-Enable-PCI-multi-bus-for-S390-guests.patch delete mode 100644 SOURCES/libvirt-qemu-Exempt-video-model-none-from-getting-a-PCI-address-on-Q35.patch delete mode 100644 SOURCES/libvirt-qemu-Extract-MDEV-VFIO-PCI-validation-code-into-a-separate-helper.patch delete mode 100644 SOURCES/libvirt-qemu-Fetch-pr-helper-process-info-on-reconnect.patch delete mode 100644 SOURCES/libvirt-qemu-Filter-non-SCSI-hostdevs-in-qemuHostdevPrepareSCSIDevices.patch delete mode 100644 SOURCES/libvirt-qemu-Fix-ATTRIBUTE_NONNULL-for-qemuMonitorAddObject.patch delete mode 100644 SOURCES/libvirt-qemu-Fix-KVM-features-with-QEMU-4.1.patch delete mode 100644 SOURCES/libvirt-qemu-Fix-NULL-pointer-access-in-qemuProcessInitCpuAffinity.patch delete mode 100644 SOURCES/libvirt-qemu-Fix-NULL-ptr-dereference-caused-by-qemuDomainDefFormatBufInternal.patch delete mode 100644 SOURCES/libvirt-qemu-Fix-hyperv-features-with-QEMU-4.1.patch delete mode 100644 SOURCES/libvirt-qemu-Fix-leak-in-qemuProcessInitCpuAffinity.patch delete mode 100644 SOURCES/libvirt-qemu-Fix-post-copy-migration-on-the-source.patch delete mode 100644 SOURCES/libvirt-qemu-Fix-probing-of-AMD-SEV-support.patch delete mode 100644 SOURCES/libvirt-qemu-Fix-qemuProcessInitCpuAffinity.patch delete mode 100644 SOURCES/libvirt-qemu-Fix-setting-global_period-cputune-element.patch create mode 100644 SOURCES/libvirt-qemu-Fix-value-of-device-argument-for-block-commit.patch create mode 100644 SOURCES/libvirt-qemu-Fix-value-of-device-argument-for-blockdev-mirror.patch delete mode 100644 SOURCES/libvirt-qemu-Forbid-MSR-features-with-old-QEMU.patch delete mode 100644 SOURCES/libvirt-qemu-Format-nested-hv-feature-on-the-command-line.patch delete mode 100644 SOURCES/libvirt-qemu-Format-the-HTM-pSeries-feature.patch create mode 100644 SOURCES/libvirt-qemu-Format-the-armvtimer-timer-on-the-command-line.patch delete mode 100644 SOURCES/libvirt-qemu-Generate-and-use-zPCI-device-in-QEMU-command-line.patch create mode 100644 SOURCES/libvirt-qemu-Handle-hotplug-and-commandline-for-secret-objects-for-http-cookies.patch delete mode 100644 SOURCES/libvirt-qemu-Ignore-nwfilter-binding-instantiation-issues-during-reconnect.patch delete mode 100644 SOURCES/libvirt-qemu-Introduce-QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV.patch delete mode 100644 SOURCES/libvirt-qemu-Introduce-a-new-graphics-display-type-headless.patch create mode 100644 SOURCES/libvirt-qemu-Introduce-another-helper-for-creating-alias-for-a-secret-object.patch delete mode 100644 SOURCES/libvirt-qemu-Introduce-generic-qemuMonitorGetGuestCPU.patch delete mode 100644 SOURCES/libvirt-qemu-Introduce-zPCI-capability.patch delete mode 100644 SOURCES/libvirt-qemu-Make-qemuMonitorGetGuestCPU-usable-on-x86-only.patch delete mode 100644 SOURCES/libvirt-qemu-Map-running-reason-to-resume-event-detail.patch delete mode 100644 SOURCES/libvirt-qemu-Pass-running-reason-to-RESUME-event-handler.patch create mode 100644 SOURCES/libvirt-qemu-Pass-through-arguments-of-ssh-block-driver-used-by-libguestfs.patch delete mode 100644 SOURCES/libvirt-qemu-Prefer-dashes-for-hyperv-features.patch delete mode 100644 SOURCES/libvirt-qemu-Probe-for-max-x86_64-cpu-type.patch delete mode 100644 SOURCES/libvirt-qemu-Probe-for-unavailable-features-CPU-property.patch delete mode 100644 SOURCES/libvirt-qemu-Probe-host-CPU-after-capabilities.patch delete mode 100644 SOURCES/libvirt-qemu-Properly-report-VIR_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT.patch create mode 100644 SOURCES/libvirt-qemu-Refuse-to-use-ps2-on-machines-that-do-not-have-this-bus.patch delete mode 100644 SOURCES/libvirt-qemu-Remove-duplicated-qemuAgentCheckError.patch delete mode 100644 SOURCES/libvirt-qemu-Remove-unused-bypassSecurityDriver-from-qemuOpenFileAs.patch delete mode 100644 SOURCES/libvirt-qemu-Report-more-appropriate-running-reasons.patch delete mode 100644 SOURCES/libvirt-qemu-Rework-setting-process-affinity.patch create mode 100644 SOURCES/libvirt-qemu-Rewrite-bitmap-handling-for-block-commit.patch create mode 100644 SOURCES/libvirt-qemu-Rewrite-bitmap-handling-for-block-copy.patch delete mode 100644 SOURCES/libvirt-qemu-Set-identity-for-the-reconnect-all-thread.patch delete mode 100644 SOURCES/libvirt-qemu-Set-up-EMULATOR-thread-and-cpuset.mems-before-exec-ing-qemu.patch create mode 100644 SOURCES/libvirt-qemu-Split-out-initialization-of-secrets-for-iscsi-hostdevs.patch create mode 100644 SOURCES/libvirt-qemu-Stop-domain-on-failed-restore.patch create mode 100644 SOURCES/libvirt-qemu-Tell-secdrivers-which-images-are-top-parent.patch delete mode 100644 SOURCES/libvirt-qemu-Translate-feature-names-from-query-cpu-model-expansion.patch delete mode 100644 SOURCES/libvirt-qemu-Translate-features-in-virQEMUCapsGetCPUFeatures.patch create mode 100644 SOURCES/libvirt-qemu-Use-g_autoptr-for-qemuDomainSaveCookie.patch create mode 100644 SOURCES/libvirt-qemu-Use-switch-statement-in-qemuBuildCpuCommandLine.patch delete mode 100644 SOURCES/libvirt-qemu-Use-tmpChr-in-qemuDomainDetachChrDevice-to-build-device-string.patch create mode 100644 SOURCES/libvirt-qemu-Validate-configuration-for-the-armvtimer-timer.patch delete mode 100644 SOURCES/libvirt-qemu-Wire-up-PR_MANAGER_STATUS_CHANGED-event.patch create mode 100644 SOURCES/libvirt-qemu-add-QEMU_CAPS_DEVICE_VHOST_USER_FS.patch create mode 100644 SOURCES/libvirt-qemu-add-QEMU_CAPS_STORAGE_WERROR.patch create mode 100644 SOURCES/libvirt-qemu-add-capabilities-flag-for-failover-feature.patch create mode 100644 SOURCES/libvirt-qemu-add-code-for-handling-virtiofsd.patch create mode 100644 SOURCES/libvirt-qemu-add-support-for-specifying-CPU-dies-topology-parameter.patch delete mode 100644 SOURCES/libvirt-qemu-add-vfio-ap-capability.patch create mode 100644 SOURCES/libvirt-qemu-add-virtiofsd_debug-to-qemu.conf.patch create mode 100644 SOURCES/libvirt-qemu-add-wait-unplug-to-qemu-migration-status-enum.patch delete mode 100644 SOURCES/libvirt-qemu-address-Handle-all-the-video-devices-within-a-single-loop.patch create mode 100644 SOURCES/libvirt-qemu-allow-migration-with-assigned-PCI-hostdev-if-teaming-is-set.patch create mode 100644 SOURCES/libvirt-qemu-avoid-launching-non-x86-guests-with-APIC-EOI-setting.patch create mode 100644 SOURCES/libvirt-qemu-backup-Fix-backup-of-disk-skipped-in-an-intermediate-checkpoint.patch create mode 100644 SOURCES/libvirt-qemu-backup-Fix-handling-of-backing-store-for-backup-target-images.patch create mode 100644 SOURCES/libvirt-qemu-backup-Implement-support-for-backup-disk-bitmap-name-configuration.patch create mode 100644 SOURCES/libvirt-qemu-backup-Implement-support-for-backup-disk-export-name-configuration.patch create mode 100644 SOURCES/libvirt-qemu-backup-Initialize-store-source-properly-and-just-once.patch create mode 100644 SOURCES/libvirt-qemu-backup-Move-fetching-of-checkpoint-list-for-incremental-backup.patch create mode 100644 SOURCES/libvirt-qemu-backup-Rewrite-backup-bitmap-handling-to-the-new-bitmap-semantics.patch create mode 100644 SOURCES/libvirt-qemu-backup-Split-up-code-traversing-checkpoint-list-looking-for-bitmaps.patch create mode 100644 SOURCES/libvirt-qemu-block-Add-support-for-HTTP-cookies.patch create mode 100644 SOURCES/libvirt-qemu-block-Add-universal-helper-for-merging-dirty-bitmaps-for-all-scenarios.patch create mode 100644 SOURCES/libvirt-qemu-block-Add-validator-for-bitmap-chains-accross-backing-chains.patch create mode 100644 SOURCES/libvirt-qemu-block-Don-t-skip-creation-of-luks-formatted-images.patch create mode 100644 SOURCES/libvirt-qemu-block-Extract-calls-of-qemuBlockGetNamedNodeData-into-a-helper-function.patch create mode 100644 SOURCES/libvirt-qemu-block-Extract-formatting-of-cookie-string.patch create mode 100644 SOURCES/libvirt-qemu-block-Implement-helpers-for-dealing-with-bitmaps-during-block-commit.patch create mode 100644 SOURCES/libvirt-qemu-block-Implement-readahead-and-timeout-properties-for-curl-driver.patch create mode 100644 SOURCES/libvirt-qemu-block-Implement-ssl-verification-configuration.patch create mode 100644 SOURCES/libvirt-qemu-block-Introduce-function-to-calculate-bitmap-handling-for-block-copy.patch create mode 100644 SOURCES/libvirt-qemu-block-Properly-format-storage-slice-into-backing-store-strings.patch create mode 100644 SOURCES/libvirt-qemu-block-Remove-active-write-bitmap-even-if-there-are-no-bitmaps-to-merge.patch create mode 100644 SOURCES/libvirt-qemu-block-Support-VIR_DOMAIN_BLOCK_COMMIT-PULL-REBASE_RELATIVE-with-blockdev.patch create mode 100644 SOURCES/libvirt-qemu-block-forbid-creation-of-storage-sources-with-slice.patch create mode 100644 SOURCES/libvirt-qemu-block-implement-helpers-for-blockdev-reopen.patch create mode 100644 SOURCES/libvirt-qemu-blockcopy-Actually-unplug-unused-images-when-mirror-job-fails-to-start.patch create mode 100644 SOURCES/libvirt-qemu-blockcopy-Allow-copy-of-read-only-disks-with-blockdev.patch create mode 100644 SOURCES/libvirt-qemu-blockcopy-Allow-late-opening-of-the-backing-chain-of-a-shallow-copy.patch create mode 100644 SOURCES/libvirt-qemu-blockjob-Actually-delete-temporary-bitmap-on-failed-active-commit.patch create mode 100644 SOURCES/libvirt-qemu-blockjob-Don-t-base-bitmap-handling-of-active-layer-block-commit-on-QEMU_CAPS_BLOCKDEV_REOPEN.patch create mode 100644 SOURCES/libvirt-qemu-blockjob-Handle-bitmaps-after-finish-of-normal-block-commit.patch create mode 100644 SOURCES/libvirt-qemu-blockjob-Re-enable-bitmaps-after-failed-block-commit.patch create mode 100644 SOURCES/libvirt-qemu-blockjob-Remove-disabledBitmapsBase-field-from-commit-job-private-data.patch create mode 100644 SOURCES/libvirt-qemu-blockjob-Store-flags-for-all-the-block-job-types.patch create mode 100644 SOURCES/libvirt-qemu-blockjob-Store-jobflags-with-block-job-data.patch create mode 100644 SOURCES/libvirt-qemu-blockjob-Store-list-of-bitmaps-disabled-prior-to-commit.patch create mode 100644 SOURCES/libvirt-qemu-build-vhost-user-fs-device-command-line.patch create mode 100644 SOURCES/libvirt-qemu-capabilities-Add-QEMU_CAPS_BLOCKDEV_REOPEN.patch delete mode 100644 SOURCES/libvirt-qemu-capabilities-Add-capability-for-werror-rerror-for-usb-device-frontend.patch create mode 100644 SOURCES/libvirt-qemu-capabilities-Introduce-QEMU_CAPS_BLOCKDEV_SNAPSHOT_ALLOW_WRITE_ONLY.patch delete mode 100644 SOURCES/libvirt-qemu-caps-Add-vfio-pci.display-capability.patch delete mode 100644 SOURCES/libvirt-qemu-caps-Don-t-try-to-ask-for-CAP_DAC_OVERRIDE-if-non-root.patch delete mode 100644 SOURCES/libvirt-qemu-caps-Format-SEV-platform-data-into-qemuCaps-cache.patch delete mode 100644 SOURCES/libvirt-qemu-caps-Introduce-a-capability-for-egl-headless.patch delete mode 100644 SOURCES/libvirt-qemu-caps-Use-CAP_DAC_OVERRIDE-for-probing-to-avoid-permission-issues.patch delete mode 100644 SOURCES/libvirt-qemu-cgroup-Expose-dev-sev-only-to-domains-that-require-SEV.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-Allow-checkpoint-redefine-for-offline-VMs.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-Don-t-chain-bitmaps-for-checkpoints.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-Don-t-merge-checkpoints-during-deletion.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-Extract-calculation-of-bitmap-merging-for-checkpoint-deletion.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-Introduce-helper-to-find-checkpoint-disk-definition-in-parents.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-Introduce-support-for-deleting-checkpoints-accross-snapshots.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-Store-whether-deleted-checkpoint-is-current-in-a-variable.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-Track-and-relabel-images-for-bitmap-merging.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-Use-disk-definition-directly-when-creating-checkpoint.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-rename-disk-chkdisk-in-qemuCheckpointAddActions.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-rename-disk-chkdisk-in-qemuCheckpointDiscardBitmaps.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-split-out-checkpoint-deletion-bitmaps.patch create mode 100644 SOURCES/libvirt-qemu-checkpoint-tolerate-missing-disks-on-checkpoint-deletion.patch delete mode 100644 SOURCES/libvirt-qemu-command-Don-t-format-image-properties-for-empty-drive.patch delete mode 100644 SOURCES/libvirt-qemu-command-Don-t-skip-readonly-and-throttling-info-for-empty-drive.patch delete mode 100644 SOURCES/libvirt-qemu-command-Enable-formatting-vfio-pci.display-option-onto-cmdline.patch delete mode 100644 SOURCES/libvirt-qemu-command-Move-graphics-iteration-to-its-own-function.patch delete mode 100644 SOURCES/libvirt-qemu-conf-Remove-dev-sev-from-the-default-cgroup-device-acl-list.patch create mode 100644 SOURCES/libvirt-qemu-conf-set-HOTPLUGGABLE-connect-flag-during-PCI-address-set-init.patch delete mode 100644 SOURCES/libvirt-qemu-consolidate-parameters-of-qemuBuildChrChardevStr-into-flags.patch create mode 100644 SOURCES/libvirt-qemu-do-not-revert-to-NULL-bandwidth.patch delete mode 100644 SOURCES/libvirt-qemu-domain-Add-dev-sev-into-the-domain-mount-namespace-selectively.patch create mode 100644 SOURCES/libvirt-qemu-domain-Convert-detected-iso-image-format-into-raw.patch create mode 100644 SOURCES/libvirt-qemu-domain-Extract-code-to-determine-topmost-nodename-to-qemuDomainDiskGetTopNodename.patch create mode 100644 SOURCES/libvirt-qemu-domain-Extract-formatting-of-commit-blockjob-data-into-a-function.patch create mode 100644 SOURCES/libvirt-qemu-domain-Extract-parsing-of-commit-blockjob-data-into-a-function.patch create mode 100644 SOURCES/libvirt-qemu-domain-Refactor-formatting-of-node-names-into-status-XML.patch create mode 100644 SOURCES/libvirt-qemu-domain-Remove-unused-qemuDomainDiskNodeFormatLookup.patch delete mode 100644 SOURCES/libvirt-qemu-domain-Simplify-non-VFIO-memLockLimit-calculation-for-PPC64.patch create mode 100644 SOURCES/libvirt-qemu-domain-Store-data-for-secret-object-representing-http-cookies.patch create mode 100644 SOURCES/libvirt-qemu-domain-Store-nodenames-of-slice-in-status-XML.patch create mode 100644 SOURCES/libvirt-qemu-don-t-access-vmdef-within-qemu_agent.c.patch delete mode 100644 SOURCES/libvirt-qemu-don-t-use-chardev-FD-passing-for-vhostuser-backend.patch delete mode 100644 SOURCES/libvirt-qemu-don-t-use-chardev-FD-passing-with-standalone-args.patch create mode 100644 SOURCES/libvirt-qemu-eliminate-ret-in-qemuExtDevicesStart.patch create mode 100644 SOURCES/libvirt-qemu-end-the-agent-job-in-qemuDomainSetTimeAgent.patch delete mode 100644 SOURCES/libvirt-qemu-fix-UNIX-socket-chardevs-operating-in-client-mode.patch create mode 100644 SOURCES/libvirt-qemu-fix-detection-of-vCPU-pids-when-multiple-dies-are-present.patch delete mode 100644 SOURCES/libvirt-qemu-fix-up-permissions-for-pre-created-UNIX-sockets.patch create mode 100644 SOURCES/libvirt-qemu-fixing-auto-detecting-binary-in-domain-capabilities.patch create mode 100644 SOURCES/libvirt-qemu-forbid-migration-with-vhost-user-fs-device.patch create mode 100644 SOURCES/libvirt-qemu-hook-up-pcie-root-port-hotplug-off-option.patch delete mode 100644 SOURCES/libvirt-qemu-hotplug-Do-not-try-to-add-secret-object-for-TLS-if-it-does-not-exist.patch delete mode 100644 SOURCES/libvirt-qemu-hotplug-Don-t-access-srcPriv-when-it-s-not-allocated.patch delete mode 100644 SOURCES/libvirt-qemu-hotplug-Fix-asynchronous-unplug-of-shmem.patch create mode 100644 SOURCES/libvirt-qemu-hotplug-Fix-handling-of-the-copy-on-read-layer-with-blockdev.patch delete mode 100644 SOURCES/libvirt-qemu-hotplug-don-t-overwrite-error-message-in-qemuDomainAttachNetDevice.patch delete mode 100644 SOURCES/libvirt-qemu-hotplug-report-error-when-changing-rom-enabled-attr-for-net-iface.patch delete mode 100644 SOURCES/libvirt-qemu-mdev-Use-vfio-pci-display-property-only-with-vfio-pci-mdevs.patch create mode 100644 SOURCES/libvirt-qemu-monitor-Add-handler-for-blockdev-reopen.patch create mode 100644 SOURCES/libvirt-qemu-monitor-Improve-error-message-when-QEMU-reply-is-too-large.patch delete mode 100644 SOURCES/libvirt-qemu-monitor-Make-qemuMonitorAddObject-more-robust-against-programming-errors.patch delete mode 100644 SOURCES/libvirt-qemu-monitor-Remove-qemuMonitorJSONExtractCPUArchInfo-wrapper.patch delete mode 100644 SOURCES/libvirt-qemu-monitor-Use-target-instead-of-arch-in-reply-of-query-cpus-fast.patch rename SOURCES/{libvirt-tests-Add-QEMU-caps-data-for-future-4.1.0.patch => libvirt-qemu-new-capabilities-flag-pcie-root-port.hotplug.patch} (55%) create mode 100644 SOURCES/libvirt-qemu-only-stop-external-devices-after-the-domain.patch create mode 100644 SOURCES/libvirt-qemu-pass-virDomainObjPtr-to-qemuExtDevicesSetupCgroup.patch create mode 100644 SOURCES/libvirt-qemu-preserve-error-on-bandwidth-rollback.patch create mode 100644 SOURCES/libvirt-qemu-prevent-attempts-to-detach-a-device-on-a-controller-with-hotplug-off.patch delete mode 100644 SOURCES/libvirt-qemu-process-SEV-Assume-libDir-to-be-the-directory-to-create-files-in.patch delete mode 100644 SOURCES/libvirt-qemu-process-SEV-Relabel-guest-owner-s-SEV-files-created-before-start.patch create mode 100644 SOURCES/libvirt-qemu-put-virtiofsd-in-the-emulator-cgroup.patch delete mode 100644 SOURCES/libvirt-qemu-qemuBuildHostdevCommandLine-Use-a-helper-variable-mdevsrc.patch delete mode 100644 SOURCES/libvirt-qemu-remove-chardevStdioLogd-param-from-vhostuser-code-path.patch create mode 100644 SOURCES/libvirt-qemu-remove-qemuDomainObjBegin-EndJobWithAgent.patch create mode 100644 SOURCES/libvirt-qemu-rename-qemuAgentGetFSInfoInternalDisk.patch delete mode 100644 SOURCES/libvirt-qemu-require-reply-from-guest-agent-in-qemuAgentGetInterfaces.patch create mode 100644 SOURCES/libvirt-qemu-snapshot-Allow-snapshots-of-read-only-disks-when-we-can-create-them.patch create mode 100644 SOURCES/libvirt-qemu-snapshot-Always-rewrite-backingStore-data-when-reusing-existing-images.patch create mode 100644 SOURCES/libvirt-qemu-snapshot-Prevent-too-nested-domain-XML-when-doing-inactive-snapshot.patch create mode 100644 SOURCES/libvirt-qemu-snapshot-go-through-cleanup-on-error.patch create mode 100644 SOURCES/libvirt-qemu-store-complete-agent-filesystem-information.patch create mode 100644 SOURCES/libvirt-qemu-support-interface-teaming-functionality.patch create mode 100644 SOURCES/libvirt-qemu-use-QEMU_CAPS_STORAGE_WERROR-for-disk-error-attributes.patch create mode 100644 SOURCES/libvirt-qemu-use-def-instead-of-vm-def-in-qemuExtDevicesStart.patch create mode 100644 SOURCES/libvirt-qemu-use-the-vhost-user-schemas-to-find-binary.patch delete mode 100644 SOURCES/libvirt-qemu-validate-Enforce-compile-time-switch-type-checking-for-videos.patch create mode 100644 SOURCES/libvirt-qemu-validate-virtiofs-filesystems.patch delete mode 100644 SOURCES/libvirt-qemu-vfio-ap-device-support.patch create mode 100644 SOURCES/libvirt-qemu-virtiofs-shorten-pid-filename.patch create mode 100644 SOURCES/libvirt-qemu-virtiofs-shorten-socket-filename.patch delete mode 100644 SOURCES/libvirt-qemu-vnc-switch-to-tls-creds-x509.patch create mode 100644 SOURCES/libvirt-qemuAgentFSInfoFormatParams-Remove-pointless-returned-value.patch create mode 100644 SOURCES/libvirt-qemuBackupBegin-Don-t-leak-def-on-early-failures.patch create mode 100644 SOURCES/libvirt-qemuBackupBegin-Fix-monitor-access-when-rolling-back-due-to-failure.patch create mode 100644 SOURCES/libvirt-qemuBackupDiskDataCleanupOne-Don-t-exit-early-when-the-job-has-started.patch create mode 100644 SOURCES/libvirt-qemuBackupDiskDataCleanupOne-Free-incrementalBitmap.patch create mode 100644 SOURCES/libvirt-qemuBackupDiskStarted-Fix-improper-dereference-of-array.patch create mode 100644 SOURCES/libvirt-qemuBlockBitmapChainIsValid-Adjust-to-new-semantics-of-bitmaps.patch create mode 100644 SOURCES/libvirt-qemuBlockBitmapsHandleCommitFinish-Use-proper-variable-to-iterate.patch create mode 100644 SOURCES/libvirt-qemuBlockBitmapsHandleCommitStart-Fix-allocation-of-string-list.patch create mode 100644 SOURCES/libvirt-qemuBlockGetBackingStoreString-Add-extra-wrapping-object-to-JSON-strings.patch create mode 100644 SOURCES/libvirt-qemuBlockGetBackingStoreString-Add-pretty-argument.patch create mode 100644 SOURCES/libvirt-qemuBlockGetBackingStoreString-Properly-handle-http-s-with-cookies-and-others.patch create mode 100644 SOURCES/libvirt-qemuBlockGetBackingStoreString-Remove-ret-variable.patch create mode 100644 SOURCES/libvirt-qemuBlockJobDiskNewCommit-Propagate-disabledBitmapsBase.patch create mode 100644 SOURCES/libvirt-qemuBlockStorageSourceCreateFormat-Force-write-access-when-formatting-images.patch create mode 100644 SOURCES/libvirt-qemuBlockStorageSourceDetachPrepare-Get-rid-of-cleanup-section.patch create mode 100644 SOURCES/libvirt-qemuBlockStorageSourceGetBackendProps-Report-errors-on-all-switch-cases.patch create mode 100644 SOURCES/libvirt-qemuBlockStorageSourceGetFormatRawProps-format-offset-and-size-for-slice.patch create mode 100644 SOURCES/libvirt-qemuBlockStorageSourceGetURI-Pass-through-query-component.patch delete mode 100644 SOURCES/libvirt-qemuBuildMemoryBackendProps-Pass-priv-instead-of-its-individual-members.patch create mode 100644 SOURCES/libvirt-qemuCheckpointCreateXML-Check-VM-liveness-first.patch create mode 100644 SOURCES/libvirt-qemuCheckpointDiscardBitmaps-Reopen-images-for-bitmap-modifications.patch create mode 100644 SOURCES/libvirt-qemuCheckpointDiscardBitmaps-Use-correct-field-for-checkpoint-bitmap-name.patch create mode 100644 SOURCES/libvirt-qemuDomainBlockCommit-Handle-bitmaps-on-start-of-commit.patch create mode 100644 SOURCES/libvirt-qemuDomainBlockCommit-Move-checks-depending-on-capabilities-after-liveness-check.patch create mode 100644 SOURCES/libvirt-qemuDomainBlockCopyCommon-Record-updated-flags-to-block-job.patch create mode 100644 SOURCES/libvirt-qemuDomainBlockPivot-Copy-bitmaps-backing-checkpoints-for-virDomainBlockCopy.patch create mode 100644 SOURCES/libvirt-qemuDomainBlockPivot-Handle-merging-of-bitmaps-when-pivoting-an-active-block-commit.patch create mode 100644 SOURCES/libvirt-qemuDomainBlockPivot-Ignore-failures-of-creating-active-layer-bitmap.patch create mode 100644 SOURCES/libvirt-qemuDomainBlockPivot-Move-check-prior-to-executing-the-pivot-steps.patch create mode 100644 SOURCES/libvirt-qemuDomainBlockPivot-Rename-actions-to-bitmapactions.patch delete mode 100644 SOURCES/libvirt-qemuDomainDeviceDefValidateNetwork-Check-for-range-only-if-IP-prefix-set.patch create mode 100644 SOURCES/libvirt-qemuDomainDeviceDiskDefPostParseRestoreSecAlias-Hardcode-restored-aliases.patch create mode 100644 SOURCES/libvirt-qemuDomainGetGuestInfo-Don-t-try-to-free-a-negative-number-of-entries.patch create mode 100644 SOURCES/libvirt-qemuDomainGetGuestInfo-don-t-assign-NULL-hostname.patch create mode 100644 SOURCES/libvirt-qemuDomainGetSecretAESAlias-Replace-outstanding-uses-with-qemuAliasForSecret.patch create mode 100644 SOURCES/libvirt-qemuDomainGetStatsIOThread-Don-t-leak-array-with-0-iothreads.patch delete mode 100644 SOURCES/libvirt-qemuDomainNestedJobAllowed-Allow-QEMU_JOB_NONE.patch delete mode 100644 SOURCES/libvirt-qemuDomainRemoveRNGDevice-Remove-associated-chardev-too.patch create mode 100644 SOURCES/libvirt-qemuDomainSaveImageStartVM-Use-VIR_AUTOCLOSE-for-intermediatefd.patch create mode 100644 SOURCES/libvirt-qemuDomainSaveImageStartVM-Use-g_autoptr-for-virCommand.patch delete mode 100644 SOURCES/libvirt-qemuDomainSaveMemory-Don-t-enforce-dynamicOwnership.patch create mode 100644 SOURCES/libvirt-qemuDomainSecretAESSetup-Allocate-and-return-secinfo-here.patch create mode 100644 SOURCES/libvirt-qemuDomainSecretAESSetup-Automatically-free-non-secret-locals.patch create mode 100644 SOURCES/libvirt-qemuDomainSecretAESSetup-Split-out-lookup-of-secret-data.patch create mode 100644 SOURCES/libvirt-qemuDomainSecretAESSetupFromSecret-Use-qemuAliasForSecret.patch create mode 100644 SOURCES/libvirt-qemuDomainSecretInfo-Register-autoptr-cleanup-function.patch create mode 100644 SOURCES/libvirt-qemuDomainSecretStorageSourcePrepare-Change-aliases-for-disk-secrets.patch create mode 100644 SOURCES/libvirt-qemuDomainSecretStorageSourcePrepare-Fix-naming-of-alias-variables.patch create mode 100644 SOURCES/libvirt-qemuDomainSecretStorageSourcePrepare-Setup-secret-for-http-cookies.patch create mode 100644 SOURCES/libvirt-qemuDomainSnapshotDiskPrepareOne-Don-t-load-the-relative-path-with-blockdev.patch create mode 100644 SOURCES/libvirt-qemuDomainSnapshotDiskPrepareOne-Fix-logic-of-relative-backing-store-update.patch create mode 100644 SOURCES/libvirt-qemuDomainValidateStorageSource-Reject-unsupported-slices.patch delete mode 100644 SOURCES/libvirt-qemuDomainValidateStorageSource-Relax-PR-validation.patch create mode 100644 SOURCES/libvirt-qemuDomainValidateStorageSource-Validate-new-network-storage-parameters.patch create mode 100644 SOURCES/libvirt-qemuExtDevicesStart-pass-logManager.patch create mode 100644 SOURCES/libvirt-qemuMigrationCookieAddNBD-Exit-early-if-there-are-no-disks.patch create mode 100644 SOURCES/libvirt-qemuMigrationCookieAddNBD-Fix-filling-of-capacity-when-blockdev-is-used.patch create mode 100644 SOURCES/libvirt-qemuMigrationCookieAddNBD-Move-monitor-call-out-of-the-loop.patch create mode 100644 SOURCES/libvirt-qemuMigrationCookieAddNBD-Remove-ret-variable-and-cleanup-label.patch create mode 100644 SOURCES/libvirt-qemuMigrationCookieAddNBD-Use-glib-memory-allocators.patch create mode 100644 SOURCES/libvirt-qemuMigrationCookieAddNBD-Use-virHashNew-and-automatic-freeing-of-virHashTablePtr.patch create mode 100644 SOURCES/libvirt-qemuMigrationCookieNBD-Extract-embedded-struct.patch create mode 100644 SOURCES/libvirt-qemuMigrationParamsResetTLS-Adapt-to-modern-memory-management.patch create mode 100644 SOURCES/libvirt-qemuMigrationParamsResetTLS-Fix-comment.patch create mode 100644 SOURCES/libvirt-qemuMonitorBlockdevAdd-Take-double-pointer-argument.patch create mode 100644 SOURCES/libvirt-qemuMonitorJSONBlockdevAdd-Refactor-cleanup.patch create mode 100644 SOURCES/libvirt-qemuMonitorJSONBlockdevDel-Refactor-cleanup.patch create mode 100644 SOURCES/libvirt-qemuMonitorTestProcessCommandDefaultValidate-Output-validator-output-to-stderr.patch delete mode 100644 SOURCES/libvirt-qemuProcessBuildDestroyMemoryPathsImpl-Don-t-overwrite-error.patch delete mode 100644 SOURCES/libvirt-qemuProcessStartPRDaemonHook-Try-to-set-NS-iff-domain-was-started-with-one.patch delete mode 100644 SOURCES/libvirt-qemu_capabilities-Inroduce-virQEMUCapsGetCPUModelX86Data.patch delete mode 100644 SOURCES/libvirt-qemu_capabilities-Introduce-virQEMUCapsGetCPUModelInfo.patch create mode 100644 SOURCES/libvirt-qemu_capabilities-Rework-domain-caps-cache.patch delete mode 100644 SOURCES/libvirt-qemu_capabilities-Use-virQEMUCapsGetCPUModelInfo.patch delete mode 100644 SOURCES/libvirt-qemu_command-Use-canonical-names-of-CPU-features.patch delete mode 100644 SOURCES/libvirt-qemu_command-Use-consistent-syntax-for-CPU-features.patch create mode 100644 SOURCES/libvirt-qemu_conf-Avoid-dereferencing-NULL-in-virQEMUDriverGetHost-NUMACaps-CPU.patch create mode 100644 SOURCES/libvirt-qemu_domain-Modify-access-to-a-NVMe-disk-iff-needed.patch delete mode 100644 SOURCES/libvirt-qemu_domain-NVLink2-bridge-detection-function-for-PPC64.patch delete mode 100644 SOURCES/libvirt-qemu_domain-add-a-PPC64-memLockLimit-helper.patch delete mode 100644 SOURCES/libvirt-qemu_hotplug-Attach-guestfwd-using-netdev_add.patch delete mode 100644 SOURCES/libvirt-qemu_hotplug-Check-for-duplicate-drive-addresses.patch delete mode 100644 SOURCES/libvirt-qemu_hotplug-Detach-guestfwd-using-netdev_del.patch delete mode 100644 SOURCES/libvirt-qemu_hotplug-remove-another-erroneous-qemuDomainDetachExtensionDevice-call.patch delete mode 100644 SOURCES/libvirt-qemu_hotplug-remove-erroneous-call-to-qemuDomainDetachExtensionDevice.patch delete mode 100644 SOURCES/libvirt-qemu_migration-Avoid-writing-to-freed-memory.patch delete mode 100644 SOURCES/libvirt-qemu_monitor-Introduce-qemuMonitorJSONGetPRManagerInfo.patch delete mode 100644 SOURCES/libvirt-qemu_process-Prefer-generic-qemuMonitorGetGuestCPU.patch delete mode 100644 SOURCES/libvirt-qemu_security-Fully-implement-qemuSecurityDomainSetPathLabel.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-JSON-JSON-test-cases-for-block-device-backends.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-basic-tests-for-backup-bitmap-handling.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-basic-tests-for-commit-bitmap-handling.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-empty-case-for-blockcopy-bitmap-handling-test.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-empty-case-for-checkpoint-bitmap-handling.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-empty-case-for-checkpoint-deletion.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-empty-case-for-incremental-backup-test.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-empty-test-case-for-bitmaps.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-more-tests-for-block-commit-bitmap-handling-with-snapshots.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-new-synthetic-bitmap-detection-and-validation-test-case.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-snapshots-tests-for-backup-bitmap-handling.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-snapshots-tests-for-block-commit-bitmap-handling.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-test-cases-for-handling-bitmaps-during-block-copy.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-tests-for-handling-of-bitmaps-during-block-commit.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-tests-for-re-enabling-of-bitmaps-after-commit.patch create mode 100644 SOURCES/libvirt-qemublocktest-Add-tests-of-broken-bitmap-chain-handling-during-block-commit.patch create mode 100644 SOURCES/libvirt-qemublocktest-Backport-cleanups-for-testQemuDiskXMLToProps-from-dd94f36ffbe.patch create mode 100644 SOURCES/libvirt-qemublocktest-Delete-synthetic-bitmap-test-cases.patch create mode 100644 SOURCES/libvirt-qemublocktest-Disable-testcases-for-all-bitmap-handling.patch create mode 100644 SOURCES/libvirt-qemublocktest-Extract-printing-of-nodename-list.patch create mode 100644 SOURCES/libvirt-qemublocktest-Extract-schema-root-for-blockdev-add-validation.patch create mode 100644 SOURCES/libvirt-qemublocktest-Fix-and-optimize-fake-image-chain.patch create mode 100644 SOURCES/libvirt-qemublocktest-Load-QMP-schema-earlier.patch create mode 100644 SOURCES/libvirt-qemublocktest-Re-add-bitmap-validation-for-basic-and-snapshots-cases.patch create mode 100644 SOURCES/libvirt-qemublocktest-Re-introduce-testing-of-checkpoint-deletion.patch create mode 100644 SOURCES/libvirt-qemublocktest-Rename-TEST_CHECKPOINT_DELETE_MERGE-to-TEST_CHECKPOINT_DELETE.patch create mode 100644 SOURCES/libvirt-qemublocktest-Replace-basic-bitmap-detection-test-case-data.patch create mode 100644 SOURCES/libvirt-qemublocktest-Replace-snapshots-bitmap-detection-test-case-data.patch create mode 100644 SOURCES/libvirt-qemublocktest-Test-backing-store-strings.patch create mode 100644 SOURCES/libvirt-qemublocktest-XMLjsonXML-Test-formatting-parsing-of-modern-JSON.patch create mode 100644 SOURCES/libvirt-qemublocktest-xml-json-Add-test-for-NVMe.patch create mode 100644 SOURCES/libvirt-qemublocktest-xml-json-Refactor-cleanup-in-test-case-functions.patch delete mode 100644 SOURCES/libvirt-qemuhotplugtest-Don-t-plug-a-SCSI-disk-at-unit-7.patch delete mode 100644 SOURCES/libvirt-qemuhotplugtest-Test-guestfwd-attach-and-detach.patch create mode 100644 SOURCES/libvirt-qemumonitorjsontest-AddNetdev-Use-real-variant.patch delete mode 100644 SOURCES/libvirt-qemuxml2-test-Add-tests-for-Icelake-Server-pconfig.patch create mode 100644 SOURCES/libvirt-qemuxml2argvtest-Add-test-case-for-disks-with-http-s-source.patch delete mode 100644 SOURCES/libvirt-qemuxml2argvtest-Add-test-for-CPU-features-translation.patch create mode 100644 SOURCES/libvirt-qemuxml2xmltest-Add-case-for-host-model-vendor_id.patch create mode 100644 SOURCES/libvirt-qemuxml2xmltest-Wire-up-disk-network-http-case.patch create mode 100644 SOURCES/libvirt-qemuxml2xmltest-set-driver-as-privileged.patch create mode 100644 SOURCES/libvirt-rhel-Enable-usage-of-x-blockdev-reopen.patch delete mode 100644 SOURCES/libvirt-rpc-virnetlibsshsession-update-deprecated-functions.patch create mode 100644 SOURCES/libvirt-schema-wrap-fsDriver-in-a-choice-group.patch create mode 100644 SOURCES/libvirt-schemas-rng-Use-interleave-in-the-disk-source-element.patch delete mode 100644 SOURCES/libvirt-secret-Add-check-validation-for-correct-usage-when-LookupByUUID.patch create mode 100644 SOURCES/libvirt-security-Don-t-fail-if-locking-a-file-on-NFS-mount-fails.patch create mode 100644 SOURCES/libvirt-security-Don-t-remember-seclabel-for-paths-we-haven-t-locked-successfully.patch create mode 100644 SOURCES/libvirt-security-Introduce-VIR_SECURITY_DOMAIN_IMAGE_PARENT_CHAIN_TOP-flag.patch delete mode 100644 SOURCES/libvirt-security-dac-Relabel-dev-sev-in-the-namespace.patch delete mode 100644 SOURCES/libvirt-security-dac-also-label-listen-UNIX-sockets.patch delete mode 100644 SOURCES/libvirt-selinux-Do-not-report-an-error-when-not-returning-1.patch delete mode 100644 SOURCES/libvirt-src-Fix-memory-leak-in-virNWFilterBindingDispose.patch delete mode 100644 SOURCES/libvirt-src-Mention-DEVICE_REMOVAL_FAILED-event-in-virDomainDetachDeviceAlias-docs.patch create mode 100644 SOURCES/libvirt-src-assume-sys-sysmacros.h-always-exists-on-Linux.patch delete mode 100644 SOURCES/libvirt-storage-Add-shrink-to-qemu-img-command-when-shrinking-vol.patch delete mode 100644 SOURCES/libvirt-storage-Allow-for-inputvol-to-have-any-format-for-encryption.patch delete mode 100644 SOURCES/libvirt-storage-Allow-inputvol-to-be-encrypted.patch create mode 100644 SOURCES/libvirt-storage-Implement-backing-store-support-for-fat-prefix.patch create mode 100644 SOURCES/libvirt-storage-Parse-nvme-disk-source-properties-from-json-pseudo-uri.patch delete mode 100644 SOURCES/libvirt-storage-Remove-secretPath-from-_virStorageBackendQemuImgInfo.patch create mode 100644 SOURCES/libvirt-storage_file-create-Create-new-images-with-write-permission-bit.patch delete mode 100644 SOURCES/libvirt-test-Introduce-virnetdevopenvswitchtest.patch create mode 100644 SOURCES/libvirt-testQemuDiskXMLToProps-Store-all-per-image-data-in-one-structure.patch create mode 100644 SOURCES/libvirt-testQemuDiskXMLToPropsValidateFileSrcOnly-Move-together-with-rest-of-xml-json-code.patch delete mode 100644 SOURCES/libvirt-tests-Add-capabilities-data-for-QEMU-2.11-x86_64.patch rename SOURCES/{libvirt-tests-Add-capabilities-data-for-QEMU-3.1.0-on-ppc64.patch => libvirt-tests-Add-capabilities-for-QEMU-5.0.0-on-aarch64.patch} (66%) delete mode 100644 SOURCES/libvirt-tests-Add-domain-capabilities-case-for-QEMU-4.1.0.patch delete mode 100644 SOURCES/libvirt-tests-Add-linux-high-ids-test.patch delete mode 100644 SOURCES/libvirt-tests-Add-missing-thread_siblings_list-files.patch delete mode 100644 SOURCES/libvirt-tests-Add-more-tests-to-qemucaps2xml.patch create mode 100644 SOURCES/libvirt-tests-Add-test-case-for-the-armvtimer-timer.patch delete mode 100644 SOURCES/libvirt-tests-Augment-vcgrouptest-to-add-virCgroupGetMemoryStat.patch delete mode 100644 SOURCES/libvirt-tests-Follow-up-on-qemucaps2xmldata-rename.patch delete mode 100644 SOURCES/libvirt-tests-Resolve-possible-overrun.patch delete mode 100644 SOURCES/libvirt-tests-Reuse-qemucapabilities-data-for-qemucaps2xml.patch delete mode 100644 SOURCES/libvirt-tests-Update-capabilities-data-for-QEMU-3.0.0-x86_64.patch delete mode 100644 SOURCES/libvirt-tests-Use-correct-function-name-in-error-path.patch create mode 100644 SOURCES/libvirt-tests-add-host-CPU-data-files-for-validating-die_id.patch delete mode 100644 SOURCES/libvirt-tests-extract-hugepages-numa-default-dimm-out-of-hugepages-numa.patch delete mode 100644 SOURCES/libvirt-tests-extract-pages-discard-hugepages-out-of-hugepages-pages3.patch delete mode 100644 SOURCES/libvirt-tests-extract-pages-discard-out-of-hugepages-pages.patch delete mode 100644 SOURCES/libvirt-tests-fix-TLS-handshake-failure-with-TLS-1.3.patch create mode 100644 SOURCES/libvirt-tests-hash-Test-case-for-adding-duplicate-hash-entry.patch delete mode 100644 SOURCES/libvirt-tests-introduce-hugepages-default-1G-nodeset-2M.patch delete mode 100644 SOURCES/libvirt-tests-introduce-hugepages-nodeset.patch create mode 100644 SOURCES/libvirt-tests-qemu-Add-test-data-for-the-new-slice-element.patch delete mode 100644 SOURCES/libvirt-tests-qemu-Remove-disk-from-graphics-vnc-tls.patch create mode 100644 SOURCES/libvirt-tests-qemu-add-disk-error-policy-tests-for-s390x.patch delete mode 100644 SOURCES/libvirt-tests-qemu-test-more-versions-for-graphics-vnc-tls.patch create mode 100644 SOURCES/libvirt-tests-qemublock-Add-cases-for-creating-image-overlays-on-top-of-disks-with-slice.patch create mode 100644 SOURCES/libvirt-tests-qemublock-Add-checkpoint-deletion-test-for-deep-backing-chain.patch create mode 100644 SOURCES/libvirt-tests-qemublock-Add-checkpoint-deletion-tests-for-some-special-cases.patch create mode 100644 SOURCES/libvirt-tests-qemublock-Add-few-more-test-cases-for-checkpoint-deletion.patch create mode 100644 SOURCES/libvirt-tests-qemublock-Add-synthetic-snapshot-checkpoint-test-data.patch create mode 100644 SOURCES/libvirt-tests-qemublock-Add-test-for-checkpoint-deletion-bitmap-merge.patch create mode 100644 SOURCES/libvirt-tests-qemublock-Add-tests-for-qemuBlockBitmapsHandleBlockcopy.patch create mode 100644 SOURCES/libvirt-tests-qemublocktest-Add-another-synthetic-test-case-for-broken-bitmaps.patch delete mode 100644 SOURCES/libvirt-tests-qemucaps-Add-test-data-for-upcoming-qemu-3.0.0.patch delete mode 100644 SOURCES/libvirt-tests-qemuxml2argv-Add-test-case-for-empty-CDROM-with-cache-mode.patch delete mode 100644 SOURCES/libvirt-tests-qemuxml2argv-add-CAPS_ARCH_LATEST-macro.patch delete mode 100644 SOURCES/libvirt-tests-remove-unnecessary-XML-elements-from-hugepages-numa-default.patch delete mode 100644 SOURCES/libvirt-tests-rename-hugepages-numa-into-hugepages-numa-default.patch delete mode 100644 SOURCES/libvirt-tests-rename-hugepages-pages-into-hugepages-numa-nodeset.patch delete mode 100644 SOURCES/libvirt-tests-rename-hugepages-pages2-into-hugepages-numa-default-2M.patch delete mode 100644 SOURCES/libvirt-tests-rename-hugepages-pages3-into-hugepages-numa-nodeset-part.patch delete mode 100644 SOURCES/libvirt-tests-rename-hugepages-pages4-into-hugepages-numa-nodeset-nonexist.patch delete mode 100644 SOURCES/libvirt-tests-rename-hugepages-pages5-into-hugepages-default-2M.patch delete mode 100644 SOURCES/libvirt-tests-rename-hugepages-pages6-into-hugepages-default-system-size.patch delete mode 100644 SOURCES/libvirt-tests-rename-hugepages-pages7-into-pages-dimm-discard.patch delete mode 100644 SOURCES/libvirt-tests-rename-hugepages-pages8-into-hugepages-nodeset-nonexist.patch delete mode 100644 SOURCES/libvirt-tests-rename-hugepages-to-hugepages-default.patch delete mode 100644 SOURCES/libvirt-tests-sev-Test-launch-security-with-specific-QEMU-version.patch create mode 100644 SOURCES/libvirt-tests-virstorage-Add-test-cases-for-json-pseudo-URI-without-file-wrapper.patch create mode 100644 SOURCES/libvirt-tests-virstorage-Add-test-data-for-json-specified-raw-image-with-offset-size.patch create mode 100644 SOURCES/libvirt-tests-virstorage-Add-tests-for-NBD-URI-style-syntax-over-UNIX.patch create mode 100644 SOURCES/libvirt-tests-virstorage-Fix-backing-file-format-of-created-image.patch delete mode 100644 SOURCES/libvirt-tools-Fix-typo-generating-adapter_wwpn-field.patch create mode 100644 SOURCES/libvirt-tools-Secure-guest-check-for-AMD-in-virt-host-validate.patch create mode 100644 SOURCES/libvirt-tools-Secure-guest-check-on-s390-in-virt-host-validate.patch delete mode 100644 SOURCES/libvirt-util-Avoid-possible-error-in-virCommandMassClose.patch delete mode 100644 SOURCES/libvirt-util-Don-t-overflow-in-virRandomBits.patch delete mode 100644 SOURCES/libvirt-util-Fix-virCgroupGetMemoryStat.patch create mode 100644 SOURCES/libvirt-util-Introduce-a-parser-for-kernel-cmdline-arguments.patch delete mode 100644 SOURCES/libvirt-util-Introduce-virBitmapUnion.patch delete mode 100644 SOURCES/libvirt-util-Introduce-virNumaNodesetToCPUset.patch create mode 100644 SOURCES/libvirt-util-Move-virIsDevMapperDevice-to-virdevmapper.c.patch delete mode 100644 SOURCES/libvirt-util-Propagate-numad-failures-correctly.patch delete mode 100644 SOURCES/libvirt-util-Rework-virStringListAdd.patch delete mode 100644 SOURCES/libvirt-util-Rewrite-virHostCPUCountThreadSiblings.patch delete mode 100644 SOURCES/libvirt-util-add-a-function-to-insert-new-interfaces-to-IPv6CheckForwarding-list.patch create mode 100644 SOURCES/libvirt-util-add-virBufferTrimChars.patch delete mode 100644 SOURCES/libvirt-util-alloc-add-macros-for-implementing-automatic-cleanup-functionality.patch delete mode 100644 SOURCES/libvirt-util-bitmap-define-cleanup-function-using-VIR_DEFINE_AUTOPTR_FUNC.patch delete mode 100644 SOURCES/libvirt-util-cgroup-use-VIR_AUTOFREE-instead-of-VIR_FREE-for-scalar-types.patch delete mode 100644 SOURCES/libvirt-util-check-accept_ra-for-all-nexthop-interfaces-of-multipath-routes.patch delete mode 100644 SOURCES/libvirt-util-command-Ignore-bitmap-errors-when-enumerating-file-descriptors-to-close.patch delete mode 100644 SOURCES/libvirt-util-command-define-cleanup-function-using-VIR_DEFINE_AUTOPTR_FUNC.patch delete mode 100644 SOURCES/libvirt-util-command-use-VIR_AUTOFREE-instead-of-VIR_FREE-for-scalar-types.patch delete mode 100644 SOURCES/libvirt-util-enable-cgroups-v2-cpuset-controller-for-threads.patch delete mode 100644 SOURCES/libvirt-util-file-introduce-VIR_AUTOCLOSE-macro-to-close-fd-of-the-file-automatically.patch delete mode 100644 SOURCES/libvirt-util-fix-memory-leak-in-virFirewallDInterfaceSetZone.patch create mode 100644 SOURCES/libvirt-util-hash-Improve-debugability-of-Duplicate-key-error-message.patch create mode 100644 SOURCES/libvirt-util-hash-Use-g_new0-for-allocating-hash-internals.patch delete mode 100644 SOURCES/libvirt-util-implement-virCgroupV2-Set-Get-CpusetCpus.patch delete mode 100644 SOURCES/libvirt-util-implement-virCgroupV2-Set-Get-CpusetMemoryMigrate.patch delete mode 100644 SOURCES/libvirt-util-implement-virCgroupV2-Set-Get-CpusetMems.patch delete mode 100644 SOURCES/libvirt-util-introduce-cgroup-v2-files.patch delete mode 100644 SOURCES/libvirt-util-introduce-vircgroupbackend-files.patch create mode 100644 SOURCES/libvirt-util-json-Introduce-virJSONValueArrayConcat.patch delete mode 100644 SOURCES/libvirt-util-json-define-cleanup-function-using-VIR_DEFINE_AUTOPTR_FUNC.patch delete mode 100644 SOURCES/libvirt-util-make-forgotten-changes-suggested-during-review-of-commit-d40b820c.patch delete mode 100644 SOURCES/libvirt-util-move-all-firewalld-specific-stuff-into-its-own-files.patch delete mode 100644 SOURCES/libvirt-util-moving-type-argument-to-avoid-issues-with-mount-syscall.patch delete mode 100644 SOURCES/libvirt-util-netdevopenvswitch-use-VIR_AUTOFREE-instead-of-VIR_FREE-for-scalar-types.patch delete mode 100644 SOURCES/libvirt-util-netdevopenvswitch-use-VIR_AUTOPTR-for-aggregate-types.patch delete mode 100644 SOURCES/libvirt-util-new-virFirewallD-APIs-docs.patch delete mode 100644 SOURCES/libvirt-util-remove-const-specifier-from-nlmsghdr-arg-to-virNetlinkDumpCallback.patch delete mode 100644 SOURCES/libvirt-util-remove-test-code-accidentally-committed-to-virFirewallDZoneExists.patch delete mode 100644 SOURCES/libvirt-util-skip-RDMA-detection-for-non-PCI-network-devices.patch create mode 100644 SOURCES/libvirt-util-storage-Store-backing-store-format-in-virStorageSource.patch create mode 100644 SOURCES/libvirt-util-storagefile-Drop-image-format-probing-by-file-suffix.patch create mode 100644 SOURCES/libvirt-util-storagefile-Properly-set-transport-type-when-parsing-NBD-strings.patch delete mode 100644 SOURCES/libvirt-util-string-Introduce-macro-for-automatic-string-lists.patch delete mode 100644 SOURCES/libvirt-util-suppress-unimportant-ovs-vsctl-errors-when-getting-interface-stats.patch delete mode 100644 SOURCES/libvirt-util-use-nlmsg_find_attr-instead-of-an-open-coded-loop.patch delete mode 100644 SOURCES/libvirt-util-vircgroup-improve-controller-detection.patch delete mode 100644 SOURCES/libvirt-util-vircgroup-introduce-virCgroup-Get-Set-ValueRaw.patch delete mode 100644 SOURCES/libvirt-util-vircgroup-move-virCgroupGetValueStr-out-of-virCgroupGetValueForBlkDev.patch delete mode 100644 SOURCES/libvirt-util-vircgroup-pass-parent-cgroup-into-virCgroupDetectControllersCB.patch delete mode 100644 SOURCES/libvirt-util-vircgroupv1-add-support-for-BFQ-blkio-files.patch delete mode 100644 SOURCES/libvirt-util-vircgroupv2-add-support-for-BFQ-files.patch delete mode 100644 SOURCES/libvirt-util-vircgroupv2-don-t-error-out-if-enabling-controller-fails.patch delete mode 100644 SOURCES/libvirt-util-vircgroupv2-enable-CPU-controller-only-if-it-s-available.patch delete mode 100644 SOURCES/libvirt-util-vircgroupv2-mark-only-requested-controllers-as-available.patch delete mode 100644 SOURCES/libvirt-util-vircgroupv2-separate-return-values-of-virCgroupV2EnableController.patch delete mode 100644 SOURCES/libvirt-util-vircgroupv2-stop-enabling-missing-controllers-with-systemd.patch delete mode 100644 SOURCES/libvirt-util-vircgroupv2-use-any-controller-to-create-thread-directory.patch delete mode 100644 SOURCES/libvirt-util-virnetdevopenvswitch-Drop-an-unused-variable-ovs_timeout.patch create mode 100644 SOURCES/libvirt-util-virstoragefile-Add-data-structure-for-storing-storage-source-slices.patch delete mode 100644 SOURCES/libvirt-utils-Remove-arbitrary-limit-on-socket_id-core_id.patch delete mode 100644 SOURCES/libvirt-virCommand-use-procfs-to-learn-opened-FDs.patch create mode 100644 SOURCES/libvirt-virDevMapperGetTargets-Don-t-ignore-EBADF.patch create mode 100644 SOURCES/libvirt-virDevMapperGetTargetsImpl-Check-for-dm-major-properly.patch create mode 100644 SOURCES/libvirt-virDevMapperGetTargetsImpl-Use-VIR_AUTOSTRINGLIST.patch create mode 100644 SOURCES/libvirt-virDevMapperGetTargetsImpl-quit-early-if-device-is-not-a-devmapper-target.patch create mode 100644 SOURCES/libvirt-virDomainCheckpointRedefinePrep-Set-current-checkpoint-if-there-isn-t-any.patch delete mode 100644 SOURCES/libvirt-virDomainConfNWFilterInstantiate-initialize-xml-to-avoid-random-crash.patch delete mode 100644 SOURCES/libvirt-virDomainDefCompatibleDevice-Relax-alias-change-check.patch delete mode 100644 SOURCES/libvirt-virDomainDetachDeviceFlags-Clarify-update-semantics.patch create mode 100644 SOURCES/libvirt-virDomainDiskAddISCSIPoolSourceHost-Remove-cleanup-label.patch create mode 100644 SOURCES/libvirt-virDomainDiskAddISCSIPoolSourceHost-Remove-ternary-operator.patch create mode 100644 SOURCES/libvirt-virDomainDiskAddISCSIPoolSourceHost-Sanitize-handling-of-string-list.patch create mode 100644 SOURCES/libvirt-virDomainDiskAddISCSIPoolSourceHost-Take-virStorageSourcePtr-instead-of-virDomainDiskDefPtr.patch create mode 100644 SOURCES/libvirt-virDomainDiskAddISCSIPoolSourceHost-use-g_new0-instead-of-VIR_ALLOC_N.patch create mode 100644 SOURCES/libvirt-virDomainDiskSourceNVMeFormat-Format-only-valid-managed-values.patch create mode 100644 SOURCES/libvirt-virDomainDiskTranslateISCSIDirect-Take-virStorageSourcePtr-instead-of-virDomainDiskDefPtr.patch create mode 100644 SOURCES/libvirt-virDomainDiskTranslateSourcePool-Check-for-disk-type-correctly.patch create mode 100644 SOURCES/libvirt-virDomainDiskTranslateSourcePool-Translate-volume-disks-in-whole-backing-chain.patch create mode 100644 SOURCES/libvirt-virDomainDiskTranslateSourcePool-split-code-to-setup-one-storage-source.patch create mode 100644 SOURCES/libvirt-virDomainDiskTranslateSourcePoolAuth-Take-virStorageSourcePtr-instead-of-virDomainDiskDefPtr.patch create mode 100644 SOURCES/libvirt-virDomainFSDefFree-Unref-private-data.patch delete mode 100644 SOURCES/libvirt-virDomainNetDefCheckABIStability-Check-for-MTU-change-too.patch create mode 100644 SOURCES/libvirt-virDomainNetDefClear-Free-persistent-name.patch delete mode 100644 SOURCES/libvirt-virDomainObjListAddLocked-Produce-better-error-message-than-Duplicate-key.patch delete mode 100644 SOURCES/libvirt-virDomainObjListAddLocked-fix-double-free.patch delete mode 100644 SOURCES/libvirt-virFileIsSharedFSType-Check-for-fuse.glusterfs-too.patch delete mode 100644 SOURCES/libvirt-virFileIsSharedFSType-Detect-direct-mount-points.patch create mode 100644 SOURCES/libvirt-virHashAddOrUpdateEntry-Simplify-allocation-of-new-entry.patch create mode 100644 SOURCES/libvirt-virJSONValueNewArray-Use-g_new0-to-allocate-and-remove-NULL-checks-from-callers.patch delete mode 100644 SOURCES/libvirt-virNetDevOpenvswitchInterfaceStats-Optimize-for-speed.patch create mode 100644 SOURCES/libvirt-virSecretLookupDefCopy-Remove-return-value.patch create mode 100644 SOURCES/libvirt-virSecurityManagerMetadataLock-Store-locked-paths.patch create mode 100644 SOURCES/libvirt-virStorageBackendGlusterRefreshVol-Refactor-handling-of-backing-store.patch create mode 100644 SOURCES/libvirt-virStorageEncryptionSecretCopy-Properly-copy-internals.patch create mode 100644 SOURCES/libvirt-virStorageFileGetMetadataFromBuf-Remove-backingFormat-argument.patch create mode 100644 SOURCES/libvirt-virStorageFileGetMetadataFromFD-Remove-unused-backingFormat-argument.patch create mode 100644 SOURCES/libvirt-virStorageFileGetMetadataRecurse-Allow-format-probing-under-special-circumstances.patch create mode 100644 SOURCES/libvirt-virStorageFileGetMetadataRecurse-Expect-NULL-src-path.patch create mode 100644 SOURCES/libvirt-virStorageFileGetMetadataRecurse-Extract-storage-access.patch create mode 100644 SOURCES/libvirt-virStorageFileGetMetadataRecurse-Remove-cleanup-label.patch create mode 100644 SOURCES/libvirt-virStorageFileGetMetadataRecurse-Remove-impossible-error-report.patch create mode 100644 SOURCES/libvirt-virStorageFileGetMetadataRecurse-Shuffle-around-assignment-of-backing-chain-depth.patch create mode 100644 SOURCES/libvirt-virStorageFileGetMetadataRecurse-Use-virHashHasEntry-instead-of-fake-pointers.patch delete mode 100644 SOURCES/libvirt-virStoragePRDefFormat-Suppress-path-formatting-for-migratable-XML.patch create mode 100644 SOURCES/libvirt-virStorageSourceJSONDriverParser-annotate-format-drivers.patch create mode 100644 SOURCES/libvirt-virStorageSourceNetCookieValidate-Accept-quoted-cookie-value.patch create mode 100644 SOURCES/libvirt-virStorageSourceNewFromBacking-Also-transfer-the-format.patch create mode 100644 SOURCES/libvirt-virStorageSourceParseBackingJSON-Allow-json-pseudo-URIs-without-file-wrapper.patch create mode 100644 SOURCES/libvirt-virStorageSourceParseBackingJSON-Move-deflattening-of-json-URIs-out-of-recursion.patch create mode 100644 SOURCES/libvirt-virStorageSourceParseBackingJSON-Pass-around-original-backing-file-string.patch create mode 100644 SOURCES/libvirt-virStorageSourceParseBackingJSON-Prevent-arbitrary-nesting-with-format-drivers.patch create mode 100644 SOURCES/libvirt-virStorageSourceParseBackingJSONRaw-Parse-offset-and-size-attributes.patch create mode 100644 SOURCES/libvirt-virStorageSourceParseBackingJSONUri-Handle-undocumented-value-off-for-sslverify.patch create mode 100644 SOURCES/libvirt-virStorageSourceParseBackingURI-Preserve-query-string-of-URI-for-http-s.patch create mode 100644 SOURCES/libvirt-virStorageSourceUpdateCapacity-Drop-probe-argument.patch delete mode 100644 SOURCES/libvirt-virWaitForDevices-Drop-confusing-part-of-comment.patch create mode 100644 SOURCES/libvirt-virbuftest-declare-testBufAddStrData-earlier.patch create mode 100644 SOURCES/libvirt-virbuftest-remove-extra-G_GNUC_UNUSED-markers.patch create mode 100644 SOURCES/libvirt-virbuftest-remove-unnecessary-labels.patch create mode 100644 SOURCES/libvirt-virbuftest-use-field-names-when-initalizing-test-info.patch create mode 100644 SOURCES/libvirt-virbuftest-use-g_autofree.patch delete mode 100644 SOURCES/libvirt-vircgroup-Call-virCgroupRemove-inside-virCgroupMakeGroup.patch delete mode 100644 SOURCES/libvirt-vircgroup-Duplicate-string-before-modifying.patch delete mode 100644 SOURCES/libvirt-vircgroup-Extract-controller-detection-into-function.patch delete mode 100644 SOURCES/libvirt-vircgroup-Extract-file-link-resolving-into-separate-function.patch delete mode 100644 SOURCES/libvirt-vircgroup-Extract-mount-options-matching-into-function.patch delete mode 100644 SOURCES/libvirt-vircgroup-Extract-placement-validation-into-function.patch delete mode 100644 SOURCES/libvirt-vircgroup-Introduce-standard-set-of-typedefs-and-use-them.patch delete mode 100644 SOURCES/libvirt-vircgroup-Introduce-virCgroupEnableMissingControllers.patch delete mode 100644 SOURCES/libvirt-vircgroup-Introduce-virCgroupGetMemoryStat.patch delete mode 100644 SOURCES/libvirt-vircgroup-Move-function-used-in-tests-into-vircgrouppriv.h.patch delete mode 100644 SOURCES/libvirt-vircgroup-Remove-obsolete-sa_assert.patch delete mode 100644 SOURCES/libvirt-vircgroup-Remove-pointless-bool-parameter.patch delete mode 100644 SOURCES/libvirt-vircgroup-Remove-unused-function-virCgroupKill.patch delete mode 100644 SOURCES/libvirt-vircgroup-Remove-virCgroupAddTaskController.patch delete mode 100644 SOURCES/libvirt-vircgroup-Rename-structs-to-start-with-underscore.patch delete mode 100644 SOURCES/libvirt-vircgroup-Simplify-if-conditions-in-virCgroupMakeGroup.patch delete mode 100644 SOURCES/libvirt-vircgroup-Split-virCgroupPathOfController-into-two-functions.patch delete mode 100644 SOURCES/libvirt-vircgroup-Unexport-unused-function-virCgroupAddTaskController.patch delete mode 100644 SOURCES/libvirt-vircgroup-Unexport-unused-function-virCgroupRemoveRecursively.patch delete mode 100644 SOURCES/libvirt-vircgroup-Use-virCgroupMountOptsMatchController-in-virCgroupDetectPlacement.patch delete mode 100644 SOURCES/libvirt-vircgroup-add-support-for-hybrid-configuration.patch delete mode 100644 SOURCES/libvirt-vircgroup-cleanup-controllers-not-managed-by-systemd-on-error.patch delete mode 100644 SOURCES/libvirt-vircgroup-detect-available-backend-for-cgroup.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-v1-detect-functions.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Allow-Deny-AllDevices.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Allow-Deny-Device.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-BlkioDeviceReadBps.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-BlkioDeviceReadIops.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-BlkioDeviceWeight.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-BlkioDeviceWriteBps.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-BlkioDeviceWriteIops.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-BlkioWeight.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-CpuCfsPeriod.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-CpuCfsQuota.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-CpuShares.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-CpusetCpus.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-CpusetMemoryMigrate.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-CpusetMems.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-FreezerState.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1-Set-Get-Memory-Limit.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1AddTask.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1Available.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1BindMount.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1CopyMounts.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1CopyPlacement.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1DetectControllers.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1GetAnyController.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1GetBlkioIoDeviceServiced.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1GetBlkioIoServiced.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1GetCpuacct-Usage.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1GetCpuacctStat.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1GetMemSwapUsage.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1GetMemoryStat.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1GetMemoryUsage.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1HasController.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1HasEmptyTasks.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1MakeGroup.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1PathOfController.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1Remove.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1SetMemory.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1SetOwner.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1StealPlacement.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1SupportsCpuBW.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1ValidateMachineGroup.patch delete mode 100644 SOURCES/libvirt-vircgroup-extract-virCgroupV1ValidatePlacement.patch delete mode 100644 SOURCES/libvirt-vircgroup-fix-MinGW-build.patch delete mode 100644 SOURCES/libvirt-vircgroup-fix-bug-in-virCgroupEnableMissingControllers.patch delete mode 100644 SOURCES/libvirt-vircgroup-fix-cgroups-v2-controllers-detection.patch delete mode 100644 SOURCES/libvirt-vircgroup-include-system-headers-only-on-linux.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-cgroup-v1-backend-files.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupAddThread.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupKillRecursiveCB.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupTaskFlags.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-BlkioDeviceReadBps.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-BlkioDeviceReadIops.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-BlkioDeviceWeight.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-BlkioDeviceWriteBps.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-BlkioDeviceWriteIops.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-BlkioWeight.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-CpuCfsPeriod.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-CpuCfsQuota.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-CpuShares.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-MemSwapHardLimit.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-MemoryHardLimit.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2-Set-Get-MemorySoftLimit.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2AddTask.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2Available.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2BindMount.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2CopyMounts.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2CopyPlacement.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2DetectControllers.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2DetectMounts.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2DetectPlacement.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2GetAnyController.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2GetBlkioIoDeviceServiced.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2GetBlkioIoServiced.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2GetCpuacctStat.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2GetCpuacctUsage.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2GetMemSwapUsage.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2GetMemoryStat.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2GetMemoryUsage.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2HasController.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2HasEmptyTasks.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2MakeGroup.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2PathOfController.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2Remove.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2SetMemory.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2SetOwner.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2StealPlacement.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2SupportsCpuBW.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2ValidateMachineGroup.patch delete mode 100644 SOURCES/libvirt-vircgroup-introduce-virCgroupV2ValidatePlacement.patch delete mode 100644 SOURCES/libvirt-vircgroup-machinename-will-never-be-NULL.patch delete mode 100644 SOURCES/libvirt-vircgroup-register-cgroup-v2-backend.patch delete mode 100644 SOURCES/libvirt-vircgroup-remove-VIR_CGROUP_SUPPORTED.patch delete mode 100644 SOURCES/libvirt-vircgroup-rename-controllers-to-legacy.patch delete mode 100644 SOURCES/libvirt-vircgroup-rename-virCgroupAdd.-Task-to-virCgroupAdd.-Process.patch delete mode 100644 SOURCES/libvirt-vircgroup-rename-virCgroupController-into-virCgroupV1Controller.patch delete mode 100644 SOURCES/libvirt-vircgroupmock-add-support-to-test-cgroup-v2.patch delete mode 100644 SOURCES/libvirt-vircgroupmock-change-cgroup-prefix.patch delete mode 100644 SOURCES/libvirt-vircgroupmock-cleanup-unused-cgroup-files.patch delete mode 100644 SOURCES/libvirt-vircgroupmock-rewrite-cgroup-fopen-mocking.patch delete mode 100644 SOURCES/libvirt-vircgrouptest-add-cgroup-v2-tests.patch delete mode 100644 SOURCES/libvirt-vircgrouptest-add-detect-mounts-test-for-cgroup-v2.patch delete mode 100644 SOURCES/libvirt-vircgrouptest-add-detect-mounts-test-for-hybrid-cgroups.patch delete mode 100644 SOURCES/libvirt-vircgrouptest-add-hybrid-tests.patch delete mode 100644 SOURCES/libvirt-vircgrouptest-call-virCgroupDetectMounts-directly.patch delete mode 100644 SOURCES/libvirt-vircgrouptest-call-virCgroupNewSelf-instead-virCgroupDetectMounts.patch delete mode 100644 SOURCES/libvirt-vircgrouptest-introduce-initFakeFS-and-cleanupFakeFS-helpers.patch delete mode 100644 SOURCES/libvirt-vircgrouptest-prepare-testCgroupDetectMounts-for-cgroup-v2.patch delete mode 100644 SOURCES/libvirt-vircgrouptest-prepare-validateCgroup-for-cgroupv2.patch delete mode 100644 SOURCES/libvirt-vircgroupv1-fix-build-on-non-linux-OSes.patch delete mode 100644 SOURCES/libvirt-vircgroupv2-fix-abort-in-VIR_AUTOFREE.patch delete mode 100644 SOURCES/libvirt-vircgroupv2-fix-parsing-multiple-values-in-single-file.patch delete mode 100644 SOURCES/libvirt-vircgroupv2-fix-setting-cpu.max-period.patch delete mode 100644 SOURCES/libvirt-vircgroupv2-fix-virCgroupV2GetCpuCfsQuota-for-max-value.patch delete mode 100644 SOURCES/libvirt-vircgroupv2-fix-virCgroupV2ValidateMachineGroup.patch delete mode 100644 SOURCES/libvirt-vircgroupv2-store-enabled-controllers.patch delete mode 100644 SOURCES/libvirt-vircommand-Separate-mass-FD-closing-into-a-function.patch delete mode 100644 SOURCES/libvirt-vircpuhost-Add-support-for-reading-MSRs.patch delete mode 100644 SOURCES/libvirt-virdbus-Grab-a-ref-as-long-as-the-while-loop-is-executed.patch create mode 100644 SOURCES/libvirt-virdevmapper-Don-t-cache-device-mapper-major.patch create mode 100644 SOURCES/libvirt-virdevmapper-Don-t-use-libdevmapper-to-obtain-dependencies.patch create mode 100644 SOURCES/libvirt-virdevmapper-Handle-kernel-without-device-mapper-support.patch create mode 100644 SOURCES/libvirt-virdevmapper-Ignore-all-errors-when-opening-dev-mapper-control.patch create mode 100644 SOURCES/libvirt-virdevmapper.c-Join-two-WITH_DEVMAPPER-sections-together.patch delete mode 100644 SOURCES/libvirt-virfile-Detect-ceph-as-shared-FS.patch delete mode 100644 SOURCES/libvirt-virfile-Rework-virFileIsSharedFixFUSE.patch delete mode 100644 SOURCES/libvirt-virfile-Take-symlink-into-account-in-virFileIsSharedFixFUSE.patch delete mode 100644 SOURCES/libvirt-virfile-added-GPFS-as-shared-fs.patch delete mode 100644 SOURCES/libvirt-virfile-fix-cast-align-error.patch delete mode 100644 SOURCES/libvirt-virfiletest-Fix-test-name-prefix-for-virFileInData-test.patch delete mode 100644 SOURCES/libvirt-virfiletst-Test-virFileIsSharedFS.patch create mode 100644 SOURCES/libvirt-virhash-Fix-the-expectations-of-virHashKeyEqual-implementations.patch delete mode 100644 SOURCES/libvirt-virhostcpu-Make-virHostCPUGetMSR-work-only-on-x86.patch delete mode 100644 SOURCES/libvirt-virnetdevtap-Don-t-crash-on-ifname-in-virNetDevTapInterfaceStats.patch delete mode 100644 SOURCES/libvirt-virrandom-Avoid-undefined-behaviour-in-virRandomBits.patch delete mode 100644 SOURCES/libvirt-virsh-Require-explicit-domain-for-domxml-to-native.patch delete mode 100644 SOURCES/libvirt-virsh-Strip-XML-declaration-when-extracting-CPU-XMLs.patch delete mode 100644 SOURCES/libvirt-virsh.pod-Drop-persistent-for-detach-device-alias.patch delete mode 100644 SOURCES/libvirt-virsh.pod-Fix-a-command-name-typo-in-nwfilter-binding-undefine.patch create mode 100644 SOURCES/libvirt-virstoragefile-Add-JSON-parser-for-sslverify-readahead-cookies-and-timeout.patch delete mode 100644 SOURCES/libvirt-virt-host-validate-Fix-build-on-non-Linux.patch delete mode 100644 SOURCES/libvirt-virt-host-validate-require-freezer-for-LXC.patch delete mode 100644 SOURCES/libvirt-virt-host-validate-rewrite-cgroup-detection-to-use-util-vircgroup.patch delete mode 100644 SOURCES/libvirt-virt-xml-validate-Add-schema-for-nwfilterbinding.patch create mode 100644 SOURCES/libvirt-vmx-make-fileName-optional-for-CD-ROMs.patch create mode 100644 SOURCES/libvirt-vmx-shortcut-earlier-few-ignore-cases-in-virVMXParseDisk.patch diff --git a/.gitignore b/.gitignore index 95d8dbd..7677d22 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/libvirt-4.5.0.tar.xz +SOURCES/libvirt-6.0.0.tar.xz diff --git a/.libvirt.metadata b/.libvirt.metadata index 3fedbbb..4a2f940 100644 --- a/.libvirt.metadata +++ b/.libvirt.metadata @@ -1 +1 @@ -5f097d246c0fba04d18ac7ec951ad56ffa1a8958 SOURCES/libvirt-4.5.0.tar.xz +9939a559e652d44b27e3404a26bcabe58988e4b4 SOURCES/libvirt-6.0.0.tar.xz diff --git a/SOURCES/libvirt-Handle-copying-bitmaps-to-larger-data-buffers.patch b/SOURCES/libvirt-Handle-copying-bitmaps-to-larger-data-buffers.patch deleted file mode 100644 index 4f8ba04..0000000 --- a/SOURCES/libvirt-Handle-copying-bitmaps-to-larger-data-buffers.patch +++ /dev/null @@ -1,56 +0,0 @@ -From e75abae126f9fcaf1e8478f0780ecae736f7d3e1 Mon Sep 17 00:00:00 2001 -Message-Id: -From: "Allen, John" -Date: Tue, 2 Jul 2019 17:05:34 +0200 -Subject: [PATCH] Handle copying bitmaps to larger data buffers -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -If a bitmap of a shorter length than the data buffer is passed to -virBitmapToDataBuf, it will read off the end of the bitmap and copy junk -into the returned buffer. Add a check to only copy the length of the -bitmap to the buffer. - -The problem can be observed after setting a vcpu affinity using the vcpupin -command on a system with a large number of cores: - # virsh vcpupin example_domain 0 0 - # virsh vcpupin example_domain 0 - VCPU CPU Affinity - --------------------------- - 0 0,192,197-198,202 - -Signed-off-by: John Allen -(cherry picked from commit 51f9f80d350e633adf479c6a9b3c55f82ca9cbd4) - -https: //bugzilla.redhat.com/show_bug.cgi?id=1703160 -Signed-off-by: Erik Skultety -Message-Id: <1a487c4f1ba9725eb7325debeeff2861d7047890.1562079635.git.eskultet@redhat.com> -Reviewed-by: Ján Tomko ---- - src/util/virbitmap.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c -index 49e542a4e6..7df0a2d4f3 100644 ---- a/src/util/virbitmap.c -+++ b/src/util/virbitmap.c -@@ -831,11 +831,15 @@ virBitmapToDataBuf(virBitmapPtr bitmap, - unsigned char *bytes, - size_t len) - { -+ size_t nbytes = bitmap->map_len * (VIR_BITMAP_BITS_PER_UNIT / CHAR_BIT); - unsigned long *l; - size_t i, j; - - memset(bytes, 0, len); - -+ /* If bitmap and buffer differ in size, only fill to the smaller length */ -+ len = MIN(len, nbytes); -+ - /* htole64 is not provided by gnulib, so we do the conversion by hand */ - l = bitmap->map; - for (i = j = 0; i < len; i++, j++) { --- -2.22.0 - diff --git a/SOURCES/libvirt-PPC64-support-for-NVIDIA-V100-GPU-with-NVLink2-passthrough.patch b/SOURCES/libvirt-PPC64-support-for-NVIDIA-V100-GPU-with-NVLink2-passthrough.patch deleted file mode 100644 index d29a9cf..0000000 --- a/SOURCES/libvirt-PPC64-support-for-NVIDIA-V100-GPU-with-NVLink2-passthrough.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 5347b12008842b5c86f766e391c6f3756afbff7d Mon Sep 17 00:00:00 2001 -Message-Id: <5347b12008842b5c86f766e391c6f3756afbff7d@dist-git> -From: Daniel Henrique Barboza -Date: Fri, 3 May 2019 13:54:53 +0200 -Subject: [PATCH] PPC64 support for NVIDIA V100 GPU with NVLink2 passthrough - -The NVIDIA V100 GPU has an onboard RAM that is mapped into the -host memory and accessible as normal RAM via an NVLink2 bridge. When -passed through in a guest, QEMU puts the NVIDIA RAM window in a -non-contiguous area, above the PCI MMIO area that starts at 32TiB. -This means that the NVIDIA RAM window starts at 64TiB and go all the -way to 128TiB. - -This means that the guest might request a 64-bit window, for each PCI -Host Bridge, that goes all the way to 128TiB. However, the NVIDIA RAM -window isn't counted as regular RAM, thus this window is considered -only for the allocation of the Translation and Control Entry (TCE). -For more information about how NVLink2 support works in QEMU, -refer to the accepted implementation [1]. - -This memory layout differs from the existing VFIO case, requiring its -own formula. This patch changes the PPC64 code of -@qemuDomainGetMemLockLimitBytes to: - -- detect if we have a NVLink2 bridge being passed through to the -guest. This is done by using the @ppc64VFIODeviceIsNV2Bridge function -added in the previous patch. The existence of the NVLink2 bridge in -the guest means that we are dealing with the NVLink2 memory layout; - -- if an IBM NVLink2 bridge exists, passthroughLimit is calculated in a -different way to account for the extra memory the TCE table can alloc. -The 64TiB..128TiB window is more than enough to fit all possible -GPUs, thus the memLimit is the same regardless of passing through 1 or -multiple V100 GPUs. - -Further reading explaining the background -[1] https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg03700.html -[2] https://www.redhat.com/archives/libvir-list/2019-March/msg00660.html -[3] https://www.redhat.com/archives/libvir-list/2019-April/msg00527.html - -Signed-off-by: Daniel Henrique Barboza -Reviewed-by: Erik Skultety -(cherry picked from commit 1a922648f67f56c4374d647feebf2adb9a642f96) - -https://bugzilla.redhat.com/show_bug.cgi?id=1505998 - -Conflicts: - The upstream commit relied on: - - v4.7.0-37-gb72183223f - - v4.7.0-38-ga14f597266 - which were not backported so virPCIDeviceAddressAsString had to - swapped for the former virDomainPCIAddressAsString in order to - compile. - -Signed-off-by: Erik Skultety -Message-Id: <03c00ebf46d85b0615134ef8655e67a4c909b7da.1556884443.git.eskultet@redhat.com> -Reviewed-by: Andrea Bolognani ---- - src/qemu/qemu_domain.c | 80 ++++++++++++++++++++++++++++++++---------- - 1 file changed, 61 insertions(+), 19 deletions(-) - -diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c -index a8bc618389..21f0722495 100644 ---- a/src/qemu/qemu_domain.c -+++ b/src/qemu/qemu_domain.c -@@ -9813,7 +9813,7 @@ qemuDomainUpdateCurrentMemorySize(virQEMUDriverPtr driver, - * such as '0004:04:00.0', and tells if the device is a NVLink2 - * bridge. - */ --static ATTRIBUTE_UNUSED bool -+static bool - ppc64VFIODeviceIsNV2Bridge(const char *device) - { - const char *nvlink2Files[] = {"ibm,gpu", "ibm,nvlink", -@@ -9851,7 +9851,9 @@ getPPC64MemLockLimitBytes(virDomainDefPtr def) - unsigned long long maxMemory = 0; - unsigned long long passthroughLimit = 0; - size_t i, nPCIHostBridges = 0; -+ virPCIDeviceAddressPtr pciAddr; - bool usesVFIO = false; -+ bool nvlink2Capable = false; - - for (i = 0; i < def->ncontrollers; i++) { - virDomainControllerDefPtr cont = def->controllers[i]; -@@ -9869,7 +9871,17 @@ getPPC64MemLockLimitBytes(virDomainDefPtr def) - dev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI && - dev->source.subsys.u.pci.backend == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO) { - usesVFIO = true; -- break; -+ -+ pciAddr = &dev->source.subsys.u.pci.addr; -+ if (virPCIDeviceAddressIsValid(pciAddr, false)) { -+ VIR_AUTOFREE(char *) pciAddrStr = NULL; -+ -+ pciAddrStr = virDomainPCIAddressAsString(pciAddr); -+ if (ppc64VFIODeviceIsNV2Bridge(pciAddrStr)) { -+ nvlink2Capable = true; -+ break; -+ } -+ } - } - } - -@@ -9896,29 +9908,59 @@ getPPC64MemLockLimitBytes(virDomainDefPtr def) - 4096 * nPCIHostBridges + - 8192; - -- /* passthroughLimit := max( 2 GiB * #PHBs, (c) -- * memory (d) -- * + memory * 1/512 * #PHBs + 8 MiB ) (e) -+ /* NVLink2 support in QEMU is a special case of the passthrough -+ * mechanics explained in the usesVFIO case below. The GPU RAM -+ * is placed with a gap after maxMemory. The current QEMU -+ * implementation puts the NVIDIA RAM above the PCI MMIO, which -+ * starts at 32TiB and is the MMIO reserved for the guest main RAM. - * -- * (c) is the pre-DDW VFIO DMA window accounting. We're allowing 2 GiB -- * rather than 1 GiB -+ * This window ends at 64TiB, and this is where the GPUs are being -+ * placed. The next available window size is at 128TiB, and -+ * 64TiB..128TiB will fit all possible NVIDIA GPUs. - * -- * (d) is the with-DDW (and memory pre-registration and related -- * features) DMA window accounting - assuming that we only account RAM -- * once, even if mapped to multiple PHBs -+ * The same assumption as the most common case applies here: -+ * the guest will request a 64-bit DMA window, per PHB, that is -+ * big enough to map all its RAM, which is now at 128TiB due -+ * to the GPUs. - * -- * (e) is the with-DDW userspace view and overhead for the 64-bit DMA -- * window. This is based a bit on expected guest behaviour, but there -- * really isn't a way to completely avoid that. We assume the guest -- * requests a 64-bit DMA window (per PHB) just big enough to map all -- * its RAM. 4 kiB page size gives the 1/512; it will be less with 64 -- * kiB pages, less still if the guest is mapped with hugepages (unlike -- * the default 32-bit DMA window, DDW windows can use large IOMMU -- * pages). 8 MiB is for second and further level overheads, like (b) */ -- if (usesVFIO) -+ * Note that the NVIDIA RAM window must be accounted for the TCE -+ * table size, but *not* for the main RAM (maxMemory). This gives -+ * us the following passthroughLimit for the NVLink2 case: -+ * -+ * passthroughLimit = maxMemory + -+ * 128TiB/512KiB * #PHBs + 8 MiB */ -+ if (nvlink2Capable) { -+ passthroughLimit = maxMemory + -+ 128 * (1ULL<<30) / 512 * nPCIHostBridges + -+ 8192; -+ } else if (usesVFIO) { -+ /* For regular (non-NVLink2 present) VFIO passthrough, the value -+ * of passthroughLimit is: -+ * -+ * passthroughLimit := max( 2 GiB * #PHBs, (c) -+ * memory (d) -+ * + memory * 1/512 * #PHBs + 8 MiB ) (e) -+ * -+ * (c) is the pre-DDW VFIO DMA window accounting. We're allowing 2 -+ * GiB rather than 1 GiB -+ * -+ * (d) is the with-DDW (and memory pre-registration and related -+ * features) DMA window accounting - assuming that we only account -+ * RAM once, even if mapped to multiple PHBs -+ * -+ * (e) is the with-DDW userspace view and overhead for the 64-bit -+ * DMA window. This is based a bit on expected guest behaviour, but -+ * there really isn't a way to completely avoid that. We assume the -+ * guest requests a 64-bit DMA window (per PHB) just big enough to -+ * map all its RAM. 4 kiB page size gives the 1/512; it will be -+ * less with 64 kiB pages, less still if the guest is mapped with -+ * hugepages (unlike the default 32-bit DMA window, DDW windows -+ * can use large IOMMU pages). 8 MiB is for second and further level -+ * overheads, like (b) */ - passthroughLimit = MAX(2 * 1024 * 1024 * nPCIHostBridges, - memory + - memory / 512 * nPCIHostBridges + 8192); -+ } - - memKB = baseLimit + passthroughLimit; - --- -2.21.0 - diff --git a/SOURCES/libvirt-RHEL-Add-rhel-machine-types-to-qemuDomainMachineNeedsFDC.patch b/SOURCES/libvirt-RHEL-Add-rhel-machine-types-to-qemuDomainMachineNeedsFDC.patch index a32bf30..763b437 100644 --- a/SOURCES/libvirt-RHEL-Add-rhel-machine-types-to-qemuDomainMachineNeedsFDC.patch +++ b/SOURCES/libvirt-RHEL-Add-rhel-machine-types-to-qemuDomainMachineNeedsFDC.patch @@ -1,5 +1,5 @@ -From 74b69d4a7240c601fcd12c18d5e8d95d641ae922 Mon Sep 17 00:00:00 2001 -Message-Id: <74b69d4a7240c601fcd12c18d5e8d95d641ae922@dist-git> +From a04fcb5b463c90c47705ca0f28e40b73c00b6b72 Mon Sep 17 00:00:00 2001 +Message-Id: From: =?UTF-8?q?J=C3=A1n=20Tomko?= Date: Mon, 22 Feb 2016 12:51:51 +0100 Subject: [PATCH] RHEL: Add rhel machine types to qemuDomainMachineNeedsFDC @@ -13,23 +13,24 @@ https://bugzilla.redhat.com/show_bug.cgi?id=1227880 Signed-off-by: Jiri Denemark --- - src/qemu/qemu_domain.c | 3 +++ - 1 file changed, 3 insertions(+) + src/qemu/qemu_domain.c | 4 ++++ + 1 file changed, 4 insertions(+) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c -index 4c15d5a36a..4c2a162b85 100644 +index a6dde15bad..0edf316fff 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c -@@ -9239,6 +9239,9 @@ qemuDomainMachineNeedsFDC(const char *machine) - STRPREFIX(p, "2.2") || - STRPREFIX(p, "2.3")) - return false; -+ if (STRPREFIX(p, "rhel7.0.0") || -+ STRPREFIX(p, "rhel7.1.0")) -+ return false; - return true; +@@ -12631,6 +12631,10 @@ qemuDomainMachineNeedsFDC(const char *machine, + return false; } - return false; + ++ if (STRPREFIX(p, "rhel7.0.0") || ++ STRPREFIX(p, "rhel7.1.0")) ++ return false; ++ + return true; + } + -- -2.18.0 +2.25.0 diff --git a/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch b/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch index 449b106..345c0b2 100644 --- a/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch +++ b/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch @@ -1,5 +1,5 @@ -From 72c5455c00fcec50bae3e71a6fbd6330e524be0a Mon Sep 17 00:00:00 2001 -Message-Id: <72c5455c00fcec50bae3e71a6fbd6330e524be0a@dist-git> +From 3e50b013277c7fa05987ceba440f8c4583b6c634 Mon Sep 17 00:00:00 2001 +Message-Id: <3e50b013277c7fa05987ceba440f8c4583b6c634@dist-git> From: =?UTF-8?q?J=C3=A1n=20Tomko?= Date: Mon, 27 Aug 2018 13:09:38 +0200 Subject: [PATCH] RHEL: Fix virConnectGetMaxVcpus output @@ -26,10 +26,10 @@ Reviewed-by: Andrea Bolognani 1 file changed, 5 insertions(+) diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c -index 1e31be5900..effe04ca3a 100644 +index 7f14340f49..256976cce1 100644 --- a/src/util/virhostcpu.c +++ b/src/util/virhostcpu.c -@@ -1186,6 +1186,11 @@ virHostCPUGetKVMMaxVCPUs(void) +@@ -1169,6 +1169,11 @@ virHostCPUGetKVMMaxVCPUs(void) return -1; } @@ -42,5 +42,5 @@ index 1e31be5900..effe04ca3a 100644 /* at first try KVM_CAP_MAX_VCPUS to determine the maximum count */ if ((ret = ioctl(fd, KVM_CHECK_EXTENSION, KVM_CAP_MAX_VCPUS)) > 0) -- -2.18.0 +2.25.0 diff --git a/SOURCES/libvirt-RHEL-Hack-around-changed-Broadwell-Haswell-CPUs.patch b/SOURCES/libvirt-RHEL-Hack-around-changed-Broadwell-Haswell-CPUs.patch index 69fece3..12d8958 100644 --- a/SOURCES/libvirt-RHEL-Hack-around-changed-Broadwell-Haswell-CPUs.patch +++ b/SOURCES/libvirt-RHEL-Hack-around-changed-Broadwell-Haswell-CPUs.patch @@ -1,5 +1,5 @@ -From 498389f6b88547c352add4b209d61896a5143c00 Mon Sep 17 00:00:00 2001 -Message-Id: <498389f6b88547c352add4b209d61896a5143c00@dist-git> +From 0dd015e1aff1a56a4584824d1a97c9eacabf7f03 Mon Sep 17 00:00:00 2001 +Message-Id: <0dd015e1aff1a56a4584824d1a97c9eacabf7f03@dist-git> From: Jiri Denemark Date: Fri, 27 Mar 2015 12:48:40 +0100 Subject: [PATCH] RHEL: Hack around changed Broadwell/Haswell CPUs @@ -18,29 +18,31 @@ https://bugzilla.redhat.com/show_bug.cgi?id=1199446 Signed-off-by: Jiri Denemark --- - src/qemu/qemu_command.c | 29 +++++++++++++++++++ + src/qemu/qemu_command.c | 21 +++++++++++++++++++ tests/qemuxml2argvdata/cpu-Haswell.args | 2 +- - .../qemuxml2argvdata/cpu-host-model-cmt.args | 3 +- - tests/qemuxml2argvdata/cpu-tsc-frequency.args | 2 +- + .../qemuxml2argvdata/cpu-host-model-cmt.args | 2 +- + .../cpu-translation.x86_64-4.0.0.args | 4 ++-- + .../cpu-translation.x86_64-latest.args | 4 ++-- + tests/qemuxml2argvdata/cpu-tsc-frequency.args | 4 ++-- tests/qemuxml2argvdata/q35-acpi-nouefi.args | 2 +- tests/qemuxml2argvdata/q35-acpi-uefi.args | 2 +- tests/qemuxml2argvdata/q35-noacpi-nouefi.args | 2 +- - 7 files changed, 36 insertions(+), 6 deletions(-) + 9 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c -index 4fc3176ad3..c1eefca639 100644 +index 904d2beab5..e10cc7fc74 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c -@@ -6677,6 +6677,8 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, +@@ -6469,6 +6469,8 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, + { size_t i; - virCapsPtr caps = NULL; virCPUDefPtr cpu = def->cpu; + bool hle = false; + bool rtm = false; - if (!(caps = virQEMUDriverGetCapabilities(driver, false))) - goto cleanup; -@@ -6734,6 +6736,11 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, + switch ((virCPUMode) cpu->mode) { + case VIR_CPU_MODE_HOST_PASSTHROUGH: +@@ -6524,6 +6526,11 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, virBufferAsprintf(buf, ",vendor=%s", cpu->vendor_id); for (i = 0; i < cpu->nfeatures; i++) { @@ -52,7 +54,7 @@ index 4fc3176ad3..c1eefca639 100644 switch ((virCPUFeaturePolicy) cpu->features[i].policy) { case VIR_CPU_FEATURE_FORCE: case VIR_CPU_FEATURE_REQUIRE: -@@ -6757,6 +6764,28 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, +@@ -6541,6 +6548,20 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, } } @@ -64,81 +66,104 @@ index 4fc3176ad3..c1eefca639 100644 + */ + if (STREQ_NULLABLE(cpu->model, "Broadwell") || + STREQ_NULLABLE(cpu->model, "Haswell")) { -+ if (!rtm) { -+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION)) -+ virBufferAddLit(buf, ",rtm=on"); -+ else -+ virBufferAddLit(buf, ",+rtm"); -+ } -+ if (!hle) { -+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION)) -+ virBufferAddLit(buf, ",hle=on"); -+ else -+ virBufferAddLit(buf, ",+hle"); -+ } ++ if (!rtm) ++ qemuBuildCpuFeature(qemuCaps, buf, "rtm", true); ++ if (!hle) ++ qemuBuildCpuFeature(qemuCaps, buf, "hle", true); + } + - ret = 0; - cleanup: - virObjectUnref(caps); + return 0; + } + diff --git a/tests/qemuxml2argvdata/cpu-Haswell.args b/tests/qemuxml2argvdata/cpu-Haswell.args -index c7ce396d05..6f20359524 100644 +index a33b16f7ce..d35de5ea58 100644 --- a/tests/qemuxml2argvdata/cpu-Haswell.args +++ b/tests/qemuxml2argvdata/cpu-Haswell.args -@@ -8,7 +8,7 @@ QEMU_AUDIO_DRV=none \ +@@ -11,7 +11,7 @@ QEMU_AUDIO_DRV=none \ -name QEMUGuest1 \ -S \ -machine pc,accel=kvm,usb=off,dump-guest-core=off \ --cpu Haswell \ +-cpu Haswell,+rtm,+hle \ -m 214 \ + -realtime mlock=off \ -smp 6,sockets=6,cores=1,threads=1 \ - -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ diff --git a/tests/qemuxml2argvdata/cpu-host-model-cmt.args b/tests/qemuxml2argvdata/cpu-host-model-cmt.args -index 8767278d11..d236aa9e09 100644 +index 42f969fd62..c8795acb3e 100644 --- a/tests/qemuxml2argvdata/cpu-host-model-cmt.args +++ b/tests/qemuxml2argvdata/cpu-host-model-cmt.args -@@ -9,7 +9,8 @@ QEMU_AUDIO_DRV=none \ +@@ -12,7 +12,7 @@ QEMU_AUDIO_DRV=none \ -S \ -machine pc,accel=tcg,usb=off,dump-guest-core=off \ -cpu Haswell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,\ --+smx,+est,+tm2,+xtpr,+pdcm,+osxsave,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm \ -++smx,+est,+tm2,+xtpr,+pdcm,+osxsave,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,+rtm,\ -++hle \ +-+smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm \ +++smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,+rtm,+hle \ -m 214 \ + -realtime mlock=off \ -smp 6,sockets=6,cores=1,threads=1 \ - -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +diff --git a/tests/qemuxml2argvdata/cpu-translation.x86_64-4.0.0.args b/tests/qemuxml2argvdata/cpu-translation.x86_64-4.0.0.args +index f8e19fca24..08c672fd2c 100644 +--- a/tests/qemuxml2argvdata/cpu-translation.x86_64-4.0.0.args ++++ b/tests/qemuxml2argvdata/cpu-translation.x86_64-4.0.0.args +@@ -14,8 +14,8 @@ QEMU_AUDIO_DRV=none \ + file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ + -machine pc-i440fx-4.0,accel=tcg,usb=off,dump-guest-core=off \ + -cpu Haswell,pclmuldq=on,ds_cpl=on,tsc_adjust=on,fxsr_opt=on,lahf_lm=on,\ +-cmp_legacy=on,nodeid_msr=on,perfctr_core=on,perfctr_nb=on,kvm_pv_eoi=on,\ +-kvm_pv_unhalt=on \ ++cmp_legacy=on,nodeid_msr=on,perfctr_core=on,perfctr_nb=on,rtm=on,hle=on,\ ++kvm_pv_eoi=on,kvm_pv_unhalt=on \ + -m 214 \ + -overcommit mem-lock=off \ + -smp 1,sockets=1,cores=1,threads=1 \ +diff --git a/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args b/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args +index 9322b826f4..1dbfc9553b 100644 +--- a/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args +@@ -14,8 +14,8 @@ QEMU_AUDIO_DRV=none \ + file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ + -machine pc,accel=tcg,usb=off,dump-guest-core=off \ + -cpu Haswell,pclmulqdq=on,ds-cpl=on,tsc-adjust=on,fxsr-opt=on,lahf-lm=on,\ +-cmp-legacy=on,nodeid-msr=on,perfctr-core=on,perfctr-nb=on,kvm-pv-eoi=on,\ +-kvm-pv-unhalt=on \ ++cmp-legacy=on,nodeid-msr=on,perfctr-core=on,perfctr-nb=on,rtm=on,hle=on,\ ++kvm-pv-eoi=on,kvm-pv-unhalt=on \ + -m 214 \ + -overcommit mem-lock=off \ + -smp 1,sockets=1,cores=1,threads=1 \ diff --git a/tests/qemuxml2argvdata/cpu-tsc-frequency.args b/tests/qemuxml2argvdata/cpu-tsc-frequency.args -index 7824dea96f..216fd43014 100644 +index 55b72b4404..45a777d468 100644 --- a/tests/qemuxml2argvdata/cpu-tsc-frequency.args +++ b/tests/qemuxml2argvdata/cpu-tsc-frequency.args -@@ -10,7 +10,7 @@ QEMU_AUDIO_DRV=none \ +@@ -12,8 +12,8 @@ QEMU_AUDIO_DRV=none \ + -S \ -machine pc,accel=kvm,usb=off,dump-guest-core=off \ -cpu Haswell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,\ - +smx,+est,+tm2,+xtpr,+pdcm,+osxsave,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,\ --+invtsc,tsc-frequency=3504000000 \ -++invtsc,+rtm,+hle,tsc-frequency=3504000000 \ +-+smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,+invtsc,\ +-tsc-frequency=3504000000 \ +++smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,+invtsc,+rtm,\ +++hle,tsc-frequency=3504000000 \ -m 214 \ + -realtime mlock=off \ -smp 1,sockets=1,cores=1,threads=1 \ - -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ diff --git a/tests/qemuxml2argvdata/q35-acpi-nouefi.args b/tests/qemuxml2argvdata/q35-acpi-nouefi.args -index caef49ea16..a9375a35db 100644 +index 09e06c96ea..aed56fb1fc 100644 --- a/tests/qemuxml2argvdata/q35-acpi-nouefi.args +++ b/tests/qemuxml2argvdata/q35-acpi-nouefi.args -@@ -8,7 +8,7 @@ QEMU_AUDIO_DRV=none \ +@@ -11,7 +11,7 @@ QEMU_AUDIO_DRV=none \ -name guest \ -S \ -machine q35,accel=tcg,usb=off,dump-guest-core=off \ --cpu Haswell \ +-cpu Haswell,+rtm,+hle \ -m 1024 \ + -realtime mlock=off \ -smp 1,sockets=1,cores=1,threads=1 \ - -uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ diff --git a/tests/qemuxml2argvdata/q35-acpi-uefi.args b/tests/qemuxml2argvdata/q35-acpi-uefi.args -index a3293aeb9d..8e3368b9e9 100644 +index d00fe5bc1d..1f4bfe7f87 100644 --- a/tests/qemuxml2argvdata/q35-acpi-uefi.args +++ b/tests/qemuxml2argvdata/q35-acpi-uefi.args -@@ -8,7 +8,7 @@ QEMU_AUDIO_DRV=none \ +@@ -11,7 +11,7 @@ QEMU_AUDIO_DRV=none \ -name guest \ -S \ -machine q35,accel=tcg,usb=off,dump-guest-core=off \ @@ -148,18 +173,18 @@ index a3293aeb9d..8e3368b9e9 100644 readonly=on \ -drive file=/var/lib/libvirt/qemu/nvram/guest_VARS.fd,if=pflash,format=raw,\ diff --git a/tests/qemuxml2argvdata/q35-noacpi-nouefi.args b/tests/qemuxml2argvdata/q35-noacpi-nouefi.args -index fab2a6fcb0..0dd61840ef 100644 +index de34dff1cf..ccea7f91f9 100644 --- a/tests/qemuxml2argvdata/q35-noacpi-nouefi.args +++ b/tests/qemuxml2argvdata/q35-noacpi-nouefi.args -@@ -8,7 +8,7 @@ QEMU_AUDIO_DRV=none \ +@@ -11,7 +11,7 @@ QEMU_AUDIO_DRV=none \ -name guest \ -S \ -machine q35,accel=tcg,usb=off,dump-guest-core=off \ --cpu Haswell \ +-cpu Haswell,+rtm,+hle \ -m 1024 \ + -realtime mlock=off \ -smp 1,sockets=1,cores=1,threads=1 \ - -uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ -- -2.18.0 +2.25.0 diff --git a/SOURCES/libvirt-RHEL-network-regain-guest-network-connectivity-after-firewalld-switch-to-nftables.patch b/SOURCES/libvirt-RHEL-network-regain-guest-network-connectivity-after-firewalld-switch-to-nftables.patch deleted file mode 100644 index 081d0e9..0000000 --- a/SOURCES/libvirt-RHEL-network-regain-guest-network-connectivity-after-firewalld-switch-to-nftables.patch +++ /dev/null @@ -1,146 +0,0 @@ -From 54e270d7fb68b41002654374d395e4f260a24add Mon Sep 17 00:00:00 2001 -Message-Id: <54e270d7fb68b41002654374d395e4f260a24add@dist-git> -From: Laine Stump -Date: Mon, 15 Oct 2018 20:31:02 -0400 -Subject: [PATCH] RHEL: network: regain guest network connectivity after - firewalld switch to nftables -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This is a DOWNSTREAM ONLY patch to temporarily get back guest network -connectivity while still allowing the firewalld backend to use -nftables (which is the default with RHEL8). - -The circumstances that cause the problem: - -In the past (when both libvirt and firewalld used iptables), if either -libvirt's rules *OR* firewalld's rules accepted a packet, it would be -accepted. - -But now firewalld uses nftables for its backend, while libvirt's -firewall rules are still using iptables; iptables rules are still -processed, but at a different time during packet processing than the -firewalld nftables hooks. The result is that a packet must be accepted -by *BOTH* the libvirt iptables rules *AND* the firewalld nftable rules -in order to be accepted. - -This causes pain for two types of traffic: - -1) libvirt always adds rules to permit DNS and DHCP (and sometimes -TFTP) from guests to the host. But libvirt's bridges are in -firewalld's "default" zone (which is usually the zone called -"public"). The public zone allows ssh, but doesn't allow DNS, DHCP, or -TFTP. So guests connected to libvirt's bridges can't acquire an IP -address from DHCP, nor can they make DNS queries to the DNS server -libvirt has setup on the host. - -2) firewalld's higher level "rich rules" don't yet have the ability to -configure the acceptance of forwarded traffic (traffic that is going -somewhere beyond the host), so any traffic that needs to be forwarded -is rejected. - -libvirt can't send "direct" nftables rules (firewalld only supports -that for iptables), so we can't solve this problem by just sending -direct nftables rules instead of iptables rules. - -However, we can take advantage of a quirk in firewalld zones that have -a default policy of accept (meaning any packet that doesn't match a -specific rule in the zone will be accepted) - this default accept will -also accept forwarded traffic (not just traffic destined for the host). - -So, as a temporary solution to get all network traffic flowing, this -patch creates a new firewalld zone called "libvirt" which is setup to -include interfaces named virbr0-virbr9, and has a default policy of -accept. With this zone installed, libvirt networks that use the names -virbr0-virbr9 will have *all* their traffic accepted, both to the host -and to/from the rest of the network. - -firewalld zones can't normally be added to the runtime config of -firewalld, so we have to reload all of the permanent config for it to -be recognized. This is done with a call to "firewall-cmd --reload" -during postinstall and postuninstall. In the case that firewalld is -inactive, firewall-cmd exits without doing anything (i.e. it doesn't -start up firewalld.service if it's not already started). - -This obviously can't be a permanent solution, since it allows guests -to have access to *all* services on the host. However, it doesn't -allow QE and beta testers to test firewalld with an nftables backend -(which is important for firewalld and nftables devs) without breaking -network connectivity for libvirt managed virtual machines (so testing -of those can also take place. - -Resolves: https://bugzilla.redhat.com/1638864 - -This problem is discussed in more detail in this message thread: - -https://post-office.corp.redhat.com/mailman/private/virt-devel/2018-September/msg00145.html -https://post-office.corp.redhat.com/mailman/private/virt-devel/2018-October/msg00042.html - -and in the BZ assigned to firewalld: https://bugzilla.redhat.com/1623841 - -Signed-off-by: Laine Stump -Acked-by: Daniel P. Berrangé -Reviewed-by: Jiri Denemark ---- - libvirt.spec.in | 14 ++++++++++++++ - src/network/Makefile.inc.am | 10 +++++++++- - src/network/libvirt.zone | 15 +++++++++++++++ - 3 files changed, 38 insertions(+), 1 deletion(-) - create mode 100644 src/network/libvirt.zone - -diff --git a/src/network/Makefile.inc.am b/src/network/Makefile.inc.am -index 508c8c0422..20d899e699 100644 ---- a/src/network/Makefile.inc.am -+++ b/src/network/Makefile.inc.am -@@ -87,6 +87,11 @@ install-data-network: - ( cd $(DESTDIR)$(confdir)/qemu/networks/autostart && \ - rm -f default.xml && \ - $(LN_S) ../default.xml default.xml ) -+if HAVE_FIREWALLD -+ $(MKDIR_P) "$(DESTDIR)$(prefix)/lib/firewalld/zones" -+ $(INSTALL_DATA) $(srcdir)/network/libvirt.zone \ -+ $(DESTDIR)$(prefix)/lib/firewalld/zones/libvirt.xml -+endif HAVE_FIREWALLD - - uninstall-data-network: - rm -f $(DESTDIR)$(confdir)/qemu/networks/autostart/default.xml -@@ -95,10 +100,13 @@ uninstall-data-network: - rmdir "$(DESTDIR)$(confdir)/qemu/networks" || : - rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/network" ||: - rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/network" ||: -+if HAVE_FIREWALLD -+ rm -f $(DESTDIR)$(prefix)/lib/firewalld/zones/libvirt.xml -+endif HAVE_FIREWALLD - - endif WITH_NETWORK - --EXTRA_DIST += network/default.xml -+EXTRA_DIST += network/default.xml network/libvirt.zone - - .PHONY: \ - install-data-network \ -diff --git a/src/network/libvirt.zone b/src/network/libvirt.zone -new file mode 100644 -index 0000000000..355a70b4da ---- /dev/null -+++ b/src/network/libvirt.zone -@@ -0,0 +1,15 @@ -+ -+ -+ libvirt -+ All network connections are accepted. This also permits packets to/from interfaces in the zone to be forwarded. This zone is intended to be used only by libvirt virtual networks. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -2.19.1 - diff --git a/SOURCES/libvirt-RHEL-qemu-Add-ability-to-set-sgio-values-for-hostdev.patch b/SOURCES/libvirt-RHEL-qemu-Add-ability-to-set-sgio-values-for-hostdev.patch index 537e868..95cd351 100644 --- a/SOURCES/libvirt-RHEL-qemu-Add-ability-to-set-sgio-values-for-hostdev.patch +++ b/SOURCES/libvirt-RHEL-qemu-Add-ability-to-set-sgio-values-for-hostdev.patch @@ -1,5 +1,5 @@ -From 2d4b19613c462e876ee1327d600f5cbbb998c540 Mon Sep 17 00:00:00 2001 -Message-Id: <2d4b19613c462e876ee1327d600f5cbbb998c540@dist-git> +From fce502cf5233d800479c2efcf7721ab895db8998 Mon Sep 17 00:00:00 2001 +Message-Id: From: John Ferlan Date: Mon, 17 Dec 2018 20:42:30 -0500 Subject: [PATCH] RHEL: qemu: Add ability to set sgio values for hostdev @@ -19,22 +19,22 @@ Signed-off-by: Jiri Denemark (cherry picked from commit f2cf0ae7bc371c75f6c0e79192711f2b1d201b10) Reviewed-by: Ján Tomko --- - src/qemu/qemu_conf.c | 16 +++++++++------- - 1 file changed, 9 insertions(+), 7 deletions(-) + src/qemu/qemu_conf.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c -index a4f545ef92..3ea9784854 100644 +index b62dd1df52..ce7869e6be 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c -@@ -1633,6 +1633,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) +@@ -1810,6 +1810,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) virDomainDiskDefPtr disk = NULL; virDomainHostdevDefPtr hostdev = NULL; - char *sysfs_path = NULL; -+ char *hostdev_path = NULL; + g_autofree char *sysfs_path = NULL; ++ g_autofree char *hostdev_path = NULL; const char *path = NULL; int val = -1; - int ret = -1; -@@ -1654,14 +1655,10 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) + +@@ -1830,14 +1831,10 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) if (!qemuIsSharedHostdev(hostdev)) return 0; @@ -43,7 +43,7 @@ index a4f545ef92..3ea9784854 100644 - _("'sgio' is not supported for SCSI " - "generic device yet ")); + if (!(hostdev_path = qemuGetHostdevPath(hostdev))) - goto cleanup; + return -1; - } - return 0; @@ -51,8 +51,8 @@ index a4f545ef92..3ea9784854 100644 } else { return 0; } -@@ -1670,7 +1667,11 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) - goto cleanup; +@@ -1846,7 +1843,11 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) + return -1; /* By default, filter the SG_IO commands, i.e. set unpriv_sgio to 0. */ - val = (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED); @@ -64,14 +64,6 @@ index a4f545ef92..3ea9784854 100644 /* Do not do anything if unpriv_sgio is not supported by the kernel and the * whitelist is enabled. But if requesting unfiltered access, always call -@@ -1683,6 +1684,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) - ret = 0; - - cleanup: -+ VIR_FREE(hostdev_path); - VIR_FREE(sysfs_path); - return ret; - } -- -2.20.1 +2.25.0 diff --git a/SOURCES/libvirt-RHEL-qemu-Add-check-for-unpriv-sgio-for-SCSI-generic-host-device.patch b/SOURCES/libvirt-RHEL-qemu-Add-check-for-unpriv-sgio-for-SCSI-generic-host-device.patch index 61a15f5..5f0af94 100644 --- a/SOURCES/libvirt-RHEL-qemu-Add-check-for-unpriv-sgio-for-SCSI-generic-host-device.patch +++ b/SOURCES/libvirt-RHEL-qemu-Add-check-for-unpriv-sgio-for-SCSI-generic-host-device.patch @@ -1,5 +1,5 @@ -From c39257f41ccb22272c6161777bf71390676bf7f0 Mon Sep 17 00:00:00 2001 -Message-Id: +From 5a192657ad4e08fc773fef90c6b07df3620fa1c2 Mon Sep 17 00:00:00 2001 +Message-Id: <5a192657ad4e08fc773fef90c6b07df3620fa1c2@dist-git> From: John Ferlan Date: Mon, 17 Dec 2018 20:42:31 -0500 Subject: [PATCH] RHEL: qemu: Add check for unpriv sgio for SCSI generic host @@ -23,26 +23,29 @@ Signed-off-by: Jiri Denemark (cherry picked from commit 712005bcf26190dc6fd1fe56283377987909cc4b) Reviewed-by: Ján Tomko --- - src/qemu/qemu_conf.c | 15 +++++++++++++++ - 1 file changed, 15 insertions(+) + src/qemu/qemu_conf.c | 20 ++++++++++++++++++-- + 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c -index 3ea9784854..7d15af9c0b 100644 +index ce7869e6be..2a84972fd9 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c -@@ -1473,6 +1473,8 @@ qemuAddSharedHostdev(virQEMUDriverPtr driver, +@@ -1717,13 +1717,29 @@ qemuSharedHostdevAddRemoveInternal(virQEMUDriverPtr driver, { - char *dev_path = NULL; - char *key = NULL; + g_autofree char *dev_path = NULL; + g_autofree char *key = NULL; + virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi; + virDomainHostdevSubsysSCSIHostPtr scsihostsrc = &scsisrc->u.host; int ret = -1; if (!qemuIsSharedHostdev(hostdev)) -@@ -1481,6 +1483,19 @@ qemuAddSharedHostdev(virQEMUDriverPtr driver, - if (!(dev_path = qemuGetHostdevPath(hostdev))) - goto cleanup; + return 0; +- if (!(dev_path = qemuGetHostdevPath(hostdev)) || +- !(key = qemuGetSharedDeviceKey(dev_path))) ++ if (!(dev_path = qemuGetHostdevPath(hostdev))) ++ return -1; ++ + if ((ret = qemuCheckUnprivSGIO(driver->sharedDevices, dev_path, + scsisrc->sgio)) < 0) { + if (ret == -2) { @@ -51,14 +54,14 @@ index 3ea9784854..7d15af9c0b 100644 + "conflicts with other active domains"), + scsihostsrc->adapter, scsihostsrc->bus, + scsihostsrc->target, scsihostsrc->unit); -+ ret = -1; + } -+ goto cleanup; ++ return -1; + } + - if (!(key = qemuGetSharedDeviceKey(dev_path))) - goto cleanup; ++ if (!(key = qemuGetSharedDeviceKey(dev_path))) + return -1; + qemuDriverLock(driver); -- -2.20.1 +2.25.0 diff --git a/SOURCES/libvirt-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch b/SOURCES/libvirt-RHEL-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch similarity index 78% rename from SOURCES/libvirt-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch rename to SOURCES/libvirt-RHEL-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch index 80f7399..2b30707 100644 --- a/SOURCES/libvirt-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch +++ b/SOURCES/libvirt-RHEL-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch @@ -1,8 +1,8 @@ -From 861a1a4d299c57f31fa091c6b74cddf80681bdf0 Mon Sep 17 00:00:00 2001 -Message-Id: <861a1a4d299c57f31fa091c6b74cddf80681bdf0@dist-git> +From e79d54ff8e760ac1a200a37fb05cc9aa758c48d3 Mon Sep 17 00:00:00 2001 +Message-Id: From: John Ferlan Date: Mon, 17 Dec 2018 20:42:33 -0500 -Subject: [PATCH] qemu: Alter qemuSetUnprivSGIO hostdev shareable logic +Subject: [PATCH] RHEL: qemu: Alter qemuSetUnprivSGIO hostdev shareable logic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -24,10 +24,10 @@ Reviewed-by: Ján Tomko 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c -index de0cbca083..5971f3eb64 100644 +index faabc4d49f..590052b035 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c -@@ -1667,9 +1667,6 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) +@@ -1844,9 +1844,6 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) } else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) { hostdev = dev->data.hostdev; @@ -35,9 +35,9 @@ index de0cbca083..5971f3eb64 100644 - return 0; - if (!(hostdev_path = qemuGetHostdevPath(hostdev))) - goto cleanup; + return -1; -@@ -1686,7 +1683,9 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) +@@ -1863,7 +1860,9 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED) { val = 1; } else { @@ -49,5 +49,5 @@ index de0cbca083..5971f3eb64 100644 val = 1; } -- -2.20.1 +2.25.0 diff --git a/SOURCES/libvirt-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch b/SOURCES/libvirt-RHEL-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch similarity index 76% rename from SOURCES/libvirt-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch rename to SOURCES/libvirt-RHEL-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch index 87a119e..850b5ab 100644 --- a/SOURCES/libvirt-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch +++ b/SOURCES/libvirt-RHEL-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch @@ -1,8 +1,8 @@ -From c0f26a13c6ddd9aca729012d3a31347f77d52c68 Mon Sep 17 00:00:00 2001 -Message-Id: +From fa46b5b4d5bb732462d0d5484cc010aa652d821b Mon Sep 17 00:00:00 2001 +Message-Id: From: John Ferlan Date: Mon, 17 Dec 2018 20:42:32 -0500 -Subject: [PATCH] qemu: Alter @val usage in qemuSetUnprivSGIO +Subject: [PATCH] RHEL: qemu: Alter @val usage in qemuSetUnprivSGIO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -23,20 +23,20 @@ Reviewed-by: Ján Tomko 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c -index 7d15af9c0b..de0cbca083 100644 +index 2a84972fd9..faabc4d49f 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c -@@ -1650,7 +1650,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) - char *sysfs_path = NULL; - char *hostdev_path = NULL; +@@ -1828,7 +1828,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) + g_autofree char *sysfs_path = NULL; + g_autofree char *hostdev_path = NULL; const char *path = NULL; - int val = -1; + int val = 0; - int ret = -1; /* "sgio" is only valid for block disk; cdrom -@@ -1682,11 +1682,14 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) - goto cleanup; + * and floopy disk can have empty source. +@@ -1859,11 +1859,14 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) + return -1; /* By default, filter the SG_IO commands, i.e. set unpriv_sgio to 0. */ - if (dev->type == VIR_DOMAIN_DEVICE_DISK) @@ -56,5 +56,5 @@ index 7d15af9c0b..de0cbca083 100644 /* Do not do anything if unpriv_sgio is not supported by the kernel and the * whitelist is enabled. But if requesting unfiltered access, always call -- -2.20.1 +2.25.0 diff --git a/SOURCES/libvirt-RHEL-qemu-Fix-crash-trying-to-use-iSCSI-hostdev.patch b/SOURCES/libvirt-RHEL-qemu-Fix-crash-trying-to-use-iSCSI-hostdev.patch index c86c563..e0bc6a1 100644 --- a/SOURCES/libvirt-RHEL-qemu-Fix-crash-trying-to-use-iSCSI-hostdev.patch +++ b/SOURCES/libvirt-RHEL-qemu-Fix-crash-trying-to-use-iSCSI-hostdev.patch @@ -1,5 +1,5 @@ -From 11bfd4f26c090b95a100aaf056ecfa799dfce979 Mon Sep 17 00:00:00 2001 -Message-Id: <11bfd4f26c090b95a100aaf056ecfa799dfce979@dist-git> +From 163740bff28c6f1a82663bc652f2cd5df39e4276 Mon Sep 17 00:00:00 2001 +Message-Id: <163740bff28c6f1a82663bc652f2cd5df39e4276@dist-git> From: John Ferlan Date: Fri, 25 Jan 2019 12:19:12 -0500 Subject: [PATCH] RHEL: qemu: Fix crash trying to use iSCSI hostdev @@ -26,10 +26,10 @@ Reviewed-by: Ján Tomko 1 file changed, 4 insertions(+) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c -index 768e9d8308..a81298326f 100644 +index 0674292fab..3d2f0e7bbb 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c -@@ -1667,6 +1667,10 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) +@@ -1844,6 +1844,10 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) } else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) { hostdev = dev->data.hostdev; @@ -38,8 +38,8 @@ index 768e9d8308..a81298326f 100644 + return 0; + if (!(hostdev_path = qemuGetHostdevPath(hostdev))) - goto cleanup; + return -1; -- -2.20.1 +2.25.0 diff --git a/SOURCES/libvirt-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch b/SOURCES/libvirt-RHEL-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch similarity index 84% rename from SOURCES/libvirt-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch rename to SOURCES/libvirt-RHEL-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch index 8e8d799..b4d84ed 100644 --- a/SOURCES/libvirt-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch +++ b/SOURCES/libvirt-RHEL-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch @@ -1,8 +1,8 @@ -From d0f2fffa7c1a86f56f18143a1a14b9a32f8bcf16 Mon Sep 17 00:00:00 2001 -Message-Id: +From f6a05ac3cb33c473de8ed49b53d22910fc0140df Mon Sep 17 00:00:00 2001 +Message-Id: From: John Ferlan Date: Wed, 16 Jan 2019 15:54:31 -0500 -Subject: [PATCH] qemu: Fix logic error in qemuSetUnprivSGIO +Subject: [PATCH] RHEL: qemu: Fix logic error in qemuSetUnprivSGIO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -38,11 +38,11 @@ Reviewed-by: Ján Tomko 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c -index 5971f3eb64..768e9d8308 100644 +index 590052b035..0674292fab 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c -@@ -1679,9 +1679,9 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) - goto cleanup; +@@ -1856,9 +1856,9 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) + return -1; /* By default, filter the SG_IO commands, i.e. set unpriv_sgio to 0. */ - if (dev->type == VIR_DOMAIN_DEVICE_DISK && @@ -55,5 +55,5 @@ index 5971f3eb64..768e9d8308 100644 /* Only settable if was present for hostdev */ if (qemuIsSharedHostdev(hostdev) && -- -2.20.1 +2.25.0 diff --git a/SOURCES/libvirt-RHEL-qemuCheckUnprivSGIO-use-sysfs_path-to-get-unpriv_sgio.patch b/SOURCES/libvirt-RHEL-qemuCheckUnprivSGIO-use-sysfs_path-to-get-unpriv_sgio.patch index 47ae4bc..d9855b0 100644 --- a/SOURCES/libvirt-RHEL-qemuCheckUnprivSGIO-use-sysfs_path-to-get-unpriv_sgio.patch +++ b/SOURCES/libvirt-RHEL-qemuCheckUnprivSGIO-use-sysfs_path-to-get-unpriv_sgio.patch @@ -1,7 +1,7 @@ -From 825720316c0f63b029673f883c79a45e49e0f8ab Mon Sep 17 00:00:00 2001 -Message-Id: <825720316c0f63b029673f883c79a45e49e0f8ab@dist-git> +From ef5a82d50464478a302cb59804d03e4a3dada83e Mon Sep 17 00:00:00 2001 +Message-Id: From: =?UTF-8?q?J=C3=A1n=20Tomko?= -Date: Fri, 6 Mar 2020 15:51:49 +0100 +Date: Fri, 6 Mar 2020 15:52:26 +0100 Subject: [PATCH] RHEL: qemuCheckUnprivSGIO: use @sysfs_path to get unpriv_sgio MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -14,27 +14,27 @@ removed the device_path -> sysfs_path conversion from both virGetDeviceUnprivSGIO and virSetDeviceUnprivSGIO, but only adjusted one of the callers. -https://bugzilla.redhat.com/show_bug.cgi?id=1808399 +https://bugzilla.redhat.com/show_bug.cgi?id=1808400 Signed-off-by: Ján Tomko Signed-off-by: Andrea Bolognani -Message-Id: <20200306145149.1610286-7-abologna@redhat.com> +Message-Id: <20200306145226.1610708-7-abologna@redhat.com> Reviewed-by: Jiri Denemark --- src/qemu/qemu_conf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c -index 5788354444..a86e340013 100644 +index b61d7e59fa..6a22d78ac6 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c -@@ -1255,7 +1255,7 @@ qemuCheckUnprivSGIO(virHashTablePtr sharedDevices, - goto cleanup; - } +@@ -1430,7 +1430,7 @@ qemuCheckUnprivSGIO(virHashTablePtr sharedDevices, + if (!(virHashLookup(sharedDevices, key))) + return 0; - if (virGetDeviceUnprivSGIO(device_path, &val) < 0) + if (virGetDeviceUnprivSGIO(sysfs_path, &val) < 0) - goto cleanup; + return -1; /* Error message on failure needs to be handled in caller -- diff --git a/SOURCES/libvirt-RHEL-qemuSetUnprivSGIO-Actually-use-calculated-sysfs_path-to-set-unpriv_sgio.patch b/SOURCES/libvirt-RHEL-qemuSetUnprivSGIO-Actually-use-calculated-sysfs_path-to-set-unpriv_sgio.patch index ee1bd1a..b4ed1ae 100644 --- a/SOURCES/libvirt-RHEL-qemuSetUnprivSGIO-Actually-use-calculated-sysfs_path-to-set-unpriv_sgio.patch +++ b/SOURCES/libvirt-RHEL-qemuSetUnprivSGIO-Actually-use-calculated-sysfs_path-to-set-unpriv_sgio.patch @@ -1,7 +1,7 @@ -From 785d2dd780b472bf857dd962d910addd9ff7b07f Mon Sep 17 00:00:00 2001 -Message-Id: <785d2dd780b472bf857dd962d910addd9ff7b07f@dist-git> +From 717423e7a452b0715e95b492b15dc08983677d12 Mon Sep 17 00:00:00 2001 +Message-Id: <717423e7a452b0715e95b492b15dc08983677d12@dist-git> From: Michal Privoznik -Date: Fri, 6 Mar 2020 15:51:48 +0100 +Date: Fri, 6 Mar 2020 15:52:25 +0100 Subject: [PATCH] RHEL: qemuSetUnprivSGIO: Actually use calculated @sysfs_path to set unpriv_sgio @@ -11,11 +11,11 @@ unpriv_sgio. However, virSetDeviceUnprivSGIO() does not care about that - it constructs the path on it's own again. This is suboptimal in either case - we already have the path constructed. -https://bugzilla.redhat.com/show_bug.cgi?id=1808388 +https://bugzilla.redhat.com/show_bug.cgi?id=1808390 Signed-off-by: Michal Privoznik Signed-off-by: Andrea Bolognani -Message-Id: <20200306145149.1610286-6-abologna@redhat.com> +Message-Id: <20200306145226.1610708-6-abologna@redhat.com> Reviewed-by: Jiri Denemark --- src/qemu/qemu_conf.c | 8 +++----- @@ -24,27 +24,27 @@ Reviewed-by: Jiri Denemark 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c -index 5636277888..5788354444 100644 +index 6d6feb97cd..b61d7e59fa 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c -@@ -1255,7 +1255,7 @@ qemuCheckUnprivSGIO(virHashTablePtr sharedDevices, - goto cleanup; - } +@@ -1430,7 +1430,7 @@ qemuCheckUnprivSGIO(virHashTablePtr sharedDevices, + if (!(virHashLookup(sharedDevices, key))) + return 0; - if (virGetDeviceUnprivSGIO(device_path, NULL, &val) < 0) + if (virGetDeviceUnprivSGIO(device_path, &val) < 0) - goto cleanup; + return -1; /* Error message on failure needs to be handled in caller -@@ -1648,7 +1648,6 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) +@@ -1789,7 +1789,6 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) virDomainDiskDefPtr disk = NULL; virDomainHostdevDefPtr hostdev = NULL; - char *sysfs_path = NULL; + g_autofree char *sysfs_path = NULL; - const char *path = NULL; int val = 0; - int ret = -1; -@@ -1657,13 +1656,12 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) + /* "sgio" is only valid for block disk; cdrom +@@ -1797,13 +1796,12 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) */ if (dev->type == VIR_DOMAIN_DEVICE_DISK) { disk = dev->data.disk; @@ -57,22 +57,22 @@ index 5636277888..5788354444 100644 - path = virDomainDiskGetSource(disk); - if (!(sysfs_path = virGetUnprivSGIOSysfsPath(path, NULL))) - goto cleanup; + return -1; -@@ -1703,7 +1701,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) +@@ -1843,7 +1841,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) * virSetDeviceUnprivSGIO, to report an error for unsupported unpriv_sgio. */ if ((virFileExists(sysfs_path) || val == 1) && - virSetDeviceUnprivSGIO(path, NULL, val) < 0) + virSetDeviceUnprivSGIO(sysfs_path, val) < 0) - goto cleanup; + return -1; - ret = 0; + return 0; diff --git a/src/util/virutil.c b/src/util/virutil.c -index 2448eba073..ad2b8cb3a2 100644 +index f142951acf..4198473fce 100644 --- a/src/util/virutil.c +++ b/src/util/virutil.c -@@ -1736,18 +1736,13 @@ virGetUnprivSGIOSysfsPath(const char *path, +@@ -1421,18 +1421,13 @@ virGetUnprivSGIOSysfsPath(const char *path, int virSetDeviceUnprivSGIO(const char *path, @@ -92,9 +92,9 @@ index 2448eba073..ad2b8cb3a2 100644 virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("unpriv_sgio is not supported by this kernel")); goto cleanup; -@@ -1756,38 +1751,32 @@ virSetDeviceUnprivSGIO(const char *path, - if (virAsprintf(&val, "%d", unpriv_sgio) < 0) - goto cleanup; +@@ -1440,38 +1435,32 @@ virSetDeviceUnprivSGIO(const char *path, + + val = g_strdup_printf("%d", unpriv_sgio); - if ((rc = virFileWriteStr(sysfs_path, val, 0)) < 0) { - virReportSystemError(-rc, _("failed to set %s"), sysfs_path); @@ -135,7 +135,7 @@ index 2448eba073..ad2b8cb3a2 100644 goto cleanup; if ((tmp = strchr(buf, '\n'))) -@@ -1795,13 +1784,12 @@ virGetDeviceUnprivSGIO(const char *path, +@@ -1479,13 +1468,12 @@ virGetDeviceUnprivSGIO(const char *path, if (virStrToLong_i(buf, NULL, 10, unpriv_sgio) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -151,10 +151,10 @@ index 2448eba073..ad2b8cb3a2 100644 return ret; } diff --git a/src/util/virutil.h b/src/util/virutil.h -index 1ba9635bd9..1a1313cfa3 100644 +index 1a6ae1787a..a2530e21b5 100644 --- a/src/util/virutil.h +++ b/src/util/virutil.h -@@ -160,10 +160,8 @@ int virGetDeviceID(const char *path, +@@ -124,10 +124,8 @@ int virGetDeviceID(const char *path, int *maj, int *min); int virSetDeviceUnprivSGIO(const char *path, diff --git a/SOURCES/libvirt-RHEL-virscsi-Check-device-type-before-getting-it-s-dev-node-name.patch b/SOURCES/libvirt-RHEL-virscsi-Check-device-type-before-getting-it-s-dev-node-name.patch index af68a07..f371ff8 100644 --- a/SOURCES/libvirt-RHEL-virscsi-Check-device-type-before-getting-it-s-dev-node-name.patch +++ b/SOURCES/libvirt-RHEL-virscsi-Check-device-type-before-getting-it-s-dev-node-name.patch @@ -1,7 +1,7 @@ -From 521a2285cfee3d2fdd59cb7a3270e9ef91bcc14f Mon Sep 17 00:00:00 2001 -Message-Id: <521a2285cfee3d2fdd59cb7a3270e9ef91bcc14f@dist-git> +From f66beef45382be2aed6d021a409e90f8114c8671 Mon Sep 17 00:00:00 2001 +Message-Id: From: Michal Privoznik -Date: Fri, 6 Mar 2020 15:51:44 +0100 +Date: Fri, 6 Mar 2020 15:52:21 +0100 Subject: [PATCH] RHEL: virscsi: Check device type before getting it's /dev node name @@ -9,27 +9,27 @@ Not all SCSI devices are block devices, therefore /sys/bus/scsi/devices/X:X:X:X/block/ directory does not always exist. Check if the SCSI device is a block device beforehand. -https://bugzilla.redhat.com/show_bug.cgi?id=1808388 +https://bugzilla.redhat.com/show_bug.cgi?id=1808390 Signed-off-by: Michal Privoznik Signed-off-by: Andrea Bolognani -Message-Id: <20200306145149.1610286-2-abologna@redhat.com> +Message-Id: <20200306145226.1610708-2-abologna@redhat.com> Reviewed-by: Jiri Denemark --- - src/util/virscsi.c | 149 ++++++++++++++++++++++++++++++--- + src/util/virscsi.c | 146 ++++++++++++++++++++++++++++++--- tests/virscsidata/0-0-0-0/type | 1 + tests/virscsidata/1-0-0-0/type | 1 + - 3 files changed, 138 insertions(+), 13 deletions(-) + 3 files changed, 137 insertions(+), 11 deletions(-) create mode 100644 tests/virscsidata/0-0-0-0/type create mode 100644 tests/virscsidata/1-0-0-0/type diff --git a/src/util/virscsi.c b/src/util/virscsi.c -index b51103a86d..af908107d9 100644 +index 06659c45c7..c40857977f 100644 --- a/src/util/virscsi.c +++ b/src/util/virscsi.c -@@ -56,6 +56,32 @@ struct _virUsedByInfo { - }; - typedef struct _virUsedByInfo *virUsedByInfoPtr; +@@ -50,6 +50,32 @@ struct _virUsedByInfo { + typedef struct _virUsedByInfo virUsedByInfo; + typedef virUsedByInfo *virUsedByInfoPtr; + +/* Keep in sync with scsi/scsi_proto.h */ @@ -60,7 +60,7 @@ index b51103a86d..af908107d9 100644 struct _virSCSIDevice { unsigned int adapter; unsigned int bus; -@@ -143,6 +169,86 @@ virSCSIDeviceGetSgName(const char *sysfs_prefix, +@@ -134,6 +160,84 @@ virSCSIDeviceGetSgName(const char *sysfs_prefix, return sg; } @@ -121,25 +121,23 @@ index b51103a86d..af908107d9 100644 +{ + DIR *dir = NULL; + struct dirent *entry; -+ char *path = NULL; ++ g_autofree char *path = NULL; + char *name = NULL; + -+ if (virAsprintf(&path, -+ "%s/%d:%u:%u:%llu/block", -+ prefix, adapter, bus, target, unit) < 0) -+ return NULL; ++ path = g_strdup_printf("%s/%d:%u:%u:%llu/block", ++ prefix, adapter, bus, target, unit); + + if (virDirOpen(&dir, path) < 0) + goto cleanup; + + while (virDirRead(dir, &entry, path) > 0) { -+ ignore_value(VIR_STRDUP(name, entry->d_name)); ++ name = g_strdup(entry->d_name); + break; + } + + cleanup: + VIR_DIR_CLOSE(dir); -+ VIR_FREE(path); ++ + return name; +} + @@ -147,13 +145,13 @@ index b51103a86d..af908107d9 100644 /* Returns device name (e.g. "sdc") on success, or NULL * on failure. */ -@@ -153,35 +259,52 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix, +@@ -144,32 +248,52 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix, unsigned int target, unsigned long long unit) { - DIR *dir = NULL; - struct dirent *entry; -- char *path = NULL; +- g_autofree char *path = NULL; char *name = NULL; unsigned int adapter_id; + virSCSIDeviceType type; @@ -162,12 +160,11 @@ index b51103a86d..af908107d9 100644 if (virSCSIDeviceGetAdapterId(adapter, &adapter_id) < 0) return NULL; -- if (virAsprintf(&path, -- "%s/%d:%u:%u:%llu/block", -- prefix, adapter_id, bus, target, unit) < 0) +- path = g_strdup_printf("%s/%d:%u:%u:%llu/block", prefix, adapter_id, bus, +- target, unit); + if (virSCSIDeviceGetType(prefix, adapter_id, + bus, target, unit, &type) < 0) - return NULL; ++ return NULL; - if (virDirOpen(&dir, path) < 0) - goto cleanup; @@ -177,7 +174,7 @@ index b51103a86d..af908107d9 100644 + break; - while (virDirRead(dir, &entry, path) > 0) { -- ignore_value(VIR_STRDUP(name, entry->d_name)); +- name = g_strdup(entry->d_name); + case VIR_SCSI_DEVICE_TYPE_TAPE: + case VIR_SCSI_DEVICE_TYPE_PRINTER: + case VIR_SCSI_DEVICE_TYPE_PROCESSOR: @@ -205,7 +202,6 @@ index b51103a86d..af908107d9 100644 - cleanup: - VIR_DIR_CLOSE(dir); -- VIR_FREE(path); return name; } diff --git a/SOURCES/libvirt-RHEL-virscsi-Introduce-and-use-virSCSIDeviceGetUnprivSGIOSysfsPath.patch b/SOURCES/libvirt-RHEL-virscsi-Introduce-and-use-virSCSIDeviceGetUnprivSGIOSysfsPath.patch index d2d3c65..5feb8f5 100644 --- a/SOURCES/libvirt-RHEL-virscsi-Introduce-and-use-virSCSIDeviceGetUnprivSGIOSysfsPath.patch +++ b/SOURCES/libvirt-RHEL-virscsi-Introduce-and-use-virSCSIDeviceGetUnprivSGIOSysfsPath.patch @@ -1,7 +1,7 @@ -From 6dfdc50564c3d2147f36c4cf6c252cad7a0e9381 Mon Sep 17 00:00:00 2001 -Message-Id: <6dfdc50564c3d2147f36c4cf6c252cad7a0e9381@dist-git> +From c9fc757c867d197c17350b6a9cabc63cc08105d2 Mon Sep 17 00:00:00 2001 +Message-Id: From: Michal Privoznik -Date: Fri, 6 Mar 2020 15:51:46 +0100 +Date: Fri, 6 Mar 2020 15:52:23 +0100 Subject: [PATCH] RHEL: virscsi: Introduce and use virSCSIDeviceGetUnprivSGIOSysfsPath() @@ -14,24 +14,24 @@ different path: /sys/bus/scsi/devices/X:X:X:X/unpriv_sgio where the file is directly accessible regardless of the SCSI device type. -https://bugzilla.redhat.com/show_bug.cgi?id=1808388 +https://bugzilla.redhat.com/show_bug.cgi?id=1808390 Signed-off-by: Michal Privoznik Signed-off-by: Andrea Bolognani -Message-Id: <20200306145149.1610286-4-abologna@redhat.com> +Message-Id: <20200306145226.1610708-4-abologna@redhat.com> Reviewed-by: Jiri Denemark --- src/libvirt_private.syms | 1 + - src/qemu/qemu_conf.c | 19 +++++++++++-------- - src/util/virscsi.c | 21 +++++++++++++++++++++ + src/qemu/qemu_conf.c | 18 +++++++++++------- + src/util/virscsi.c | 18 ++++++++++++++++++ src/util/virscsi.h | 5 +++++ - 4 files changed, 38 insertions(+), 8 deletions(-) + 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms -index 2ad21a68bc..5e1d73c148 100644 +index 5dc99e03cf..1f97879faa 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms -@@ -2727,6 +2727,7 @@ virSCSIDeviceGetSgName; +@@ -2959,6 +2959,7 @@ virSCSIDeviceGetSgName; virSCSIDeviceGetShareable; virSCSIDeviceGetTarget; virSCSIDeviceGetUnit; @@ -40,24 +40,24 @@ index 2ad21a68bc..5e1d73c148 100644 virSCSIDeviceListAdd; virSCSIDeviceListCount; diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c -index a81298326f..5636277888 100644 +index 7aaf2862a4..6d6feb97cd 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c -@@ -1648,7 +1648,6 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) +@@ -1789,7 +1789,6 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) virDomainDiskDefPtr disk = NULL; virDomainHostdevDefPtr hostdev = NULL; - char *sysfs_path = NULL; -- char *hostdev_path = NULL; + g_autofree char *sysfs_path = NULL; +- g_autofree char *hostdev_path = NULL; const char *path = NULL; int val = 0; - int ret = -1; -@@ -1664,24 +1663,29 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) + +@@ -1804,24 +1803,29 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) return 0; path = virDomainDiskGetSource(disk); + + if (!(sysfs_path = virGetUnprivSGIOSysfsPath(path, NULL))) -+ goto cleanup; ++ return -1; + } else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) { hostdev = dev->data.hostdev; @@ -74,7 +74,7 @@ index a81298326f..5636277888 100644 + scsihostsrc->bus, + scsihostsrc->target, + scsihostsrc->unit))) - goto cleanup; + return -1; - - path = hostdev_path; } else { @@ -82,24 +82,16 @@ index a81298326f..5636277888 100644 } - if (!(sysfs_path = virGetUnprivSGIOSysfsPath(path, NULL))) -- goto cleanup; +- return -1; - /* By default, filter the SG_IO commands, i.e. set unpriv_sgio to 0. */ if (dev->type == VIR_DOMAIN_DEVICE_DISK) { if (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED) -@@ -1705,7 +1709,6 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) - ret = 0; - - cleanup: -- VIR_FREE(hostdev_path); - VIR_FREE(sysfs_path); - return ret; - } diff --git a/src/util/virscsi.c b/src/util/virscsi.c -index 6c3fd8a562..5aab43fc88 100644 +index 57958c06ea..1bba4051b6 100644 --- a/src/util/virscsi.c +++ b/src/util/virscsi.c -@@ -342,6 +342,27 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix, +@@ -322,6 +322,24 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix, } @@ -110,17 +102,14 @@ index 6c3fd8a562..5aab43fc88 100644 + unsigned int target, + unsigned long long unit) +{ -+ char *path = NULL; + unsigned int adapter_id; + const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_SCSI_DEVICES; + + if (virSCSIDeviceGetAdapterId(adapter, &adapter_id) < 0) + return NULL; + -+ ignore_value(virAsprintf(&path, -+ "%s/%d:%u:%u:%llu/unpriv_sgio", -+ prefix, adapter_id, bus, target, unit)); -+ return path; ++ return g_strdup_printf("%s/%d:%u:%u:%llu/unpriv_sgio", ++ prefix, adapter_id, bus, target, unit); +} + + @@ -128,10 +117,10 @@ index 6c3fd8a562..5aab43fc88 100644 virSCSIDeviceNew(const char *sysfs_prefix, const char *adapter, diff --git a/src/util/virscsi.h b/src/util/virscsi.h -index 9f8b3ecf1e..5dea2a9f5d 100644 +index 51627e0c05..c040d76716 100644 --- a/src/util/virscsi.h +++ b/src/util/virscsi.h -@@ -43,6 +43,11 @@ char *virSCSIDeviceGetDevName(const char *sysfs_prefix, +@@ -42,6 +42,11 @@ char *virSCSIDeviceGetDevName(const char *sysfs_prefix, unsigned int bus, unsigned int target, unsigned long long unit); diff --git a/SOURCES/libvirt-RHEL-virscsi-Support-TAPEs-in-virSCSIDeviceGetDevName.patch b/SOURCES/libvirt-RHEL-virscsi-Support-TAPEs-in-virSCSIDeviceGetDevName.patch index f302043..7724e4d 100644 --- a/SOURCES/libvirt-RHEL-virscsi-Support-TAPEs-in-virSCSIDeviceGetDevName.patch +++ b/SOURCES/libvirt-RHEL-virscsi-Support-TAPEs-in-virSCSIDeviceGetDevName.patch @@ -1,21 +1,21 @@ -From 41480c7a787cc776e64d2ab7b737c3e8d6a84bd2 Mon Sep 17 00:00:00 2001 -Message-Id: <41480c7a787cc776e64d2ab7b737c3e8d6a84bd2@dist-git> +From c481bcacd1f515d2e93036dc452a25e9ff06f7ae Mon Sep 17 00:00:00 2001 +Message-Id: From: Michal Privoznik -Date: Fri, 6 Mar 2020 15:51:45 +0100 +Date: Fri, 6 Mar 2020 15:52:22 +0100 Subject: [PATCH] RHEL: virscsi: Support TAPEs in virSCSIDeviceGetDevName() If the SCSI device we want to get /dev node name for is TAPE device we need to look at 'tape' symlink in the sysfs dir corresponding to the device. -https://bugzilla.redhat.com/show_bug.cgi?id=1808388 +https://bugzilla.redhat.com/show_bug.cgi?id=1808390 Signed-off-by: Michal Privoznik Signed-off-by: Andrea Bolognani -Message-Id: <20200306145149.1610286-3-abologna@redhat.com> +Message-Id: <20200306145226.1610708-3-abologna@redhat.com> Reviewed-by: Jiri Denemark --- - src/util/virscsi.c | 37 ++++++++++++++++++++ + src/util/virscsi.c | 28 +++++++++++++++ tests/virscsidata/2-0-0-0/model | 1 + tests/virscsidata/2-0-0-0/scsi_tape/st0/dev | 1 + tests/virscsidata/2-0-0-0/sg3/dev | 1 + @@ -24,7 +24,7 @@ Reviewed-by: Jiri Denemark tests/virscsidata/2-0-0-0/vendor | 1 + tests/virscsidata/sg3 | 0 tests/virscsitest.c | 38 ++++++++++++++++++--- - 9 files changed, 76 insertions(+), 5 deletions(-) + 9 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 tests/virscsidata/2-0-0-0/model create mode 100644 tests/virscsidata/2-0-0-0/scsi_tape/st0/dev create mode 100644 tests/virscsidata/2-0-0-0/sg3/dev @@ -34,18 +34,10 @@ Reviewed-by: Jiri Denemark create mode 100644 tests/virscsidata/sg3 diff --git a/src/util/virscsi.c b/src/util/virscsi.c -index af908107d9..6c3fd8a562 100644 +index c40857977f..57958c06ea 100644 --- a/src/util/virscsi.c +++ b/src/util/virscsi.c -@@ -42,6 +42,7 @@ - #include "virutil.h" - #include "virstring.h" - #include "virerror.h" -+#include "dirname.h" - - #define SYSFS_SCSI_DEVICES "/sys/bus/scsi/devices" - -@@ -249,6 +250,39 @@ virSCSIDeviceGetDevNameBlock(const char *prefix, +@@ -238,6 +238,31 @@ virSCSIDeviceGetDevNameBlock(const char *prefix, } @@ -56,36 +48,28 @@ index af908107d9..6c3fd8a562 100644 + unsigned int target, + unsigned long long unit) +{ -+ char *path = NULL; -+ char *resolvedPath = NULL; -+ char *name = NULL; ++ g_autofree char *path = NULL; ++ g_autofree char *resolvedPath = NULL; ++ g_autoptr(GError) err = NULL; + -+ if (virAsprintf(&path, -+ "%s/%d:%u:%u:%llu/tape", -+ prefix, adapter, bus, target, unit) < 0) ++ path = g_strdup_printf("%s/%d:%u:%u:%llu/tape", ++ prefix, adapter, bus, target, unit); ++ ++ if (!(resolvedPath = g_file_read_link(path, &err))) { ++ virReportError(VIR_ERR_SYSTEM_ERROR, ++ _("Unable to read link: %s"), ++ err->message); + return NULL; -+ -+ if (virFileReadLink(path, &resolvedPath) < 0) { -+ virReportSystemError(errno, -+ _("Unable to read link: %s"), -+ path); -+ goto cleanup; + } + -+ if (VIR_STRDUP(name, last_component(resolvedPath)) < 0) -+ goto cleanup; -+ -+ cleanup: -+ VIR_FREE(resolvedPath); -+ VIR_FREE(path); -+ return name; ++ return g_path_get_basename(resolvedPath); +} + + /* Returns device name (e.g. "sdc") on success, or NULL * on failure. */ -@@ -277,6 +311,9 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix, +@@ -266,6 +291,9 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix, break; case VIR_SCSI_DEVICE_TYPE_TAPE: @@ -142,11 +126,11 @@ diff --git a/tests/virscsidata/sg3 b/tests/virscsidata/sg3 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/virscsitest.c b/tests/virscsitest.c -index 1215adbfab..880fa22ca8 100644 +index d5a0da4753..e501d6d041 100644 --- a/tests/virscsitest.c +++ b/tests/virscsitest.c -@@ -36,18 +36,34 @@ VIR_LOG_INIT("tests.scsitest"); - static const char *abs_top_srcdir; +@@ -32,18 +32,34 @@ VIR_LOG_INIT("tests.scsitest"); + static char *virscsi_prefix; +typedef struct { @@ -158,7 +142,7 @@ index 1215adbfab..880fa22ca8 100644 +} testGetDevNameData; + static int --test1(const void *data ATTRIBUTE_UNUSED) +-test1(const void *data G_GNUC_UNUSED) +testGetDevName(const void *opaque) { + const testGetDevNameData *data = opaque; @@ -183,7 +167,7 @@ index 1215adbfab..880fa22ca8 100644 ret = 0; cleanup: -@@ -225,7 +241,9 @@ mymain(void) +@@ -212,15 +228,27 @@ mymain(void) CREATE_SYMLINK("0-0-0-0", "0:0:0:0"); CREATE_SYMLINK("1-0-0-0", "1:0:0:0"); @@ -193,9 +177,8 @@ index 1215adbfab..880fa22ca8 100644 CREATE_SYMLINK("sg8", "sg8"); VIR_FREE(virscsi_prefix); -@@ -235,8 +253,18 @@ mymain(void) - goto cleanup; - } + + virscsi_prefix = g_strdup(tmpdir); - if (virTestRun("test1", test1, NULL) < 0) - ret = -1; diff --git a/SOURCES/libvirt-RHEL-virutil-Accept-non-block-devices-in-virGetDeviceID.patch b/SOURCES/libvirt-RHEL-virutil-Accept-non-block-devices-in-virGetDeviceID.patch index 6f59819..4568177 100644 --- a/SOURCES/libvirt-RHEL-virutil-Accept-non-block-devices-in-virGetDeviceID.patch +++ b/SOURCES/libvirt-RHEL-virutil-Accept-non-block-devices-in-virGetDeviceID.patch @@ -1,28 +1,28 @@ -From f4d9b6252bd2b2b5a3c70a3869ce49a3a9e1a9cc Mon Sep 17 00:00:00 2001 -Message-Id: +From cd2640c256389b4041e4cd38fd72f77184bb4414 Mon Sep 17 00:00:00 2001 +Message-Id: From: Michal Privoznik -Date: Fri, 6 Mar 2020 15:51:47 +0100 +Date: Fri, 6 Mar 2020 15:52:24 +0100 Subject: [PATCH] RHEL: virutil: Accept non-block devices in virGetDeviceID() If a caller wants to learn major or minor number for a device, let them. There's no need to check if the device is a block device here. -https://bugzilla.redhat.com/show_bug.cgi?id=1808388 +https://bugzilla.redhat.com/show_bug.cgi?id=1808390 Signed-off-by: Michal Privoznik Signed-off-by: Andrea Bolognani -Message-Id: <20200306145149.1610286-5-abologna@redhat.com> +Message-Id: <20200306145226.1610708-5-abologna@redhat.com> Reviewed-by: Jiri Denemark --- src/util/virutil.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/util/virutil.c b/src/util/virutil.c -index cd67f54bc2..2448eba073 100644 +index a0fd7618ee..f142951acf 100644 --- a/src/util/virutil.c +++ b/src/util/virutil.c -@@ -1693,9 +1693,6 @@ virGetDeviceID(const char *path, int *maj, int *min) +@@ -1379,9 +1379,6 @@ virGetDeviceID(const char *path, int *maj, int *min) if (stat(path, &sb) < 0) return -errno; diff --git a/SOURCES/libvirt-Remove-checking-of-return-value-of-virHashNew.patch b/SOURCES/libvirt-Remove-checking-of-return-value-of-virHashNew.patch new file mode 100644 index 0000000..10e8801 --- /dev/null +++ b/SOURCES/libvirt-Remove-checking-of-return-value-of-virHashNew.patch @@ -0,0 +1,62 @@ +From ca7c7a8b07c31dc8bf96f7da6fb53af884e36ddb Mon Sep 17 00:00:00 2001 +Message-Id: +From: Peter Krempa +Date: Tue, 4 Feb 2020 15:08:01 +0100 +Subject: [PATCH] Remove checking of return value of virHashNew +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +There are two calls to virHashNew which check the return value. It's not +necessary any more as virHashNew always returns a valid pointer. + +Signed-off-by: Peter Krempa +Reviewed-by: Michal Privoznik +(cherry picked from commit 6eab924daa243afa67f2cc20dcbdf521904bb62b) + +https://bugzilla.redhat.com/show_bug.cgi?id=1793263 +Message-Id: <08acb2e50b584a75c0131a628ee441f47e8fe823.1580824112.git.pkrempa@redhat.com> +Reviewed-by: Ján Tomko +--- + src/conf/backup_conf.c | 6 +----- + src/qemu/qemu_monitor_json.c | 3 +-- + 2 files changed, 2 insertions(+), 7 deletions(-) + +diff --git a/src/conf/backup_conf.c b/src/conf/backup_conf.c +index b370b686f1..64c8f6cc09 100644 +--- a/src/conf/backup_conf.c ++++ b/src/conf/backup_conf.c +@@ -439,15 +439,11 @@ virDomainBackupAlignDisks(virDomainBackupDefPtr def, + virDomainDefPtr dom, + const char *suffix) + { +- g_autoptr(virHashTable) disks = NULL; ++ g_autoptr(virHashTable) disks = virHashNew(NULL); + size_t i; + int ndisks; + bool backup_all = false; + +- +- if (!(disks = virHashNew(NULL))) +- return -1; +- + /* Unlikely to have a guest without disks but technically possible. */ + if (!dom->ndisks) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", +diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c +index 5d8c7e9b5e..3fc0bcb80c 100644 +--- a/src/qemu/qemu_monitor_json.c ++++ b/src/qemu/qemu_monitor_json.c +@@ -2992,8 +2992,7 @@ qemuMonitorJSONBlockGetNamedNodeDataJSON(virJSONValuePtr nodes) + { + g_autoptr(virHashTable) ret = NULL; + +- if (!(ret = virHashNew((virHashDataFree) qemuMonitorJSONBlockNamedNodeDataFree))) +- return NULL; ++ ret = virHashNew((virHashDataFree) qemuMonitorJSONBlockNamedNodeDataFree); + + if (virJSONValueArrayForeachSteal(nodes, + qemuMonitorJSONBlockGetNamedNodeDataWorker, +-- +2.25.0 + diff --git a/SOURCES/libvirt-Remove-qemuDomainSecretInfoNew.patch b/SOURCES/libvirt-Remove-qemuDomainSecretInfoNew.patch new file mode 100644 index 0000000..4534ae8 --- /dev/null +++ b/SOURCES/libvirt-Remove-qemuDomainSecretInfoNew.patch @@ -0,0 +1,109 @@ +From 160863c5cac5519c287462439b9ce8abc6a8237e Mon Sep 17 00:00:00 2001 +Message-Id: <160863c5cac5519c287462439b9ce8abc6a8237e@dist-git> +From: Peter Krempa +Date: Mon, 16 Mar 2020 22:11:48 +0100 +Subject: [PATCH] Remove qemuDomainSecretInfoNew +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Replace it by a direct call to qemuDomainSecretAESSetupFromSecret. + +Signed-off-by: Peter Krempa +Reviewed-by: Ján Tomko +(cherry picked from commit f742461389c11a7d4cc8bda941814c4128eadf94) +https://bugzilla.redhat.com/show_bug.cgi?id=1804750 +Message-Id: +Reviewed-by: Ján Tomko +--- + src/qemu/qemu_domain.c | 53 +++++++++++------------------------------- + 1 file changed, 13 insertions(+), 40 deletions(-) + +diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c +index c286f50650..af23079d5d 100644 +--- a/src/qemu/qemu_domain.c ++++ b/src/qemu/qemu_domain.c +@@ -1669,33 +1669,6 @@ qemuDomainSecretInfoNewPlain(virSecretUsageType usageType, + } + + +-/* qemuDomainSecretInfoNew: +- * @priv: pointer to domain private object +- * @srcAlias: Alias base to use for TLS object +- * @usageType: Secret usage type +- * @username: username +- * @looupDef: lookup def describing secret +- * @isLuks: boolean for luks lookup +- * +- * Helper function to create a secinfo to be used for secinfo consumers. This +- * sets up encrypted data to be used with qemu's 'secret' object. +- * +- * Returns @secinfo on success, NULL on failure. Caller is responsible +- * to eventually free @secinfo. +- */ +-static qemuDomainSecretInfoPtr +-qemuDomainSecretInfoNew(qemuDomainObjPrivatePtr priv, +- const char *srcAlias, +- virSecretUsageType usageType, +- const char *username, +- virSecretLookupTypeDefPtr lookupDef, +- bool isLuks) +-{ +- return qemuDomainSecretAESSetupFromSecret(priv, srcAlias, usageType, username, +- lookupDef, isLuks); +-} +- +- + /** + * qemuDomainSecretInfoTLSNew: + * @priv: pointer to domain private object +@@ -1722,9 +1695,9 @@ qemuDomainSecretInfoTLSNew(qemuDomainObjPrivatePtr priv, + } + seclookupdef.type = VIR_SECRET_LOOKUP_TYPE_UUID; + +- return qemuDomainSecretInfoNew(priv, srcAlias, +- VIR_SECRET_USAGE_TYPE_TLS, NULL, +- &seclookupdef, false); ++ return qemuDomainSecretAESSetupFromSecret(priv, srcAlias, ++ VIR_SECRET_USAGE_TYPE_TLS, ++ NULL, &seclookupdef, false); + } + + +@@ -1814,11 +1787,11 @@ qemuDomainSecretStorageSourcePrepare(qemuDomainObjPrivatePtr priv, + src->auth->username, + &src->auth->seclookupdef); + } else { +- srcPriv->secinfo = qemuDomainSecretInfoNew(priv, authalias, +- usageType, +- src->auth->username, +- &src->auth->seclookupdef, +- false); ++ srcPriv->secinfo = qemuDomainSecretAESSetupFromSecret(priv, authalias, ++ usageType, ++ src->auth->username, ++ &src->auth->seclookupdef, ++ false); + } + + if (!srcPriv->secinfo) +@@ -1826,11 +1799,11 @@ qemuDomainSecretStorageSourcePrepare(qemuDomainObjPrivatePtr priv, + } + + if (hasEnc) { +- if (!(srcPriv->encinfo = +- qemuDomainSecretInfoNew(priv, encalias, +- VIR_SECRET_USAGE_TYPE_VOLUME, NULL, +- &src->encryption->secrets[0]->seclookupdef, +- true))) ++ if (!(srcPriv->encinfo = qemuDomainSecretAESSetupFromSecret(priv, encalias, ++ VIR_SECRET_USAGE_TYPE_VOLUME, ++ NULL, ++ &src->encryption->secrets[0]->seclookupdef, ++ true))) + return -1; + } + +-- +2.25.1 + diff --git a/SOURCES/libvirt-Revert-RHEL-network-regain-guest-network-connectivity-after-firewalld-switch-to-nftables.patch b/SOURCES/libvirt-Revert-RHEL-network-regain-guest-network-connectivity-after-firewalld-switch-to-nftables.patch deleted file mode 100644 index 600d63a..0000000 --- a/SOURCES/libvirt-Revert-RHEL-network-regain-guest-network-connectivity-after-firewalld-switch-to-nftables.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 195908ad66fc52643d94eca0f45e5740f25e3e78 Mon Sep 17 00:00:00 2001 -Message-Id: <195908ad66fc52643d94eca0f45e5740f25e3e78@dist-git> -From: Laine Stump -Date: Fri, 1 Feb 2019 20:29:26 -0500 -Subject: [PATCH] Revert "RHEL: network: regain guest network connectivity - after firewalld switch to nftables" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit 54e270d7fb68b41002654374d395e4f260a24add. - -This patch appeared in libvirt-4.5.0-11.el8 (RHEL git commit id -2fb53957). It was a downstream-only temporary fix to the networking -issues resulting from firewalld's switch to using nftables. Now that -there is a permanent fix upstream we can revert this patch and use the -upstream patches instead. - -https://bugzilla.redhat.com/1650320 - -Signed-off-by: Laine Stump -Reviewed-by: Ján Tomko ---- - libvirt.spec.in | 14 -------------- - src/network/Makefile.inc.am | 10 +--------- - src/network/libvirt.zone | 15 --------------- - 3 files changed, 1 insertion(+), 38 deletions(-) - delete mode 100644 src/network/libvirt.zone - -diff --git a/src/network/Makefile.inc.am b/src/network/Makefile.inc.am -index 20d899e699..508c8c0422 100644 ---- a/src/network/Makefile.inc.am -+++ b/src/network/Makefile.inc.am -@@ -87,11 +87,6 @@ install-data-network: - ( cd $(DESTDIR)$(confdir)/qemu/networks/autostart && \ - rm -f default.xml && \ - $(LN_S) ../default.xml default.xml ) --if HAVE_FIREWALLD -- $(MKDIR_P) "$(DESTDIR)$(prefix)/lib/firewalld/zones" -- $(INSTALL_DATA) $(srcdir)/network/libvirt.zone \ -- $(DESTDIR)$(prefix)/lib/firewalld/zones/libvirt.xml --endif HAVE_FIREWALLD - - uninstall-data-network: - rm -f $(DESTDIR)$(confdir)/qemu/networks/autostart/default.xml -@@ -100,13 +95,10 @@ uninstall-data-network: - rmdir "$(DESTDIR)$(confdir)/qemu/networks" || : - rmdir "$(DESTDIR)$(localstatedir)/lib/libvirt/network" ||: - rmdir "$(DESTDIR)$(localstatedir)/run/libvirt/network" ||: --if HAVE_FIREWALLD -- rm -f $(DESTDIR)$(prefix)/lib/firewalld/zones/libvirt.xml --endif HAVE_FIREWALLD - - endif WITH_NETWORK - --EXTRA_DIST += network/default.xml network/libvirt.zone -+EXTRA_DIST += network/default.xml - - .PHONY: \ - install-data-network \ -diff --git a/src/network/libvirt.zone b/src/network/libvirt.zone -deleted file mode 100644 -index 355a70b4da..0000000000 ---- a/src/network/libvirt.zone -+++ /dev/null -@@ -1,15 +0,0 @@ -- -- -- libvirt -- All network connections are accepted. This also permits packets to/from interfaces in the zone to be forwarded. This zone is intended to be used only by libvirt virtual networks. -- -- -- -- -- -- -- -- -- -- -- --- -2.20.1 - diff --git a/SOURCES/libvirt-Revert-Separate-out-StateAutoStart-from-StateInitialize.patch b/SOURCES/libvirt-Revert-Separate-out-StateAutoStart-from-StateInitialize.patch deleted file mode 100644 index abec5aa..0000000 --- a/SOURCES/libvirt-Revert-Separate-out-StateAutoStart-from-StateInitialize.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 8069bb50b2548acd3f2176499ede205e6099c067 Mon Sep 17 00:00:00 2001 -Message-Id: <8069bb50b2548acd3f2176499ede205e6099c067@dist-git> -From: Michal Privoznik -Date: Thu, 27 Jun 2019 15:18:17 +0200 -Subject: [PATCH] Revert "Separate out StateAutoStart from StateInitialize" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit e4a969092bda5b3b952963fdf6658895165040b7. - -Now that drivers may call virConnectOpen() on secondary drivers, it -doesn't make much sense to have autostart separated from driver -initialization callback. In fact, it creates a problem because one -driver during its initialization might try to fetch an object from -another driver but since the object is yet to be autostarted the fetch -fails. This has been observed in reality: qemu driver performs -qemuProcessReconnect() during qemu's stateInitialize phase which may -call virDomainDiskTranslateSourcePool() which connects to the storage -driver to look up the volume. But the storage driver did not autostart -its pools yet therefore volume lookup fails and the domain is killed. - -Signed-off-by: Michal Privoznik -Reviewed-by: Ján Tomko -(cherry picked from commit 07a9c8bae8b80ef1650e6d05869cbf55c6aea837) - -https://bugzilla.redhat.com/show_bug.cgi?id=1685151 - -Signed-off-by: Michal Privoznik -Message-Id: <4ed5f8f4edd0053cc14f4bb579a945b606b36f5a.1561641375.git.mprivozn@redhat.com> -Reviewed-by: Jiri Denemark ---- - src/driver-state.h | 4 ---- - src/libvirt.c | 14 +------------- - 2 files changed, 1 insertion(+), 17 deletions(-) - -diff --git a/src/driver-state.h b/src/driver-state.h -index 1cb3e4faf3..e1e060bcc5 100644 ---- a/src/driver-state.h -+++ b/src/driver-state.h -@@ -30,9 +30,6 @@ typedef int - virStateInhibitCallback callback, - void *opaque); - --typedef void --(*virDrvStateAutoStart)(void); -- - typedef int - (*virDrvStateCleanup)(void); - -@@ -48,7 +45,6 @@ typedef virStateDriver *virStateDriverPtr; - struct _virStateDriver { - const char *name; - virDrvStateInitialize stateInitialize; -- virDrvStateAutoStart stateAutoStart; - virDrvStateCleanup stateCleanup; - virDrvStateReload stateReload; - virDrvStateStop stateStop; -diff --git a/src/libvirt.c b/src/libvirt.c -index 52f4dd2808..c9e5f47fd4 100644 ---- a/src/libvirt.c -+++ b/src/libvirt.c -@@ -637,11 +637,7 @@ virRegisterStateDriver(virStateDriverPtr driver) - * @callback: callback to invoke to inhibit shutdown of the daemon - * @opaque: data to pass to @callback - * -- * Initialize all virtualization drivers. Accomplished in two phases, -- * the first being state and structure initialization followed by any -- * auto start supported by the driver. This is done to ensure dependencies -- * that some drivers may have on another driver having been initialized -- * will exist, such as the storage driver's need to use the secret driver. -+ * Initialize all virtualization drivers. - * - * Returns 0 if all succeed, -1 upon any failure. - */ -@@ -669,14 +665,6 @@ virStateInitialize(bool privileged, - } - } - } -- -- for (i = 0; i < virStateDriverTabCount; i++) { -- if (virStateDriverTab[i]->stateAutoStart) { -- VIR_DEBUG("Running global auto start for %s state driver", -- virStateDriverTab[i]->name); -- virStateDriverTab[i]->stateAutoStart(); -- } -- } - return 0; - } - --- -2.22.0 - diff --git a/SOURCES/libvirt-Revert-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName.patch b/SOURCES/libvirt-Revert-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName.patch deleted file mode 100644 index 546facb..0000000 --- a/SOURCES/libvirt-Revert-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName.patch +++ /dev/null @@ -1,163 +0,0 @@ -From 6af885a53e425b88c7d9c123f64bbc4f8517b8a8 Mon Sep 17 00:00:00 2001 -Message-Id: <6af885a53e425b88c7d9c123f64bbc4f8517b8a8@dist-git> -From: John Ferlan -Date: Thu, 15 Nov 2018 06:43:58 -0500 -Subject: [PATCH] Revert "access: Modify the VIR_ERR_ACCESS_DENIED to include - driverName" - -https://bugzilla.redhat.com/show_bug.cgi?id=1631608 (RHEL8) -https://bugzilla.redhat.com/show_bug.cgi?id=1631606 (RHEL7) - -This reverts commit ccc72d5cbdd85f66cb737134b3be40aac1df03ef. - -Based on upstream comment to a follow-up patch, this didn't take the -right approach and the right thing to do is revert and rework. - -Signed-off-by: John Ferlan -(cherry picked from commit b08396a5feab02fb3bb595603c888ee733aa178e) -Reviewed-by: Erik Skultety ---- - src/access/viraccessmanager.c | 25 ++++++++++++------------- - src/rpc/gendispatch.pl | 2 +- - src/util/virerror.c | 4 ++-- - 3 files changed, 15 insertions(+), 16 deletions(-) - -diff --git a/src/access/viraccessmanager.c b/src/access/viraccessmanager.c -index 1dfff32b9d..e7b5bf38da 100644 ---- a/src/access/viraccessmanager.c -+++ b/src/access/viraccessmanager.c -@@ -196,12 +196,11 @@ static void virAccessManagerDispose(void *object) - * should the admin need to debug things - */ - static int --virAccessManagerSanitizeError(int ret, -- const char *driverName) -+virAccessManagerSanitizeError(int ret) - { - if (ret < 0) { - virResetLastError(); -- virAccessError(VIR_ERR_ACCESS_DENIED, driverName, NULL); -+ virAccessError(VIR_ERR_ACCESS_DENIED, NULL); - } - - return ret; -@@ -218,7 +217,7 @@ int virAccessManagerCheckConnect(virAccessManagerPtr manager, - if (manager->drv->checkConnect) - ret = manager->drv->checkConnect(manager, driverName, perm); - -- return virAccessManagerSanitizeError(ret, driverName); -+ return virAccessManagerSanitizeError(ret); - } - - -@@ -234,7 +233,7 @@ int virAccessManagerCheckDomain(virAccessManagerPtr manager, - if (manager->drv->checkDomain) - ret = manager->drv->checkDomain(manager, driverName, domain, perm); - -- return virAccessManagerSanitizeError(ret, driverName); -+ return virAccessManagerSanitizeError(ret); - } - - int virAccessManagerCheckInterface(virAccessManagerPtr manager, -@@ -249,7 +248,7 @@ int virAccessManagerCheckInterface(virAccessManagerPtr manager, - if (manager->drv->checkInterface) - ret = manager->drv->checkInterface(manager, driverName, iface, perm); - -- return virAccessManagerSanitizeError(ret, driverName); -+ return virAccessManagerSanitizeError(ret); - } - - int virAccessManagerCheckNetwork(virAccessManagerPtr manager, -@@ -264,7 +263,7 @@ int virAccessManagerCheckNetwork(virAccessManagerPtr manager, - if (manager->drv->checkNetwork) - ret = manager->drv->checkNetwork(manager, driverName, network, perm); - -- return virAccessManagerSanitizeError(ret, driverName); -+ return virAccessManagerSanitizeError(ret); - } - - int virAccessManagerCheckNodeDevice(virAccessManagerPtr manager, -@@ -279,7 +278,7 @@ int virAccessManagerCheckNodeDevice(virAccessManagerPtr manager, - if (manager->drv->checkNodeDevice) - ret = manager->drv->checkNodeDevice(manager, driverName, nodedev, perm); - -- return virAccessManagerSanitizeError(ret, driverName); -+ return virAccessManagerSanitizeError(ret); - } - - int virAccessManagerCheckNWFilter(virAccessManagerPtr manager, -@@ -294,7 +293,7 @@ int virAccessManagerCheckNWFilter(virAccessManagerPtr manager, - if (manager->drv->checkNWFilter) - ret = manager->drv->checkNWFilter(manager, driverName, nwfilter, perm); - -- return virAccessManagerSanitizeError(ret, driverName); -+ return virAccessManagerSanitizeError(ret); - } - - int virAccessManagerCheckNWFilterBinding(virAccessManagerPtr manager, -@@ -309,7 +308,7 @@ int virAccessManagerCheckNWFilterBinding(virAccessManagerPtr manager, - if (manager->drv->checkNWFilterBinding) - ret = manager->drv->checkNWFilterBinding(manager, driverName, binding, perm); - -- return virAccessManagerSanitizeError(ret, driverName); -+ return virAccessManagerSanitizeError(ret); - } - - int virAccessManagerCheckSecret(virAccessManagerPtr manager, -@@ -324,7 +323,7 @@ int virAccessManagerCheckSecret(virAccessManagerPtr manager, - if (manager->drv->checkSecret) - ret = manager->drv->checkSecret(manager, driverName, secret, perm); - -- return virAccessManagerSanitizeError(ret, driverName); -+ return virAccessManagerSanitizeError(ret); - } - - int virAccessManagerCheckStoragePool(virAccessManagerPtr manager, -@@ -339,7 +338,7 @@ int virAccessManagerCheckStoragePool(virAccessManagerPtr manager, - if (manager->drv->checkStoragePool) - ret = manager->drv->checkStoragePool(manager, driverName, pool, perm); - -- return virAccessManagerSanitizeError(ret, driverName); -+ return virAccessManagerSanitizeError(ret); - } - - int virAccessManagerCheckStorageVol(virAccessManagerPtr manager, -@@ -355,5 +354,5 @@ int virAccessManagerCheckStorageVol(virAccessManagerPtr manager, - if (manager->drv->checkStorageVol) - ret = manager->drv->checkStorageVol(manager, driverName, pool, vol, perm); - -- return virAccessManagerSanitizeError(ret, driverName); -+ return virAccessManagerSanitizeError(ret); - } -diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl -index f599002056..0c4648c0fb 100755 ---- a/src/rpc/gendispatch.pl -+++ b/src/rpc/gendispatch.pl -@@ -2199,7 +2199,7 @@ elsif ($mode eq "client") { - print " virObjectUnref(mgr);\n"; - if ($action eq "Ensure") { - print " if (rv == 0)\n"; -- print " virReportError(VIR_ERR_ACCESS_DENIED, conn->driver->name, NULL);\n"; -+ print " virReportError(VIR_ERR_ACCESS_DENIED, NULL);\n"; - print " return $fail;\n"; - } else { - print " virResetLastError();\n"; -diff --git a/src/util/virerror.c b/src/util/virerror.c -index 5f50fa0349..f198f27957 100644 ---- a/src/util/virerror.c -+++ b/src/util/virerror.c -@@ -1439,9 +1439,9 @@ virErrorMsg(virErrorNumber error, const char *info) - break; - case VIR_ERR_ACCESS_DENIED: - if (info == NULL) -- errmsg = _("access denied from '%s'"); -+ errmsg = _("access denied"); - else -- errmsg = _("access denied from '%s': %s"); -+ errmsg = _("access denied: %s"); - break; - case VIR_ERR_DBUS_SERVICE: - if (info == NULL) --- -2.19.2 - diff --git a/SOURCES/libvirt-Revert-util-vircgroup-pass-parent-cgroup-into-virCgroupDetectControllersCB.patch b/SOURCES/libvirt-Revert-util-vircgroup-pass-parent-cgroup-into-virCgroupDetectControllersCB.patch deleted file mode 100644 index 796cc2e..0000000 --- a/SOURCES/libvirt-Revert-util-vircgroup-pass-parent-cgroup-into-virCgroupDetectControllersCB.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 2395bf301cf76ffa863a3c2e125d52345cfbf6b5 Mon Sep 17 00:00:00 2001 -Message-Id: <2395bf301cf76ffa863a3c2e125d52345cfbf6b5@dist-git> -From: Pavel Hrdina -Date: Mon, 1 Jul 2019 17:08:23 +0200 -Subject: [PATCH] Revert "util: vircgroup: pass parent cgroup into - virCgroupDetectControllersCB" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit 7bca1c9bdc85247446129f856e27c80a32819e17. - -As it turns out it's not a good idea on systemd hosts. The root -cgroup can have all controllers enabled but they don't have to be -enabled for sub-cgroups. - -Signed-off-by: Pavel Hrdina -Reviewed-by: Ján Tomko -(cherry picked from commit d117431143d5b6dcfc8fae4a6b3fae23881d0937) - -Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1689297 - -Signed-off-by: Pavel Hrdina -Message-Id: <754b0ac5a0f1bd21e79eaeb71f6d2ab811446168.1561993100.git.phrdina@redhat.com> -Reviewed-by: Ján Tomko ---- - src/util/vircgroup.c | 2 +- - src/util/vircgroupbackend.h | 3 +-- - src/util/vircgroupv1.c | 3 +-- - src/util/vircgroupv2.c | 17 ++++++----------- - 4 files changed, 9 insertions(+), 16 deletions(-) - -diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c -index ff2a0b75b5..a7fb595bce 100644 ---- a/src/util/vircgroup.c -+++ b/src/util/vircgroup.c -@@ -412,7 +412,7 @@ virCgroupDetect(virCgroupPtr group, - - for (i = 0; i < VIR_CGROUP_BACKEND_TYPE_LAST; i++) { - if (group->backends[i]) { -- int rc = group->backends[i]->detectControllers(group, controllers, parent); -+ int rc = group->backends[i]->detectControllers(group, controllers); - if (rc < 0) - return -1; - controllersAvailable |= rc; -diff --git a/src/util/vircgroupbackend.h b/src/util/vircgroupbackend.h -index 05af118ec1..a825dc4be7 100644 ---- a/src/util/vircgroupbackend.h -+++ b/src/util/vircgroupbackend.h -@@ -96,8 +96,7 @@ typedef char * - - typedef int - (*virCgroupDetectControllersCB)(virCgroupPtr group, -- int controllers, -- virCgroupPtr parent); -+ int controllers); - - typedef bool - (*virCgroupHasControllerCB)(virCgroupPtr cgroup, -diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c -index 5b218c7f78..58bd20d636 100644 ---- a/src/util/vircgroupv1.c -+++ b/src/util/vircgroupv1.c -@@ -419,8 +419,7 @@ virCgroupV1StealPlacement(virCgroupPtr group) - - static int - virCgroupV1DetectControllers(virCgroupPtr group, -- int controllers, -- virCgroupPtr parent ATTRIBUTE_UNUSED) -+ int controllers) - { - size_t i; - size_t j; -diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c -index bdeab397a3..b0ed889cc8 100644 ---- a/src/util/vircgroupv2.c -+++ b/src/util/vircgroupv2.c -@@ -285,21 +285,16 @@ virCgroupV2ParseControllersFile(virCgroupPtr group) - - static int - virCgroupV2DetectControllers(virCgroupPtr group, -- int controllers, -- virCgroupPtr parent) -+ int controllers) - { - size_t i; - -- if (parent) { -- group->unified.controllers = parent->unified.controllers; -- } else { -- if (virCgroupV2ParseControllersFile(group) < 0) -- return -1; -+ if (virCgroupV2ParseControllersFile(group) < 0) -+ return -1; - -- /* In cgroup v2 there is no cpuacct controller, the cpu.stat file always -- * exists with usage stats. */ -- group->unified.controllers |= 1 << VIR_CGROUP_CONTROLLER_CPUACCT; -- } -+ /* In cgroup v2 there is no cpuacct controller, the cpu.stat file always -+ * exists with usage stats. */ -+ group->unified.controllers |= 1 << VIR_CGROUP_CONTROLLER_CPUACCT; - - if (controllers >= 0) - group->unified.controllers &= controllers; --- -2.22.0 - diff --git a/SOURCES/libvirt-Revert-virStateDriver-Separate-AutoStart-from-Initialize.patch b/SOURCES/libvirt-Revert-virStateDriver-Separate-AutoStart-from-Initialize.patch deleted file mode 100644 index 45fdd94..0000000 --- a/SOURCES/libvirt-Revert-virStateDriver-Separate-AutoStart-from-Initialize.patch +++ /dev/null @@ -1,295 +0,0 @@ -From 799c9dd37390878a54be303b3e3e27445049bf2b Mon Sep 17 00:00:00 2001 -Message-Id: <799c9dd37390878a54be303b3e3e27445049bf2b@dist-git> -From: Michal Privoznik -Date: Thu, 27 Jun 2019 15:18:16 +0200 -Subject: [PATCH] Revert "virStateDriver - Separate AutoStart from Initialize" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit cefb97fb815c81fc882da752f45effd23bcb9b4b. - -The stateAutoStart callback will be removed in the next commit. -Therefore move autostarting of domains, networks and storage -pools back into stateInitialize callbacks. - -Signed-off-by: Michal Privoznik -Reviewed-by: Ján Tomko -(cherry picked from commit fc380c2e018ae15347d4c281a7e74896c48cac4a) - -https://bugzilla.redhat.com/show_bug.cgi?id=1685151 - -The difference to the upstream commit is uml driver change. In -upstream, the uml driver was dropped, but it's still kept around -in downstream. - -Signed-off-by: Michal Privoznik -Message-Id: -Reviewed-by: Jiri Denemark ---- - src/libxl/libxl_driver.c | 14 +++----------- - src/lxc/lxc_driver.c | 16 ++-------------- - src/network/bridge_driver.c | 22 ++++------------------ - src/qemu/qemu_driver.c | 17 ++--------------- - src/storage/storage_driver.c | 19 ++----------------- - src/uml/uml_driver.c | 17 ++--------------- - 6 files changed, 15 insertions(+), 90 deletions(-) - -diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c -index 5a5e792957..99bb010af4 100644 ---- a/src/libxl/libxl_driver.c -+++ b/src/libxl/libxl_driver.c -@@ -773,6 +773,9 @@ libxlStateInitialize(bool privileged, - NULL, NULL) < 0) - goto error; - -+ virDomainObjListForEach(libxl_driver->domains, libxlAutostartDomain, -+ libxl_driver); -+ - virDomainObjListForEach(libxl_driver->domains, libxlDomainManagedSaveLoad, - libxl_driver); - -@@ -784,16 +787,6 @@ libxlStateInitialize(bool privileged, - return -1; - } - --static void --libxlStateAutoStart(void) --{ -- if (!libxl_driver) -- return; -- -- virDomainObjListForEach(libxl_driver->domains, libxlAutostartDomain, -- libxl_driver); --} -- - static int - libxlStateReload(void) - { -@@ -6479,7 +6472,6 @@ static virConnectDriver libxlConnectDriver = { - static virStateDriver libxlStateDriver = { - .name = "LIBXL", - .stateInitialize = libxlStateInitialize, -- .stateAutoStart = libxlStateAutoStart, - .stateCleanup = libxlStateCleanup, - .stateReload = libxlStateReload, - }; -diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c -index f9794e0655..527fa72083 100644 ---- a/src/lxc/lxc_driver.c -+++ b/src/lxc/lxc_driver.c -@@ -1646,6 +1646,8 @@ static int lxcStateInitialize(bool privileged, - NULL, NULL) < 0) - goto cleanup; - -+ virLXCProcessAutostartAll(lxc_driver); -+ - virObjectUnref(caps); - return 0; - -@@ -1655,19 +1657,6 @@ static int lxcStateInitialize(bool privileged, - return -1; - } - --/** -- * lxcStateAutoStart: -- * -- * Function to autostart the LXC daemons -- */ --static void lxcStateAutoStart(void) --{ -- if (!lxc_driver) -- return; -- -- virLXCProcessAutostartAll(lxc_driver); --} -- - static void lxcNotifyLoadDomain(virDomainObjPtr vm, int newVM, void *opaque) - { - virLXCDriverPtr driver = opaque; -@@ -5550,7 +5539,6 @@ static virConnectDriver lxcConnectDriver = { - static virStateDriver lxcStateDriver = { - .name = LXC_DRIVER_NAME, - .stateInitialize = lxcStateInitialize, -- .stateAutoStart = lxcStateAutoStart, - .stateCleanup = lxcStateCleanup, - .stateReload = lxcStateReload, - }; -diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c -index d153a8cdb6..a60d7db685 100644 ---- a/src/network/bridge_driver.c -+++ b/src/network/bridge_driver.c -@@ -755,6 +755,10 @@ networkStateInitialize(bool privileged, - networkReloadFirewallRules(network_driver); - networkRefreshDaemons(network_driver); - -+ virNetworkObjListForEach(network_driver->networks, -+ networkAutostartConfig, -+ network_driver); -+ - network_driver->networkEventState = virObjectEventStateNew(); - - #ifdef WITH_FIREWALLD -@@ -794,23 +798,6 @@ networkStateInitialize(bool privileged, - } - - --/** -- * networkStateAutoStart: -- * -- * Function to AutoStart the bridge configs -- */ --static void --networkStateAutoStart(void) --{ -- if (!network_driver) -- return; -- -- virNetworkObjListForEach(network_driver->networks, -- networkAutostartConfig, -- network_driver); --} -- -- - /** - * networkStateReload: - * -@@ -5616,7 +5603,6 @@ static virConnectDriver networkConnectDriver = { - static virStateDriver networkStateDriver = { - .name = "bridge", - .stateInitialize = networkStateInitialize, -- .stateAutoStart = networkStateAutoStart, - .stateCleanup = networkStateCleanup, - .stateReload = networkStateReload, - }; -diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c -index 2da87992fd..056d324a62 100644 ---- a/src/qemu/qemu_driver.c -+++ b/src/qemu/qemu_driver.c -@@ -911,6 +911,8 @@ qemuStateInitialize(bool privileged, - - qemuProcessReconnectAll(qemu_driver); - -+ qemuAutostartDomains(qemu_driver); -+ - return 0; - - error: -@@ -921,20 +923,6 @@ qemuStateInitialize(bool privileged, - return -1; - } - --/** -- * qemuStateAutoStart: -- * -- * Function to auto start the QEMU daemons -- */ --static void --qemuStateAutoStart(void) --{ -- if (!qemu_driver) -- return; -- -- qemuAutostartDomains(qemu_driver); --} -- - static void qemuNotifyLoadDomain(virDomainObjPtr vm, int newVM, void *opaque) - { - virQEMUDriverPtr driver = opaque; -@@ -21846,7 +21834,6 @@ static virConnectDriver qemuConnectDriver = { - static virStateDriver qemuStateDriver = { - .name = QEMU_DRIVER_NAME, - .stateInitialize = qemuStateInitialize, -- .stateAutoStart = qemuStateAutoStart, - .stateCleanup = qemuStateCleanup, - .stateReload = qemuStateReload, - .stateStop = qemuStateStop, -diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c -index 254818e308..f61fb074e6 100644 ---- a/src/storage/storage_driver.c -+++ b/src/storage/storage_driver.c -@@ -291,6 +291,8 @@ storageStateInitialize(bool privileged, - - storagePoolUpdateAllState(); - -+ storageDriverAutostart(); -+ - driver->storageEventState = virObjectEventStateNew(); - - storageDriverUnlock(); -@@ -307,22 +309,6 @@ storageStateInitialize(bool privileged, - goto cleanup; - } - --/** -- * storageStateAutoStart: -- * -- * Function to auto start the storage driver -- */ --static void --storageStateAutoStart(void) --{ -- if (!driver) -- return; -- -- storageDriverLock(); -- storageDriverAutostart(); -- storageDriverUnlock(); --} -- - /** - * storageStateReload: - * -@@ -2843,7 +2829,6 @@ static virConnectDriver storageConnectDriver = { - static virStateDriver stateDriver = { - .name = "storage", - .stateInitialize = storageStateInitialize, -- .stateAutoStart = storageStateAutoStart, - .stateCleanup = storageStateCleanup, - .stateReload = storageStateReload, - }; -diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c -index c77988f01e..296adf55d1 100644 ---- a/src/uml/uml_driver.c -+++ b/src/uml/uml_driver.c -@@ -575,6 +575,8 @@ umlStateInitialize(bool privileged, - - umlDriverUnlock(uml_driver); - -+ umlAutostartConfigs(uml_driver); -+ - VIR_FREE(userdir); - - return 0; -@@ -590,20 +592,6 @@ umlStateInitialize(bool privileged, - return -1; - } - --/** -- * umlStateAutoStart: -- * -- * Function to autostart the Uml daemons -- */ --static void --umlStateAutoStart(void) --{ -- if (!uml_driver) -- return; -- -- umlAutostartConfigs(uml_driver); --} -- - static void umlNotifyLoadDomain(virDomainObjPtr vm, int newVM, void *opaque) - { - struct uml_driver *driver = opaque; -@@ -2826,7 +2814,6 @@ static virConnectDriver umlConnectDriver = { - static virStateDriver umlStateDriver = { - .name = "UML", - .stateInitialize = umlStateInitialize, -- .stateAutoStart = umlStateAutoStart, - .stateCleanup = umlStateCleanup, - .stateReload = umlStateReload, - }; --- -2.22.0 - diff --git a/SOURCES/libvirt-Revert-vircgroup-cleanup-controllers-not-managed-by-systemd-on-error.patch b/SOURCES/libvirt-Revert-vircgroup-cleanup-controllers-not-managed-by-systemd-on-error.patch deleted file mode 100644 index 44f72a9..0000000 --- a/SOURCES/libvirt-Revert-vircgroup-cleanup-controllers-not-managed-by-systemd-on-error.patch +++ /dev/null @@ -1,83 +0,0 @@ -From ddea95c1c2e32c6454c89aa83d78b26a83564cd4 Mon Sep 17 00:00:00 2001 -Message-Id: -From: Pavel Hrdina -Date: Mon, 1 Jul 2019 17:07:11 +0200 -Subject: [PATCH] Revert "vircgroup: cleanup controllers not managed by systemd - on error" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit 1602aa28f820ada66f707cef3e536e8572fbda1e. - -There is no need to call virCgroupRemove() nor virCgroupFree() if -virCgroupEnableMissingControllers() fails because it will not modify -'group' at all. - -The cleanup of directories is done in virCgroupMakeGroup(). - -Reviewed-by: John Ferlan -Reviewed-by: Fabiano Fidêncio -Reviewed-by: Marc Hartmayer -Signed-off-by: Pavel Hrdina -(cherry picked from commit 199eee6aae7af3d813fbe98660c7e0fa1a8ae7b7) - -Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1689297 - -Signed-off-by: Pavel Hrdina -Message-Id: <53288dd310e0305ac3179693e64684eb8b3a31ab.1561993100.git.phrdina@redhat.com> -Reviewed-by: Ján Tomko ---- - src/util/vircgroup.c | 25 ++++++++++--------------- - 1 file changed, 10 insertions(+), 15 deletions(-) - -diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c -index a376b9b89a..7ec1399bc6 100644 ---- a/src/util/vircgroup.c -+++ b/src/util/vircgroup.c -@@ -1059,7 +1059,6 @@ virCgroupNewMachineSystemd(const char *name, - int rv; - virCgroupPtr init; - VIR_AUTOFREE(char *) path = NULL; -- virErrorPtr saved = NULL; - - VIR_DEBUG("Trying to setup machine '%s' via systemd", name); - if ((rv = virSystemdCreateMachine(name, -@@ -1092,24 +1091,20 @@ virCgroupNewMachineSystemd(const char *name, - - if (virCgroupEnableMissingControllers(path, pidleader, - controllers, group) < 0) { -- goto error; -+ return -1; - } - -- if (virCgroupAddProcess(*group, pidleader) < 0) -- goto error; -+ if (virCgroupAddProcess(*group, pidleader) < 0) { -+ virErrorPtr saved = virSaveLastError(); -+ virCgroupRemove(*group); -+ virCgroupFree(group); -+ if (saved) { -+ virSetError(saved); -+ virFreeError(saved); -+ } -+ } - - return 0; -- -- error: -- saved = virSaveLastError(); -- virCgroupRemove(*group); -- virCgroupFree(group); -- if (saved) { -- virSetError(saved); -- virFreeError(saved); -- } -- -- return -1; - } - - --- -2.22.0 - diff --git a/SOURCES/libvirt-access-Fix-nwfilter-binding-ACL-access-API-name-generation.patch b/SOURCES/libvirt-access-Fix-nwfilter-binding-ACL-access-API-name-generation.patch deleted file mode 100644 index 4b53a50..0000000 --- a/SOURCES/libvirt-access-Fix-nwfilter-binding-ACL-access-API-name-generation.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 254da75ea1a9c2cade909534153f444bb8981c2a Mon Sep 17 00:00:00 2001 -Message-Id: <254da75ea1a9c2cade909534153f444bb8981c2a@dist-git> -From: John Ferlan -Date: Mon, 27 Aug 2018 08:27:47 -0400 -Subject: [PATCH] access: Fix nwfilter-binding ACL access API name generation -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -https://bugzilla.redhat.com/show_bug.cgi?id=1611320 - -Generation of the ACL API policy is a "automated process" -based on this perl script which "worked" with the changes to -add nwfilter binding API's because they had the "nwfilter" -prefix; however, the generated output name was incorrect -based on the remote protocol algorithm which expected to -generate names such as 'nwfilter-binding.action' instead -of 'nwfilter.binding-action'. - -This effectively changes src/access/org.libvirt.api.policy entries: - - org.libvirt.api.nwfilter.binding-create ==> - org.libvirt.api.nwfilter-binding.create - - org.libvirt.api.nwfilter.binding-delete ==> - org.libvirt.api.nwfilter-binding.delete - - org.libvirt.api.nwfilter.binding-getattr ==> - org.libvirt.api.nwfilter-binding.getattr - - org.libvirt.api.nwfilter.binding-read ==> - org.libvirt.api.nwfilter-binding.read - -Signed-off-by: John Ferlan -Reviewed-by: Daniel P. Berrangé -(cherry picked from commit 6ef65e3c96d5d1f16a16daca83b81b818d461e64) -https: //bugzilla.redhat.com/show_bug.cgi?id=1622540 -Reviewed-by: Erik Skultety ---- - src/access/genpolkit.pl | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/access/genpolkit.pl b/src/access/genpolkit.pl -index 968cb8c55c..e074c90eb6 100755 ---- a/src/access/genpolkit.pl -+++ b/src/access/genpolkit.pl -@@ -22,8 +22,8 @@ use warnings; - - my @objects = ( - "CONNECT", "DOMAIN", "INTERFACE", -- "NETWORK","NODE_DEVICE", "NWFILTER", -- "SECRET", "STORAGE_POOL", "STORAGE_VOL", -+ "NETWORK","NODE_DEVICE", "NWFILTER_BINDING", "NWFILTER", -+ "SECRET", "STORAGE_POOL", "STORAGE_VOL", - ); - - my $objects = join ("|", @objects); --- -2.18.0 - diff --git a/SOURCES/libvirt-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName.patch b/SOURCES/libvirt-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName.patch deleted file mode 100644 index a47583c..0000000 --- a/SOURCES/libvirt-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName.patch +++ /dev/null @@ -1,173 +0,0 @@ -From 85750b0466aa3719d3d2447abaab2e87db92f552 Mon Sep 17 00:00:00 2001 -Message-Id: <85750b0466aa3719d3d2447abaab2e87db92f552@dist-git> -From: John Ferlan -Date: Mon, 5 Nov 2018 07:48:37 -0500 -Subject: [PATCH] access: Modify the VIR_ERR_ACCESS_DENIED to include - driverName - -https://bugzilla.redhat.com/show_bug.cgi?id=1631608 (RHEL 8.0) -https://bugzilla.redhat.com/show_bug.cgi?id=1631606 (RHEL 7.7) - -Changes made to manage and utilize a secondary connection -driver to APIs outside the scope of the primary connection -driver have resulted in some confusion processing polkit rules -since the simple "access denied" error message doesn't provide -enough of a clue when combined with the "authentication failed: -access denied by policy" as to which connection driver refused -or failed the ACL check. - -In order to provide some context, let's modify the existing -"access denied" error returne from the various vir*EnsureACL -API's to provide the connection driver name that is causing -the failure. This should provide the context for writing the -polkit rules that would allow access via the driver. - -Signed-off-by: John Ferlan -ACKed-by: Michal Privoznik -(cherry picked from commit ccc72d5cbdd85f66cb737134b3be40aac1df03ef) -Reviewed-by: Jiri Denemark ---- - src/access/viraccessmanager.c | 25 +++++++++++++------------ - src/rpc/gendispatch.pl | 2 +- - src/util/virerror.c | 4 ++-- - 3 files changed, 16 insertions(+), 15 deletions(-) - -diff --git a/src/access/viraccessmanager.c b/src/access/viraccessmanager.c -index e7b5bf38da..1dfff32b9d 100644 ---- a/src/access/viraccessmanager.c -+++ b/src/access/viraccessmanager.c -@@ -196,11 +196,12 @@ static void virAccessManagerDispose(void *object) - * should the admin need to debug things - */ - static int --virAccessManagerSanitizeError(int ret) -+virAccessManagerSanitizeError(int ret, -+ const char *driverName) - { - if (ret < 0) { - virResetLastError(); -- virAccessError(VIR_ERR_ACCESS_DENIED, NULL); -+ virAccessError(VIR_ERR_ACCESS_DENIED, driverName, NULL); - } - - return ret; -@@ -217,7 +218,7 @@ int virAccessManagerCheckConnect(virAccessManagerPtr manager, - if (manager->drv->checkConnect) - ret = manager->drv->checkConnect(manager, driverName, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - -@@ -233,7 +234,7 @@ int virAccessManagerCheckDomain(virAccessManagerPtr manager, - if (manager->drv->checkDomain) - ret = manager->drv->checkDomain(manager, driverName, domain, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckInterface(virAccessManagerPtr manager, -@@ -248,7 +249,7 @@ int virAccessManagerCheckInterface(virAccessManagerPtr manager, - if (manager->drv->checkInterface) - ret = manager->drv->checkInterface(manager, driverName, iface, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckNetwork(virAccessManagerPtr manager, -@@ -263,7 +264,7 @@ int virAccessManagerCheckNetwork(virAccessManagerPtr manager, - if (manager->drv->checkNetwork) - ret = manager->drv->checkNetwork(manager, driverName, network, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckNodeDevice(virAccessManagerPtr manager, -@@ -278,7 +279,7 @@ int virAccessManagerCheckNodeDevice(virAccessManagerPtr manager, - if (manager->drv->checkNodeDevice) - ret = manager->drv->checkNodeDevice(manager, driverName, nodedev, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckNWFilter(virAccessManagerPtr manager, -@@ -293,7 +294,7 @@ int virAccessManagerCheckNWFilter(virAccessManagerPtr manager, - if (manager->drv->checkNWFilter) - ret = manager->drv->checkNWFilter(manager, driverName, nwfilter, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckNWFilterBinding(virAccessManagerPtr manager, -@@ -308,7 +309,7 @@ int virAccessManagerCheckNWFilterBinding(virAccessManagerPtr manager, - if (manager->drv->checkNWFilterBinding) - ret = manager->drv->checkNWFilterBinding(manager, driverName, binding, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckSecret(virAccessManagerPtr manager, -@@ -323,7 +324,7 @@ int virAccessManagerCheckSecret(virAccessManagerPtr manager, - if (manager->drv->checkSecret) - ret = manager->drv->checkSecret(manager, driverName, secret, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckStoragePool(virAccessManagerPtr manager, -@@ -338,7 +339,7 @@ int virAccessManagerCheckStoragePool(virAccessManagerPtr manager, - if (manager->drv->checkStoragePool) - ret = manager->drv->checkStoragePool(manager, driverName, pool, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckStorageVol(virAccessManagerPtr manager, -@@ -354,5 +355,5 @@ int virAccessManagerCheckStorageVol(virAccessManagerPtr manager, - if (manager->drv->checkStorageVol) - ret = manager->drv->checkStorageVol(manager, driverName, pool, vol, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } -diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl -index 0c4648c0fb..f599002056 100755 ---- a/src/rpc/gendispatch.pl -+++ b/src/rpc/gendispatch.pl -@@ -2199,7 +2199,7 @@ elsif ($mode eq "client") { - print " virObjectUnref(mgr);\n"; - if ($action eq "Ensure") { - print " if (rv == 0)\n"; -- print " virReportError(VIR_ERR_ACCESS_DENIED, NULL);\n"; -+ print " virReportError(VIR_ERR_ACCESS_DENIED, conn->driver->name, NULL);\n"; - print " return $fail;\n"; - } else { - print " virResetLastError();\n"; -diff --git a/src/util/virerror.c b/src/util/virerror.c -index f198f27957..5f50fa0349 100644 ---- a/src/util/virerror.c -+++ b/src/util/virerror.c -@@ -1439,9 +1439,9 @@ virErrorMsg(virErrorNumber error, const char *info) - break; - case VIR_ERR_ACCESS_DENIED: - if (info == NULL) -- errmsg = _("access denied"); -+ errmsg = _("access denied from '%s'"); - else -- errmsg = _("access denied: %s"); -+ errmsg = _("access denied from '%s': %s"); - break; - case VIR_ERR_DBUS_SERVICE: - if (info == NULL) --- -2.19.1 - diff --git a/SOURCES/libvirt-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName_1.patch b/SOURCES/libvirt-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName_1.patch deleted file mode 100644 index dc0cb0a..0000000 --- a/SOURCES/libvirt-access-Modify-the-VIR_ERR_ACCESS_DENIED-to-include-driverName_1.patch +++ /dev/null @@ -1,159 +0,0 @@ -From 541a154e0f98604f63cb22356287dfa3858748c9 Mon Sep 17 00:00:00 2001 -Message-Id: <541a154e0f98604f63cb22356287dfa3858748c9@dist-git> -From: John Ferlan -Date: Thu, 15 Nov 2018 06:43:59 -0500 -Subject: [PATCH] access: Modify the VIR_ERR_ACCESS_DENIED to include - driverName - -https://bugzilla.redhat.com/show_bug.cgi?id=1631608 (RHEL8) -https://bugzilla.redhat.com/show_bug.cgi?id=1631606 (RHEL7) - -Changes made to manage and utilize a secondary connection -driver to APIs outside the scope of the primary connection -driver have resulted in some confusion processing polkit rules -since the simple "access denied" error message doesn't provide -enough of a clue when combined with the "authentication failed: -access denied by policy" as to which connection driver refused -or failed the ACL check. - -In order to provide some context, let's modify the existing -"access denied" error returned from the various vir*EnsureACL -API's to provide the connection driver name that is causing -the failure. This should provide the context for writing the -polkit rules that would allow access via the driver, but yet -still adhere to the virAccessManagerSanitizeError commentary -regarding not telling the user why access was denied. - -Signed-off-by: John Ferlan -(cherry picked from commit 605496be609e153526fcdd3e98df8cf5244bc8fa) -Reviewed-by: Erik Skultety ---- - src/access/viraccessmanager.c | 26 ++++++++++++++------------ - src/rpc/gendispatch.pl | 3 ++- - 2 files changed, 16 insertions(+), 13 deletions(-) - -diff --git a/src/access/viraccessmanager.c b/src/access/viraccessmanager.c -index e7b5bf38da..f5d62604cf 100644 ---- a/src/access/viraccessmanager.c -+++ b/src/access/viraccessmanager.c -@@ -196,11 +196,13 @@ static void virAccessManagerDispose(void *object) - * should the admin need to debug things - */ - static int --virAccessManagerSanitizeError(int ret) -+virAccessManagerSanitizeError(int ret, -+ const char *driverName) - { - if (ret < 0) { - virResetLastError(); -- virAccessError(VIR_ERR_ACCESS_DENIED, NULL); -+ virAccessError(VIR_ERR_ACCESS_DENIED, -+ _("'%s' denied access"), driverName); - } - - return ret; -@@ -217,7 +219,7 @@ int virAccessManagerCheckConnect(virAccessManagerPtr manager, - if (manager->drv->checkConnect) - ret = manager->drv->checkConnect(manager, driverName, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - -@@ -233,7 +235,7 @@ int virAccessManagerCheckDomain(virAccessManagerPtr manager, - if (manager->drv->checkDomain) - ret = manager->drv->checkDomain(manager, driverName, domain, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckInterface(virAccessManagerPtr manager, -@@ -248,7 +250,7 @@ int virAccessManagerCheckInterface(virAccessManagerPtr manager, - if (manager->drv->checkInterface) - ret = manager->drv->checkInterface(manager, driverName, iface, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckNetwork(virAccessManagerPtr manager, -@@ -263,7 +265,7 @@ int virAccessManagerCheckNetwork(virAccessManagerPtr manager, - if (manager->drv->checkNetwork) - ret = manager->drv->checkNetwork(manager, driverName, network, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckNodeDevice(virAccessManagerPtr manager, -@@ -278,7 +280,7 @@ int virAccessManagerCheckNodeDevice(virAccessManagerPtr manager, - if (manager->drv->checkNodeDevice) - ret = manager->drv->checkNodeDevice(manager, driverName, nodedev, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckNWFilter(virAccessManagerPtr manager, -@@ -293,7 +295,7 @@ int virAccessManagerCheckNWFilter(virAccessManagerPtr manager, - if (manager->drv->checkNWFilter) - ret = manager->drv->checkNWFilter(manager, driverName, nwfilter, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckNWFilterBinding(virAccessManagerPtr manager, -@@ -308,7 +310,7 @@ int virAccessManagerCheckNWFilterBinding(virAccessManagerPtr manager, - if (manager->drv->checkNWFilterBinding) - ret = manager->drv->checkNWFilterBinding(manager, driverName, binding, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckSecret(virAccessManagerPtr manager, -@@ -323,7 +325,7 @@ int virAccessManagerCheckSecret(virAccessManagerPtr manager, - if (manager->drv->checkSecret) - ret = manager->drv->checkSecret(manager, driverName, secret, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckStoragePool(virAccessManagerPtr manager, -@@ -338,7 +340,7 @@ int virAccessManagerCheckStoragePool(virAccessManagerPtr manager, - if (manager->drv->checkStoragePool) - ret = manager->drv->checkStoragePool(manager, driverName, pool, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } - - int virAccessManagerCheckStorageVol(virAccessManagerPtr manager, -@@ -354,5 +356,5 @@ int virAccessManagerCheckStorageVol(virAccessManagerPtr manager, - if (manager->drv->checkStorageVol) - ret = manager->drv->checkStorageVol(manager, driverName, pool, vol, perm); - -- return virAccessManagerSanitizeError(ret); -+ return virAccessManagerSanitizeError(ret, driverName); - } -diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl -index 0c4648c0fb..a8b9f5aeca 100755 ---- a/src/rpc/gendispatch.pl -+++ b/src/rpc/gendispatch.pl -@@ -2199,7 +2199,8 @@ elsif ($mode eq "client") { - print " virObjectUnref(mgr);\n"; - if ($action eq "Ensure") { - print " if (rv == 0)\n"; -- print " virReportError(VIR_ERR_ACCESS_DENIED, NULL);\n"; -+ print " virReportError(VIR_ERR_ACCESS_DENIED,\n"; -+ print" _(\"'%s' denied access\"), conn->driver->name);\n"; - print " return $fail;\n"; - } else { - print " virResetLastError();\n"; --- -2.19.2 - diff --git a/SOURCES/libvirt-admin-reject-clients-unless-their-UID-matches-the-current-UID.patch b/SOURCES/libvirt-admin-reject-clients-unless-their-UID-matches-the-current-UID.patch deleted file mode 100644 index a6c1113..0000000 --- a/SOURCES/libvirt-admin-reject-clients-unless-their-UID-matches-the-current-UID.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 3eaa16967f0546c5d1596bb6c36767cbe01040b9 Mon Sep 17 00:00:00 2001 -Message-Id: <3eaa16967f0546c5d1596bb6c36767cbe01040b9@dist-git> -From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= -Date: Wed, 15 May 2019 21:40:56 +0100 -Subject: [PATCH] admin: reject clients unless their UID matches the current - UID -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The admin protocol RPC messages are only intended for use by the user -running the daemon. As such they should not be allowed for any client -UID that does not match the server UID. - -Fixes CVE-2019-10132 - -Reviewed-by: Ján Tomko -Signed-off-by: Daniel P. Berrangé -(cherry picked from commit 96f41cd765c9e525fe28ee5abbfbf4a79b3720c7) -Reviewed-by: Jiri Denemark -Message-Id: <20190515204058.28077-2-berrange@redhat.com> ---- - src/admin/admin_server_dispatch.c | 22 ++++++++++++++++++++++ - 1 file changed, 22 insertions(+) - -diff --git a/src/admin/admin_server_dispatch.c b/src/admin/admin_server_dispatch.c -index b78ff902c0..9f25813ae3 100644 ---- a/src/admin/admin_server_dispatch.c -+++ b/src/admin/admin_server_dispatch.c -@@ -66,6 +66,28 @@ remoteAdmClientNew(virNetServerClientPtr client ATTRIBUTE_UNUSED, - void *opaque) - { - struct daemonAdmClientPrivate *priv; -+ uid_t clientuid; -+ gid_t clientgid; -+ pid_t clientpid; -+ unsigned long long timestamp; -+ -+ if (virNetServerClientGetUNIXIdentity(client, -+ &clientuid, -+ &clientgid, -+ &clientpid, -+ ×tamp) < 0) -+ return NULL; -+ -+ VIR_DEBUG("New client pid %lld uid %lld", -+ (long long)clientpid, -+ (long long)clientuid); -+ -+ if (geteuid() != clientuid) { -+ virReportRestrictedError(_("Disallowing client %lld with uid %lld"), -+ (long long)clientpid, -+ (long long)clientuid); -+ return NULL; -+ } - - if (VIR_ALLOC(priv) < 0) - return NULL; --- -2.22.0 - diff --git a/SOURCES/libvirt-api-disallow-virConnect-HypervisorCPU-on-read-only-connections.patch b/SOURCES/libvirt-api-disallow-virConnect-HypervisorCPU-on-read-only-connections.patch deleted file mode 100644 index 70eecbc..0000000 --- a/SOURCES/libvirt-api-disallow-virConnect-HypervisorCPU-on-read-only-connections.patch +++ /dev/null @@ -1,46 +0,0 @@ -From bab30af2d83e27d9141545cb9dcff51924e52b4d Mon Sep 17 00:00:00 2001 -Message-Id: -From: =?UTF-8?q?J=C3=A1n=20Tomko?= -Date: Tue, 18 Jun 2019 13:30:02 +0200 -Subject: [PATCH] api: disallow virConnect*HypervisorCPU on read-only - connections -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -These APIs can be used to execute arbitrary emulators. -Forbid them on read-only connections. - -Fixes: CVE-2019-10168 -Signed-off-by: Ján Tomko -Reviewed-by: Daniel P. Berrangé -Signed-off-by: Ján Tomko -Message-Id: <470651092e7d6a4ba5875cf8885fd3714d5ea189.1560857354.git.jtomko@redhat.com> -Reviewed-by: Jiri Denemark ---- - src/libvirt-host.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/libvirt-host.c b/src/libvirt-host.c -index e20d6ee250..2978825d22 100644 ---- a/src/libvirt-host.c -+++ b/src/libvirt-host.c -@@ -1041,6 +1041,7 @@ virConnectCompareHypervisorCPU(virConnectPtr conn, - - virCheckConnectReturn(conn, VIR_CPU_COMPARE_ERROR); - virCheckNonNullArgGoto(xmlCPU, error); -+ virCheckReadOnlyGoto(conn->flags, error); - - if (conn->driver->connectCompareHypervisorCPU) { - int ret; -@@ -1234,6 +1235,7 @@ virConnectBaselineHypervisorCPU(virConnectPtr conn, - - virCheckConnectReturn(conn, NULL); - virCheckNonNullArgGoto(xmlCPUs, error); -+ virCheckReadOnlyGoto(conn->flags, error); - - if (conn->driver->connectBaselineHypervisorCPU) { - char *cpu; --- -2.22.0 - diff --git a/SOURCES/libvirt-api-disallow-virConnectGetDomainCapabilities-on-read-only-connections.patch b/SOURCES/libvirt-api-disallow-virConnectGetDomainCapabilities-on-read-only-connections.patch deleted file mode 100644 index 6815a55..0000000 --- a/SOURCES/libvirt-api-disallow-virConnectGetDomainCapabilities-on-read-only-connections.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 2b0e20b240848c84932aa549e8ec2b6e0a5646fa Mon Sep 17 00:00:00 2001 -Message-Id: <2b0e20b240848c84932aa549e8ec2b6e0a5646fa@dist-git> -From: =?UTF-8?q?J=C3=A1n=20Tomko?= -Date: Tue, 18 Jun 2019 13:30:01 +0200 -Subject: [PATCH] api: disallow virConnectGetDomainCapabilities on read-only - connections -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This API can be used to execute arbitrary emulators. -Forbid it on read-only connections. - -Fixes: CVE-2019-10167 -Signed-off-by: Ján Tomko -Reviewed-by: Daniel P. Berrangé -Signed-off-by: Ján Tomko -Message-Id: -Reviewed-by: Jiri Denemark ---- - src/libvirt-domain.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c -index 3855dfe0dd..a1c913bd86 100644 ---- a/src/libvirt-domain.c -+++ b/src/libvirt-domain.c -@@ -11279,6 +11279,7 @@ virConnectGetDomainCapabilities(virConnectPtr conn, - virResetLastError(); - - virCheckConnectReturn(conn, NULL); -+ virCheckReadOnlyGoto(conn->flags, error); - - if (conn->driver->connectGetDomainCapabilities) { - char *ret; --- -2.22.0 - diff --git a/SOURCES/libvirt-api-disallow-virDomainAgentSetResponseTimeout-on-read-only-connections.patch b/SOURCES/libvirt-api-disallow-virDomainAgentSetResponseTimeout-on-read-only-connections.patch new file mode 100644 index 0000000..5d9ae06 --- /dev/null +++ b/SOURCES/libvirt-api-disallow-virDomainAgentSetResponseTimeout-on-read-only-connections.patch @@ -0,0 +1,45 @@ +From 0c1bec6a89f97c77ba9e0ed4146deb8606ea6f16 Mon Sep 17 00:00:00 2001 +Message-Id: <0c1bec6a89f97c77ba9e0ed4146deb8606ea6f16@dist-git> +From: Jonathon Jongsma +Date: Wed, 25 Mar 2020 11:21:19 -0500 +Subject: [PATCH] api: disallow virDomainAgentSetResponseTimeout() on read-only + connections +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This function changes the amount of time that libvirt waits for a +response from the guest agent for all guest agent commands. Since this +is a configuration change, it should not be allowed on read-only +connections. + +Signed-off-by: Jonathon Jongsma +Reviewed-by: Daniel Henrique Barboza +Reviewed-by: Michal Privoznik +(cherry picked from commit 4cc90c2e62df653e909ad31fd810224bf8bcf913) + +https://bugzilla.redhat.com/show_bug.cgi?id=1814508 + +Signed-off-by: Jonathon Jongsma +Message-Id: <20200325162119.9047-2-jjongsma@redhat.com> +Reviewed-by: Ján Tomko +--- + src/libvirt-domain.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c +index eb66999f07..3deee54e48 100644 +--- a/src/libvirt-domain.c ++++ b/src/libvirt-domain.c +@@ -12554,6 +12554,8 @@ virDomainAgentSetResponseTimeout(virDomainPtr domain, + virCheckDomainReturn(domain, -1); + conn = domain->conn; + ++ virCheckReadOnlyGoto(conn->flags, error); ++ + if (conn->driver->domainAgentSetResponseTimeout) { + if (conn->driver->domainAgentSetResponseTimeout(domain, timeout, flags) < 0) + goto error; +-- +2.26.0 + diff --git a/SOURCES/libvirt-api-disallow-virDomainManagedSaveDefineXML-on-read-only-connections.patch b/SOURCES/libvirt-api-disallow-virDomainManagedSaveDefineXML-on-read-only-connections.patch deleted file mode 100644 index c02b5b9..0000000 --- a/SOURCES/libvirt-api-disallow-virDomainManagedSaveDefineXML-on-read-only-connections.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 0673d5b707d68562732b78c89fe339e8558f8496 Mon Sep 17 00:00:00 2001 -Message-Id: <0673d5b707d68562732b78c89fe339e8558f8496@dist-git> -From: =?UTF-8?q?J=C3=A1n=20Tomko?= -Date: Tue, 18 Jun 2019 13:30:00 +0200 -Subject: [PATCH] api: disallow virDomainManagedSaveDefineXML on read-only - connections -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The virDomainManagedSaveDefineXML can be used to alter the domain's -config used for managedsave or even execute arbitrary emulator binaries. -Forbid it on read-only connections. - -Fixes: CVE-2019-10166 -Reported-by: Matthias Gerstner -Signed-off-by: Ján Tomko -Reviewed-by: Daniel P. Berrangé -Signed-off-by: Ján Tomko -Message-Id: <352bf5e963a6482d426f97b0ef36ca019e69280b.1560857354.git.jtomko@redhat.com> -Reviewed-by: Jiri Denemark ---- - src/libvirt-domain.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c -index 0ba85b9360..3855dfe0dd 100644 ---- a/src/libvirt-domain.c -+++ b/src/libvirt-domain.c -@@ -9487,6 +9487,7 @@ virDomainManagedSaveDefineXML(virDomainPtr domain, const char *dxml, - - virCheckDomainReturn(domain, -1); - conn = domain->conn; -+ virCheckReadOnlyGoto(conn->flags, error); - - if (conn->driver->domainManagedSaveDefineXML) { - int ret; --- -2.22.0 - diff --git a/SOURCES/libvirt-api-disallow-virDomainSaveImageGetXMLDesc-on-read-only-connections.patch b/SOURCES/libvirt-api-disallow-virDomainSaveImageGetXMLDesc-on-read-only-connections.patch deleted file mode 100644 index f2ec040..0000000 --- a/SOURCES/libvirt-api-disallow-virDomainSaveImageGetXMLDesc-on-read-only-connections.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 8533d820c378ae31176922703b7368f586a59bc0 Mon Sep 17 00:00:00 2001 -Message-Id: <8533d820c378ae31176922703b7368f586a59bc0@dist-git> -From: =?UTF-8?q?J=C3=A1n=20Tomko?= -Date: Tue, 18 Jun 2019 13:29:59 +0200 -Subject: [PATCH] api: disallow virDomainSaveImageGetXMLDesc on read-only - connections -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The virDomainSaveImageGetXMLDesc API is taking a path parameter, -which can point to any path on the system. This file will then be -read and parsed by libvirtd running with root privileges. - -Forbid it on read-only connections. - -Fixes: CVE-2019-10161 -Reported-by: Matthias Gerstner -Signed-off-by: Ján Tomko -Reviewed-by: Daniel P. Berrangé -Signed-off-by: Ján Tomko - -Conflicts: - src/libvirt-domain.c - src/remote/remote_protocol.x - -Upstream commit 12a51f372 which introduced the VIR_DOMAIN_SAVE_IMAGE_XML_SECURE -alias for VIR_DOMAIN_XML_SECURE is not backported. -Just skip the commit since we now disallow the whole API on read-only -connections, regardless of the flag. -Message-Id: <4c14d609cd7b548459b9ef2f59728fa5c5e38268.1560857354.git.jtomko@redhat.com> - -Reviewed-by: Jiri Denemark ---- - src/libvirt-domain.c | 11 ++--------- - src/qemu/qemu_driver.c | 2 +- - src/remote/remote_protocol.x | 3 +-- - 3 files changed, 4 insertions(+), 12 deletions(-) - -diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c -index ad0ded9ee3..0ba85b9360 100644 ---- a/src/libvirt-domain.c -+++ b/src/libvirt-domain.c -@@ -1073,9 +1073,7 @@ virDomainRestoreFlags(virConnectPtr conn, const char *from, const char *dxml, - * previously by virDomainSave() or virDomainSaveFlags(). - * - * No security-sensitive data will be included unless @flags contains -- * VIR_DOMAIN_XML_SECURE; this flag is rejected on read-only -- * connections. For this API, @flags should not contain either -- * VIR_DOMAIN_XML_INACTIVE or VIR_DOMAIN_XML_UPDATE_CPU. -+ * VIR_DOMAIN_XML_SECURE. - * - * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of - * error. The caller must free() the returned value. -@@ -1091,12 +1089,7 @@ virDomainSaveImageGetXMLDesc(virConnectPtr conn, const char *file, - - virCheckConnectReturn(conn, NULL); - virCheckNonNullArgGoto(file, error); -- -- if ((conn->flags & VIR_CONNECT_RO) && (flags & VIR_DOMAIN_XML_SECURE)) { -- virReportError(VIR_ERR_OPERATION_DENIED, "%s", -- _("virDomainSaveImageGetXMLDesc with secure flag")); -- goto error; -- } -+ virCheckReadOnlyGoto(conn->flags, error); - - if (conn->driver->domainSaveImageGetXMLDesc) { - char *ret; -diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c -index 88c08f88ee..2da87992fd 100644 ---- a/src/qemu/qemu_driver.c -+++ b/src/qemu/qemu_driver.c -@@ -6786,7 +6786,7 @@ qemuDomainSaveImageGetXMLDesc(virConnectPtr conn, const char *path, - if (fd < 0) - goto cleanup; - -- if (virDomainSaveImageGetXMLDescEnsureACL(conn, def, flags) < 0) -+ if (virDomainSaveImageGetXMLDescEnsureACL(conn, def) < 0) - goto cleanup; - - ret = qemuDomainDefFormatXML(driver, def, flags); -diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x -index 28c8febabd..52b92334fa 100644 ---- a/src/remote/remote_protocol.x -+++ b/src/remote/remote_protocol.x -@@ -5226,8 +5226,7 @@ enum remote_procedure { - /** - * @generate: both - * @priority: high -- * @acl: domain:read -- * @acl: domain:read_secure:VIR_DOMAIN_XML_SECURE -+ * @acl: domain:write - */ - REMOTE_PROC_DOMAIN_SAVE_IMAGE_GET_XML_DESC = 235, - --- -2.22.0 - diff --git a/SOURCES/libvirt-bhyve-Move-autostarting-of-domains-into-bhyveStateInitialize.patch b/SOURCES/libvirt-bhyve-Move-autostarting-of-domains-into-bhyveStateInitialize.patch deleted file mode 100644 index 2f0f16b..0000000 --- a/SOURCES/libvirt-bhyve-Move-autostarting-of-domains-into-bhyveStateInitialize.patch +++ /dev/null @@ -1,65 +0,0 @@ -From a26ad1b57617abc4de8a0d13716b898d311ee01e Mon Sep 17 00:00:00 2001 -Message-Id: -From: Michal Privoznik -Date: Thu, 27 Jun 2019 15:18:15 +0200 -Subject: [PATCH] bhyve: Move autostarting of domains into bhyveStateInitialize -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The stateAutoStart callback will go away shortly. Therefore, move -the autostart call into state initialize callback. - -Signed-off-by: Michal Privoznik -Reviewed-by: Ján Tomko -(cherry picked from commit 31c3c35c940010a793fea8351751bb04fab1a6d4) - -https://bugzilla.redhat.com/show_bug.cgi?id=1685151 - -Signed-off-by: Michal Privoznik -Message-Id: <1a93e2bef531c11190c652fcfb73b568ee73e487.1561641375.git.mprivozn@redhat.com> -Reviewed-by: Jiri Denemark ---- - src/bhyve/bhyve_driver.c | 12 ++---------- - 1 file changed, 2 insertions(+), 10 deletions(-) - -diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c -index 9284b51783..ec016ecc0c 100644 ---- a/src/bhyve/bhyve_driver.c -+++ b/src/bhyve/bhyve_driver.c -@@ -1270,6 +1270,8 @@ bhyveStateInitialize(bool privileged, - - virBhyveProcessReconnectAll(bhyve_driver); - -+ bhyveAutostartDomains(bhyve_driver); -+ - return 0; - - cleanup: -@@ -1297,15 +1299,6 @@ bhyveDriverGetGrubCaps(virConnectPtr conn) - return 0; - } - --static void --bhyveStateAutoStart(void) --{ -- if (!bhyve_driver) -- return; -- -- bhyveAutostartDomains(bhyve_driver); --} -- - static int - bhyveConnectGetMaxVcpus(virConnectPtr conn, - const char *type) -@@ -1713,7 +1706,6 @@ static virConnectDriver bhyveConnectDriver = { - static virStateDriver bhyveStateDriver = { - .name = "bhyve", - .stateInitialize = bhyveStateInitialize, -- .stateAutoStart = bhyveStateAutoStart, - .stateCleanup = bhyveStateCleanup, - }; - --- -2.22.0 - diff --git a/SOURCES/libvirt-conf-Add-definitions-for-uid-and-fid-PCI-address-attributes.patch b/SOURCES/libvirt-conf-Add-definitions-for-uid-and-fid-PCI-address-attributes.patch deleted file mode 100644 index 17eb235..0000000 --- a/SOURCES/libvirt-conf-Add-definitions-for-uid-and-fid-PCI-address-attributes.patch +++ /dev/null @@ -1,67 +0,0 @@ -From dd083516c7057ee50e59290643634156daf0773b Mon Sep 17 00:00:00 2001 -Message-Id: -From: Yi Min Zhao -Date: Mon, 8 Apr 2019 10:57:18 +0200 -Subject: [PATCH] conf: Add definitions for 'uid' and 'fid' PCI address - attributes -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add zPCI definitions in preparation of extending the PCI address -with parameters uid (user-defined identifier) and fid (PCI function -identifier). - -Signed-off-by: Yi Min Zhao -Reviewed-by: Boris Fiuczynski -Reviewed-by: Stefan Zimmermann -Reviewed-by: Bjoern Walk -Reviewed-by: Ján Tomko -Reviewed-by: Andrea Bolognani - -(cherry-picked from commit 30522c78c11d9ff6c6c177dfca4a0da8057095fe) - -https://bugzilla.redhat.com/show_bug.cgi?id=1508149 - -Signed-off-by: Andrea Bolognani -Message-Id: <20190408085732.28684-2-abologna@redhat.com> -Reviewed-by: Laine Stump -Reviewed-by: Ján Tomko ---- - cfg.mk | 1 + - src/util/virpci.h | 7 +++++++ - 2 files changed, 8 insertions(+) - -diff --git a/cfg.mk b/cfg.mk -index e3e94bf6f0..7fd2b1dcb6 100644 ---- a/cfg.mk -+++ b/cfg.mk -@@ -472,6 +472,7 @@ sc_prohibit_canonicalize_file_name: - # Insist on correct types for [pug]id. - sc_correct_id_types: - @prohibit='\<(int|long) *[pug]id\>' \ -+ exclude='exempt from syntax-check' \ - halt='use pid_t for pid, uid_t for uid, gid_t for gid' \ - $(_sc_search_regexp) - -diff --git a/src/util/virpci.h b/src/util/virpci.h -index 794b7e59db..01df652b86 100644 ---- a/src/util/virpci.h -+++ b/src/util/virpci.h -@@ -36,6 +36,13 @@ typedef virPCIDeviceAddress *virPCIDeviceAddressPtr; - typedef struct _virPCIDeviceList virPCIDeviceList; - typedef virPCIDeviceList *virPCIDeviceListPtr; - -+typedef struct _virZPCIDeviceAddress virZPCIDeviceAddress; -+typedef virZPCIDeviceAddress *virZPCIDeviceAddressPtr; -+struct _virZPCIDeviceAddress { -+ unsigned int uid; /* exempt from syntax-check */ -+ unsigned int fid; -+}; -+ - struct _virPCIDeviceAddress { - unsigned int domain; - unsigned int bus; --- -2.22.0 - diff --git a/SOURCES/libvirt-conf-Add-support-for-cookies-for-HTTP-based-disks.patch b/SOURCES/libvirt-conf-Add-support-for-cookies-for-HTTP-based-disks.patch new file mode 100644 index 0000000..ed4e875 --- /dev/null +++ b/SOURCES/libvirt-conf-Add-support-for-cookies-for-HTTP-based-disks.patch @@ -0,0 +1,449 @@ +From 4abdfae3b67295a0143f650768630e009d1b2798 Mon Sep 17 00:00:00 2001 +Message-Id: <4abdfae3b67295a0143f650768630e009d1b2798@dist-git> +From: Peter Krempa +Date: Mon, 16 Mar 2020 22:11:57 +0100 +Subject: [PATCH] conf: Add support for cookies for HTTP based disks +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add possibility to specify one or more cookies for http based disks. +This patch adds the config parser, storage and validation of the +cookies. + +Signed-off-by: Peter Krempa +Reviewed-by: Ján Tomko +(cherry picked from commit 3b076391befc3fe72deb0c244ac6c2b4c100b410) + +https://bugzilla.redhat.com/show_bug.cgi?id=1804750 +Message-Id: <3135a30f0d0a1a4bb8da02c49f10a1bcf3a394f4.1584391727.git.pkrempa@redhat.com> +Reviewed-by: Ján Tomko +--- + docs/formatdomain.html.in | 10 ++ + docs/schemas/domaincommon.rng | 24 ++++ + src/conf/domain_conf.c | 82 +++++++++++++ + src/libvirt_private.syms | 1 + + src/util/virstoragefile.c | 115 ++++++++++++++++++ + src/util/virstoragefile.h | 15 +++ + .../disk-network-http.xml | 8 ++ + 7 files changed, 255 insertions(+) + +diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in +index 2cce247958..5a10d64e83 100644 +--- a/docs/formatdomain.html.in ++++ b/docs/formatdomain.html.in +@@ -2839,6 +2839,9 @@ + <driver name='qemu' type='raw'/> + <source protocol="http" name="url_path"> + <host name="hostname" port="80"/> ++ <cookies> ++ <cookie name="test">somevalue</cookie> ++ </cookies> + </source> + <target dev='hde' bus='ide' tray='open'/> + <readonly/> +@@ -3382,6 +3385,13 @@ + certificate validation. Supported values are yes and + no. Since 6.2.0 + ++
cookies
++
++ For http and https accessed storage it's ++ possible to pass one or more cookies. The cookie name and value ++ must conform to the HTTP specification. ++ Since 6.2.0 ++
+ + +

+diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng +index 548601b61c..bdf35e64f6 100644 +--- a/docs/schemas/domaincommon.rng ++++ b/docs/schemas/domaincommon.rng +@@ -1817,6 +1817,24 @@ + + + ++ ++ ++ ++ ++ ++ ++ [!#$%&'*+\-.0-9A-Z\^_`a-z|~]+ ++ ++ ++ ++ [!#$%&'()*+\-./0-9:>=<?@A-Z\^_`\[\]a-z|~]+ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1833,6 +1851,9 @@ + + + ++ ++ ++ + + + +@@ -1849,6 +1870,9 @@ + + + ++ ++ ++ + + + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index 70bbc35bb3..d066d3aac1 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -9249,6 +9249,62 @@ virDomainDiskSourcePoolDefParse(xmlNodePtr node, + } + + ++static virStorageNetCookieDefPtr ++virDomainStorageNetCookieParse(xmlNodePtr node, ++ xmlXPathContextPtr ctxt) ++{ ++ VIR_XPATH_NODE_AUTORESTORE(ctxt); ++ g_autoptr(virStorageNetCookieDef) cookie = NULL; ++ ++ ctxt->node = node; ++ ++ cookie = g_new0(virStorageNetCookieDef, 1); ++ ++ if (!(cookie->name = virXPathString("string(./@name)", ctxt))) { ++ virReportError(VIR_ERR_XML_ERROR, "%s", _("missing cookie name")); ++ return NULL; ++ } ++ ++ if (!(cookie->value = virXPathString("string(.)", ctxt))) { ++ virReportError(VIR_ERR_XML_ERROR, _("missing value for cookie '%s'"), ++ cookie->name); ++ return NULL; ++ } ++ ++ return g_steal_pointer(&cookie); ++} ++ ++ ++static int ++virDomainStorageNetCookiesParse(xmlNodePtr node, ++ xmlXPathContextPtr ctxt, ++ virStorageSourcePtr src) ++{ ++ VIR_XPATH_NODE_AUTORESTORE(ctxt); ++ g_autofree xmlNodePtr *nodes = NULL; ++ ssize_t nnodes; ++ size_t i; ++ ++ ctxt->node = node; ++ ++ if ((nnodes = virXPathNodeSet("./cookie", ctxt, &nodes)) < 0) ++ return -1; ++ ++ src->cookies = g_new0(virStorageNetCookieDefPtr, nnodes); ++ src->ncookies = nnodes; ++ ++ for (i = 0; i < nnodes; i++) { ++ if (!(src->cookies[i] = virDomainStorageNetCookieParse(nodes[i], ctxt))) ++ return -1; ++ } ++ ++ if (virStorageSourceNetCookiesValidate(src) < 0) ++ return -1; ++ ++ return 0; ++} ++ ++ + static int + virDomainDiskSourceNetworkParse(xmlNodePtr node, + xmlXPathContextPtr ctxt, +@@ -9260,6 +9316,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node, + g_autofree char *haveTLS = NULL; + g_autofree char *tlsCfg = NULL; + g_autofree char *sslverifystr = NULL; ++ xmlNodePtr tmpnode; + + if (!(protocol = virXMLPropString(node, "protocol"))) { + virReportError(VIR_ERR_XML_ERROR, "%s", +@@ -9345,6 +9402,13 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node, + src->sslverify = verify; + } + ++ if ((src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTP || ++ src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTPS) && ++ (tmpnode = virXPathNode("./cookies", ctxt))) { ++ if (virDomainStorageNetCookiesParse(tmpnode, ctxt, src) < 0) ++ return -1; ++ } ++ + return 0; + } + +@@ -24281,6 +24345,22 @@ virDomainSourceDefFormatSeclabel(virBufferPtr buf, + } + + ++static void ++virDomainDiskSourceFormatNetworkCookies(virBufferPtr buf, ++ virStorageSourcePtr src) ++{ ++ g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf); ++ size_t i; ++ ++ for (i = 0; i < src->ncookies; i++) { ++ virBufferEscapeString(&childBuf, "", src->cookies[i]->name); ++ virBufferEscapeString(&childBuf, "%s\n", src->cookies[i]->value); ++ } ++ ++ virXMLFormatElement(buf, "cookies", NULL, &childBuf); ++} ++ ++ + static int + virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf, + virBufferPtr childBuf, +@@ -24331,6 +24411,8 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf, + virTristateBoolTypeToString(src->sslverify)); + } + ++ virDomainDiskSourceFormatNetworkCookies(childBuf, src); ++ + return 0; + } + +diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms +index dbbec0d567..ac5527ef01 100644 +--- a/src/libvirt_private.syms ++++ b/src/libvirt_private.syms +@@ -3123,6 +3123,7 @@ virStorageSourceIsEmpty; + virStorageSourceIsLocalStorage; + virStorageSourceIsRelative; + virStorageSourceIsSameLocation; ++virStorageSourceNetCookiesValidate; + virStorageSourceNetworkAssignDefaultPorts; + virStorageSourceNew; + virStorageSourceNewFromBacking; +diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c +index cfa77fccf8..6350168d73 100644 +--- a/src/util/virstoragefile.c ++++ b/src/util/virstoragefile.c +@@ -2157,6 +2157,118 @@ virStorageSourceSeclabelsCopy(virStorageSourcePtr to, + } + + ++void ++virStorageNetCookieDefFree(virStorageNetCookieDefPtr def) ++{ ++ if (!def) ++ return; ++ ++ g_free(def->name); ++ g_free(def->value); ++ ++ g_free(def); ++} ++ ++ ++static void ++virStorageSourceNetCookiesClear(virStorageSourcePtr src) ++{ ++ size_t i; ++ ++ if (!src || !src->cookies) ++ return; ++ ++ for (i = 0; i < src->ncookies; i++) ++ virStorageNetCookieDefFree(src->cookies[i]); ++ ++ g_clear_pointer(&src->cookies, g_free); ++ src->ncookies = 0; ++} ++ ++ ++static void ++virStorageSourceNetCookiesCopy(virStorageSourcePtr to, ++ const virStorageSource *from) ++{ ++ size_t i; ++ ++ if (from->ncookies == 0) ++ return; ++ ++ to->cookies = g_new0(virStorageNetCookieDefPtr, from->ncookies); ++ to->ncookies = from->ncookies; ++ ++ for (i = 0; i < from->ncookies; i++) { ++ to->cookies[i]->name = g_strdup(from->cookies[i]->name); ++ to->cookies[i]->value = g_strdup(from->cookies[i]->value); ++ } ++} ++ ++ ++/* see https://tools.ietf.org/html/rfc6265#section-4.1.1 */ ++static const char virStorageSourceCookieValueInvalidChars[] = ++ "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F" ++ "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F" ++ " \",;\\"; ++ ++/* in addition cookie name can't contain these */ ++static const char virStorageSourceCookieNameInvalidChars[] = ++ "()<>@:/[]?={}"; ++ ++static int ++virStorageSourceNetCookieValidate(virStorageNetCookieDefPtr def) ++{ ++ /* name must have at least 1 character */ ++ if (*(def->name) == '\0') { ++ virReportError(VIR_ERR_XML_ERROR, "%s", ++ _("cookie name must not be empty")); ++ return -1; ++ } ++ ++ /* check invalid characters in name */ ++ if (virStringHasChars(def->name, virStorageSourceCookieValueInvalidChars) || ++ virStringHasChars(def->name, virStorageSourceCookieNameInvalidChars)) { ++ virReportError(VIR_ERR_XML_ERROR, ++ _("cookie name '%s' contains invalid characters"), ++ def->name); ++ return -1; ++ } ++ ++ /* check invalid characters in value */ ++ if (virStringHasChars(def->value, virStorageSourceCookieValueInvalidChars)) { ++ virReportError(VIR_ERR_XML_ERROR, ++ _("value of cookie '%s' contains invalid characters"), ++ def->name); ++ return -1; ++ } ++ ++ return 0; ++} ++ ++ ++int ++virStorageSourceNetCookiesValidate(virStorageSourcePtr src) ++{ ++ size_t i; ++ size_t j; ++ ++ for (i = 0; i < src->ncookies; i++) { ++ if (virStorageSourceNetCookieValidate(src->cookies[i]) < 0) ++ return -1; ++ ++ for (j = i + 1; j < src->ncookies; j++) { ++ if (STREQ(src->cookies[i]->name, src->cookies[j]->name)) { ++ virReportError(VIR_ERR_XML_ERROR, _("duplicate cookie '%s'"), ++ src->cookies[i]->name); ++ return -1; ++ } ++ } ++ } ++ ++ return 0; ++} ++ ++ + static virStorageTimestampsPtr + virStorageTimestampsCopy(const virStorageTimestamps *src) + { +@@ -2299,6 +2411,8 @@ virStorageSourceCopy(const virStorageSource *src, + def->nhosts = src->nhosts; + } + ++ virStorageSourceNetCookiesCopy(def, src); ++ + if (src->srcpool && + !(def->srcpool = virStorageSourcePoolDefCopy(src->srcpool))) + return NULL; +@@ -2560,6 +2674,7 @@ virStorageSourceClear(virStorageSourcePtr def) + VIR_FREE(def->volume); + VIR_FREE(def->snapshot); + VIR_FREE(def->configFile); ++ virStorageSourceNetCookiesClear(def); + virStorageSourcePoolDefFree(def->srcpool); + virBitmapFree(def->features); + VIR_FREE(def->compat); +diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h +index fab4248c3d..1c7c046ad6 100644 +--- a/src/util/virstoragefile.h ++++ b/src/util/virstoragefile.h +@@ -162,6 +162,17 @@ struct _virStorageNetHostDef { + char *socket; /* path to unix socket */ + }; + ++typedef struct _virStorageNetCookieDef virStorageNetCookieDef; ++typedef virStorageNetCookieDef *virStorageNetCookieDefPtr; ++struct _virStorageNetCookieDef { ++ char *name; ++ char *value; ++}; ++ ++void virStorageNetCookieDefFree(virStorageNetCookieDefPtr def); ++ ++G_DEFINE_AUTOPTR_CLEANUP_FUNC(virStorageNetCookieDef, virStorageNetCookieDefFree); ++ + /* Information for a storage volume from a virStoragePool */ + + /* +@@ -276,6 +287,8 @@ struct _virStorageSource { + the source definition */ + size_t nhosts; + virStorageNetHostDefPtr hosts; ++ size_t ncookies; ++ virStorageNetCookieDefPtr *cookies; + virStorageSourcePoolDefPtr srcpool; + virStorageAuthDefPtr auth; + bool authInherited; +@@ -477,6 +490,8 @@ int virStorageSourceUpdateCapacity(virStorageSourcePtr src, + int virStorageSourceNewFromBacking(virStorageSourcePtr parent, + virStorageSourcePtr *backing); + ++int virStorageSourceNetCookiesValidate(virStorageSourcePtr src); ++ + virStorageSourcePtr virStorageSourceCopy(const virStorageSource *src, + bool backingChain) + ATTRIBUTE_NONNULL(1); +diff --git a/tests/genericxml2xmlindata/disk-network-http.xml b/tests/genericxml2xmlindata/disk-network-http.xml +index bdcc1977f2..bafb77c8ec 100644 +--- a/tests/genericxml2xmlindata/disk-network-http.xml ++++ b/tests/genericxml2xmlindata/disk-network-http.xml +@@ -33,6 +33,10 @@ + + + ++ ++ testcookievalue ++ blurb ++ + + + +@@ -41,6 +45,10 @@ + + + ++ ++ testcookievalue ++ blurb ++ + + + +-- +2.25.1 + diff --git a/SOURCES/libvirt-conf-Add-support-for-http-s-query-strings.patch b/SOURCES/libvirt-conf-Add-support-for-http-s-query-strings.patch new file mode 100644 index 0000000..32169e7 --- /dev/null +++ b/SOURCES/libvirt-conf-Add-support-for-http-s-query-strings.patch @@ -0,0 +1,160 @@ +From 45ecbd824c92bd05a46557bfcaff39196f701e6c Mon Sep 17 00:00:00 2001 +Message-Id: <45ecbd824c92bd05a46557bfcaff39196f701e6c@dist-git> +From: Peter Krempa +Date: Mon, 30 Mar 2020 17:21:45 +0200 +Subject: [PATCH] conf: Add support for http(s) query strings +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add a new attribute for holding the query part for http(s) disks. + +Signed-off-by: Peter Krempa +Reviewed-by: Ján Tomko +(cherry picked from commit 56368124728f0d65dde07244c741b459fcd6b939) +https://bugzilla.redhat.com/show_bug.cgi?id=1804750 +Message-Id: +Reviewed-by: Jiri Denemark +--- + docs/formatdomain.html.in | 7 ++++++- + docs/schemas/domaincommon.rng | 6 ++++++ + src/conf/domain_conf.c | 5 +++++ + src/util/virstoragefile.c | 2 ++ + src/util/virstoragefile.h | 1 + + tests/qemuxml2argvdata/disk-network-http.xml | 2 +- + .../qemuxml2xmloutdata/disk-network-http.x86_64-latest.xml | 2 +- + 7 files changed, 22 insertions(+), 3 deletions(-) + +diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in +index 143db21d4d..9c588185df 100644 +--- a/docs/formatdomain.html.in ++++ b/docs/formatdomain.html.in +@@ -2837,7 +2837,7 @@ + </disk> + <disk type='network' device='cdrom'> + <driver name='qemu' type='raw'/> +- <source protocol="http" name="url_path"> ++ <source protocol="http" name="url_path" query="foo=bar&amp;baz=flurb> + <host name="hostname" port="80"/> + <cookies> + <cookie name="test">somevalue</cookie> +@@ -3103,6 +3103,11 @@ + ('tls' Since 4.5.0) +

+ ++

For protocols http and https an ++ optional attribute query specifies the query string. ++ (Since 6.2.0) ++

++ +

For "iscsi" (since 1.0.4), the + name attribute may include a logical unit number, + separated from the target's name by a slash (e.g., +diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng +index e17f7ff8c0..dd8f27243a 100644 +--- a/docs/schemas/domaincommon.rng ++++ b/docs/schemas/domaincommon.rng +@@ -1869,6 +1869,9 @@ + + + ++ ++ ++ + + + +@@ -1894,6 +1897,9 @@ + + + ++ ++ ++ + + + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index e3755fa285..28160a2967 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -9382,6 +9382,10 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node, + /* config file currently only works with remote disks */ + src->configFile = virXPathString("string(./config/@file)", ctxt); + ++ if (src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTP || ++ src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTPS) ++ src->query = virXMLPropString(node, "query"); ++ + if (virDomainStorageNetworkParseHosts(node, &src->hosts, &src->nhosts) < 0) + return -1; + +@@ -24390,6 +24394,7 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf, + path = g_strdup_printf("%s/%s", src->volume, src->path); + + virBufferEscapeString(attrBuf, " name='%s'", path ? path : src->path); ++ virBufferEscapeString(attrBuf, " query='%s'", src->query); + + if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT && + !(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE && +diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c +index f8d741f040..4082e3f5f7 100644 +--- a/src/util/virstoragefile.c ++++ b/src/util/virstoragefile.c +@@ -2418,6 +2418,7 @@ virStorageSourceCopy(const virStorageSource *src, + def->compat = g_strdup(src->compat); + def->tlsAlias = g_strdup(src->tlsAlias); + def->tlsCertdir = g_strdup(src->tlsCertdir); ++ def->query = g_strdup(src->query); + + if (src->sliceStorage) + def->sliceStorage = virStorageSourceSliceCopy(src->sliceStorage); +@@ -2696,6 +2697,7 @@ virStorageSourceClear(virStorageSourcePtr def) + VIR_FREE(def->volume); + VIR_FREE(def->snapshot); + VIR_FREE(def->configFile); ++ VIR_FREE(def->query); + virStorageSourceNetCookiesClear(def); + virStorageSourcePoolDefFree(def->srcpool); + virBitmapFree(def->features); +diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h +index 0230f44652..8089d1e07f 100644 +--- a/src/util/virstoragefile.h ++++ b/src/util/virstoragefile.h +@@ -285,6 +285,7 @@ struct _virStorageSource { + char *snapshot; /* for storage systems supporting internal snapshots */ + char *configFile; /* some storage systems use config file as part of + the source definition */ ++ char *query; /* query string for HTTP based protocols */ + size_t nhosts; + virStorageNetHostDefPtr hosts; + size_t ncookies; +diff --git a/tests/qemuxml2argvdata/disk-network-http.xml b/tests/qemuxml2argvdata/disk-network-http.xml +index 93e6617433..3abf499019 100644 +--- a/tests/qemuxml2argvdata/disk-network-http.xml ++++ b/tests/qemuxml2argvdata/disk-network-http.xml +@@ -42,7 +42,7 @@ + + + +- ++ + + + +diff --git a/tests/qemuxml2xmloutdata/disk-network-http.x86_64-latest.xml b/tests/qemuxml2xmloutdata/disk-network-http.x86_64-latest.xml +index 60073c227c..45b01841ec 100644 +--- a/tests/qemuxml2xmloutdata/disk-network-http.x86_64-latest.xml ++++ b/tests/qemuxml2xmloutdata/disk-network-http.x86_64-latest.xml +@@ -46,7 +46,7 @@ + + + +- ++ + + + +-- +2.26.0 + diff --git a/SOURCES/libvirt-conf-Add-support-for-modifying-ssl-validation-for-https-ftps-disks.patch b/SOURCES/libvirt-conf-Add-support-for-modifying-ssl-validation-for-https-ftps-disks.patch new file mode 100644 index 0000000..995852c --- /dev/null +++ b/SOURCES/libvirt-conf-Add-support-for-modifying-ssl-validation-for-https-ftps-disks.patch @@ -0,0 +1,242 @@ +From ffe8028ca07eb049b12d5c152b3d66489378d731 Mon Sep 17 00:00:00 2001 +Message-Id: +From: Peter Krempa +Date: Mon, 16 Mar 2020 22:11:56 +0100 +Subject: [PATCH] conf: Add support for modifying ssl validation for https/ftps + disks +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +To allow turning off verification of SSL cerificates add a new element + to the disk source XML which will allow configuring the validation +process using the 'verify' attribute. + +Signed-off-by: Peter Krempa +Reviewed-by: Ján Tomko +(cherry picked from commit 25481e25b14108373bf2e5e95c04fe30bff96bb4) + +https://bugzilla.redhat.com/show_bug.cgi?id=1804750 +Message-Id: +Reviewed-by: Ján Tomko +--- + docs/formatdomain.html.in | 9 ++++ + docs/schemas/domaincommon.rng | 51 ++++++++++++++++++- + src/conf/domain_conf.c | 19 +++++++ + src/util/virstoragefile.c | 1 + + src/util/virstoragefile.h | 1 + + .../disk-network-http.xml | 9 ++++ + 6 files changed, 88 insertions(+), 2 deletions(-) + +diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in +index e9830ab231..2cce247958 100644 +--- a/docs/formatdomain.html.in ++++ b/docs/formatdomain.html.in +@@ -2847,6 +2847,7 @@ + <driver name='qemu' type='raw'/> + <source protocol="https" name="url_path"> + <host name="hostname" port="443"/> ++ <ssl verify="no"/> + </source> + <target dev='hdf' bus='ide' tray='open'/> + <readonly/> +@@ -3373,6 +3374,14 @@ + The offset and size values are in bytes. + Since 6.1.0 + ++

ssl
++
++ For https and ftps accessed storage it's ++ possible to tweak the SSL transport parameters with this element. ++ The verify attribute allows to turn on or off SSL ++ certificate validation. Supported values are yes and ++ no. Since 6.2.0 ++
+ + +

+diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng +index aa70e340b9..548601b61c 100644 +--- a/docs/schemas/domaincommon.rng ++++ b/docs/schemas/domaincommon.rng +@@ -1808,12 +1808,39 @@ + + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ https ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + + + http +- https + + + +@@ -1825,13 +1852,31 @@ + + + ++ ++ ++ ++ ++ ftps ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + + + sheepdog + ftp +- ftps + tftp + + +@@ -1909,6 +1954,8 @@ + + + ++ ++ + + + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index b3c4084c38..70bbc35bb3 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -9259,6 +9259,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node, + g_autofree char *protocol = NULL; + g_autofree char *haveTLS = NULL; + g_autofree char *tlsCfg = NULL; ++ g_autofree char *sslverifystr = NULL; + + if (!(protocol = virXMLPropString(node, "protocol"))) { + virReportError(VIR_ERR_XML_ERROR, "%s", +@@ -9331,6 +9332,19 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node, + + virStorageSourceInitiatorParseXML(ctxt, &src->initiator); + ++ if ((src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTPS || ++ src->protocol == VIR_STORAGE_NET_PROTOCOL_FTPS) && ++ (sslverifystr = virXPathString("string(./ssl/@verify)", ctxt))) { ++ int verify; ++ if ((verify = virTristateBoolTypeFromString(sslverifystr)) < 0) { ++ virReportError(VIR_ERR_XML_ERROR, ++ _("invalid ssl verify mode '%s'"), sslverifystr); ++ return -1; ++ } ++ ++ src->sslverify = verify; ++ } ++ + return 0; + } + +@@ -24312,6 +24326,11 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf, + + virStorageSourceInitiatorFormatXML(&src->initiator, childBuf); + ++ if (src->sslverify != VIR_TRISTATE_BOOL_ABSENT) { ++ virBufferAsprintf(childBuf, "\n", ++ virTristateBoolTypeToString(src->sslverify)); ++ } ++ + return 0; + } + +diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c +index b88763b267..cfa77fccf8 100644 +--- a/src/util/virstoragefile.c ++++ b/src/util/virstoragefile.c +@@ -2270,6 +2270,7 @@ virStorageSourceCopy(const virStorageSource *src, + def->cachemode = src->cachemode; + def->discard = src->discard; + def->detect_zeroes = src->detect_zeroes; ++ def->sslverify = src->sslverify; + + /* storage driver metadata are not copied */ + def->drv = NULL; +diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h +index 5b995d54ab..fab4248c3d 100644 +--- a/src/util/virstoragefile.h ++++ b/src/util/virstoragefile.h +@@ -282,6 +282,7 @@ struct _virStorageSource { + virStorageEncryptionPtr encryption; + bool encryptionInherited; + virStoragePRDefPtr pr; ++ virTristateBool sslverify; + + virStorageSourceNVMeDefPtr nvme; /* type == VIR_STORAGE_TYPE_NVME */ + +diff --git a/tests/genericxml2xmlindata/disk-network-http.xml b/tests/genericxml2xmlindata/disk-network-http.xml +index fde1222fd0..bdcc1977f2 100644 +--- a/tests/genericxml2xmlindata/disk-network-http.xml ++++ b/tests/genericxml2xmlindata/disk-network-http.xml +@@ -25,6 +25,7 @@ + + + ++ + + + +@@ -35,6 +36,14 @@ + + + ++ ++ ++ ++ ++ ++ ++ ++ + + + +-- +2.25.1 + diff --git a/SOURCES/libvirt-conf-Add-support-for-setting-timeout-and-readahead-size-for-network-disks.patch b/SOURCES/libvirt-conf-Add-support-for-setting-timeout-and-readahead-size-for-network-disks.patch new file mode 100644 index 0000000..5fe493e --- /dev/null +++ b/SOURCES/libvirt-conf-Add-support-for-setting-timeout-and-readahead-size-for-network-disks.patch @@ -0,0 +1,205 @@ +From 3050ddce41896311b8c3ad06f148bea358e597b8 Mon Sep 17 00:00:00 2001 +Message-Id: <3050ddce41896311b8c3ad06f148bea358e597b8@dist-git> +From: Peter Krempa +Date: Mon, 16 Mar 2020 22:11:58 +0100 +Subject: [PATCH] conf: Add support for setting timeout and readahead size for + network disks +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Some disk backends support configuring the readahead buffer or timeout +for requests. Add the knobs to the XML. + +Signed-off-by: Peter Krempa +Reviewed-by: Ján Tomko +(cherry picked from commit 63fd46177367c6653c4c986558f6d0e4a700cfcc) + +https://bugzilla.redhat.com/show_bug.cgi?id=1804750 +Message-Id: <2694bc6f9a327f89d82da18320e7137152915ad3.1584391727.git.pkrempa@redhat.com> +Reviewed-by: Ján Tomko +--- + docs/formatdomain.html.in | 16 +++++++++++++ + docs/schemas/domaincommon.rng | 23 +++++++++++++++++++ + src/conf/domain_conf.c | 19 +++++++++++++++ + src/util/virstoragefile.c | 2 ++ + src/util/virstoragefile.h | 3 +++ + .../disk-network-http.xml | 2 ++ + 6 files changed, 65 insertions(+) + +diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in +index 5a10d64e83..2b8f9eabc2 100644 +--- a/docs/formatdomain.html.in ++++ b/docs/formatdomain.html.in +@@ -2842,6 +2842,8 @@ + <cookies> + <cookie name="test">somevalue</cookie> + </cookies> ++ <readahead size='65536'/> ++ <timeout seconds='6'/> + </source> + <target dev='hde' bus='ide' tray='open'/> + <readonly/> +@@ -3392,6 +3394,20 @@ + must conform to the HTTP specification. + Since 6.2.0 + ++

readahead
++
++ Specifies the size of the readahead buffer for protocols ++ which support it. (all 'curl' based drivers in qemu). The size ++ is in bytes. Note that '0' is considered as if the value is not ++ provided. ++ Since 6.2.0 ++
++
timeout
++
++ Specifies the connection timeout for protocols which support it. ++ Note that '0' is considered as if the value is not provided. ++ Since 6.2.0 ++
+ + +

+diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng +index bdf35e64f6..3a0edbed97 100644 +--- a/docs/schemas/domaincommon.rng ++++ b/docs/schemas/domaincommon.rng +@@ -1808,6 +1808,25 @@ + + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1854,6 +1873,7 @@ + + + ++ + + + +@@ -1873,6 +1893,7 @@ + + + ++ + + + +@@ -1892,6 +1913,7 @@ + + + ++ + + + +@@ -1910,6 +1932,7 @@ + + + ++ + + + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index d066d3aac1..8aec85e83c 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -9409,6 +9409,19 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node, + return -1; + } + ++ if (src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTP || ++ src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTPS || ++ src->protocol == VIR_STORAGE_NET_PROTOCOL_FTP || ++ src->protocol == VIR_STORAGE_NET_PROTOCOL_FTPS) { ++ ++ if (virXPathULongLong("string(./readahead/@size)", ctxt, &src->readahead) == -2 || ++ virXPathULongLong("string(./timeout/@seconds)", ctxt, &src->timeout) == -2) { ++ virReportError(VIR_ERR_XML_ERROR, "%s", ++ _("invalid readahead size or timeout")); ++ return -1; ++ } ++ } ++ + return 0; + } + +@@ -24413,6 +24426,12 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf, + + virDomainDiskSourceFormatNetworkCookies(childBuf, src); + ++ if (src->readahead) ++ virBufferAsprintf(childBuf, "\n", src->readahead); ++ ++ if (src->timeout) ++ virBufferAsprintf(childBuf, "\n", src->timeout); ++ + return 0; + } + +diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c +index 6350168d73..7893e054c3 100644 +--- a/src/util/virstoragefile.c ++++ b/src/util/virstoragefile.c +@@ -2383,6 +2383,8 @@ virStorageSourceCopy(const virStorageSource *src, + def->discard = src->discard; + def->detect_zeroes = src->detect_zeroes; + def->sslverify = src->sslverify; ++ def->readahead = src->readahead; ++ def->timeout = src->timeout; + + /* storage driver metadata are not copied */ + def->drv = NULL; +diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h +index 1c7c046ad6..1abdaf89ce 100644 +--- a/src/util/virstoragefile.h ++++ b/src/util/virstoragefile.h +@@ -296,6 +296,9 @@ struct _virStorageSource { + bool encryptionInherited; + virStoragePRDefPtr pr; + virTristateBool sslverify; ++ /* both values below have 0 as default value */ ++ unsigned long long readahead; /* size of the readahead buffer in bytes */ ++ unsigned long long timeout; /* connection timeout in seconds */ + + virStorageSourceNVMeDefPtr nvme; /* type == VIR_STORAGE_TYPE_NVME */ + +diff --git a/tests/genericxml2xmlindata/disk-network-http.xml b/tests/genericxml2xmlindata/disk-network-http.xml +index bafb77c8ec..a8430b8365 100644 +--- a/tests/genericxml2xmlindata/disk-network-http.xml ++++ b/tests/genericxml2xmlindata/disk-network-http.xml +@@ -49,6 +49,8 @@ + testcookievalue + blurb + ++ ++ + + + +-- +2.25.1 + diff --git a/SOURCES/libvirt-conf-Add-validation-of-input-devices.patch b/SOURCES/libvirt-conf-Add-validation-of-input-devices.patch deleted file mode 100644 index 5f9dbbb..0000000 --- a/SOURCES/libvirt-conf-Add-validation-of-input-devices.patch +++ /dev/null @@ -1,76 +0,0 @@ -From c2afbedc310ac1a65a5ee96c8fa4103e926483c4 Mon Sep 17 00:00:00 2001 -Message-Id: -From: Han Han -Date: Tue, 28 Aug 2018 10:30:51 +0200 -Subject: [PATCH] conf: Add validation of input devices -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -https://bugzilla.redhat.com/show_bug.cgi?id=1591151 - -Add function virDomainInputDefValidate to validate input devices. -Make sure evdev attribute of source element is not used by mouse, -keyboard, and tablet input device. - -Signed-off-by: Han Han -Reviewed-by: John Ferlan -(cherry picked from commit deb057fd364cb57614c6dea7b05c247231f9ae4f) -Signed-off-by: Ján Tomko - -https: //bugzilla.redhat.com/show_bug.cgi?id=1591240 -Reviewed-by: Andrea Bolognani ---- - src/conf/domain_conf.c | 27 ++++++++++++++++++++++++++- - 1 file changed, 26 insertions(+), 1 deletion(-) - -diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c -index 51a79ad8b1..16e52d149d 100644 ---- a/src/conf/domain_conf.c -+++ b/src/conf/domain_conf.c -@@ -5760,6 +5760,29 @@ virDomainVsockDefValidate(const virDomainVsockDef *vsock) - return 0; - } - -+static int -+virDomainInputDefValidate(const virDomainInputDef *input) -+{ -+ switch ((virDomainInputType) input->type) { -+ case VIR_DOMAIN_INPUT_TYPE_MOUSE: -+ case VIR_DOMAIN_INPUT_TYPE_TABLET: -+ case VIR_DOMAIN_INPUT_TYPE_KBD: -+ case VIR_DOMAIN_INPUT_TYPE_LAST: -+ if (input->source.evdev) { -+ virReportError(VIR_ERR_XML_ERROR, "%s", -+ _("setting source evdev path only supported for " -+ "passthrough input devices")); -+ return -1; -+ } -+ break; -+ -+ case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: -+ break; -+ } -+ -+ return 0; -+} -+ - - static int - virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, -@@ -5799,9 +5822,11 @@ virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, - case VIR_DOMAIN_DEVICE_VSOCK: - return virDomainVsockDefValidate(dev->data.vsock); - -+ case VIR_DOMAIN_DEVICE_INPUT: -+ return virDomainInputDefValidate(dev->data.input); -+ - case VIR_DOMAIN_DEVICE_LEASE: - case VIR_DOMAIN_DEVICE_FS: -- case VIR_DOMAIN_DEVICE_INPUT: - case VIR_DOMAIN_DEVICE_SOUND: - case VIR_DOMAIN_DEVICE_WATCHDOG: - case VIR_DOMAIN_DEVICE_GRAPHICS: --- -2.18.0 - diff --git a/SOURCES/libvirt-conf-Allocate-release-uid-and-fid-in-PCI-address.patch b/SOURCES/libvirt-conf-Allocate-release-uid-and-fid-in-PCI-address.patch deleted file mode 100644 index d99def9..0000000 --- a/SOURCES/libvirt-conf-Allocate-release-uid-and-fid-in-PCI-address.patch +++ /dev/null @@ -1,527 +0,0 @@ -From 87e3a5f2f797c79516a560ddc224074c834ef528 Mon Sep 17 00:00:00 2001 -Message-Id: <87e3a5f2f797c79516a560ddc224074c834ef528@dist-git> -From: Yi Min Zhao -Date: Mon, 8 Apr 2019 10:57:27 +0200 -Subject: [PATCH] conf: Allocate/release 'uid' and 'fid' in PCI address -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch adds new functions for reservation, assignment and release -to handle the uid/fid. If the uid/fid is defined in the domain XML, -they will be reserved directly in the collecting phase. If any of them -is not defined, we will find out an available value for them from the -zPCI address hashtable, and reserve them. For the hotplug case there -might not be a zPCI definition. So allocate and reserve uid/fid the -case. Assign if needed and reserve uid/fid for the defined case. - -Signed-off-by: Yi Min Zhao -Reviewed-by: Bjoern Walk -Reviewed-by: Boris Fiuczynski -Reviewed-by: Andrea Bolognani - -(cherry picked from commit f183b87fc1dbcc6446ac3c1cef9cdd345b9725fb) - -https://bugzilla.redhat.com/show_bug.cgi?id=1508149 - -Conflicts: - - * src/libvirt_private.syms - + several symbols are not present in the list - - missing 9ad119f4db5, ab3f781a10c, edeef779585, b899726faa5 - - * src/qemu/qemu_domain_address.c - + the old name for virDeviceInfoPCIAddressIsPresent() is used - - missing 76151a53a100 - -Signed-off-by: Andrea Bolognani -Message-Id: <20190408085732.28684-11-abologna@redhat.com> -Reviewed-by: Laine Stump -Reviewed-by: Ján Tomko ---- - src/conf/device_conf.c | 16 +++ - src/conf/device_conf.h | 3 + - src/conf/domain_addr.c | 244 +++++++++++++++++++++++++++++++++ - src/conf/domain_addr.h | 12 ++ - src/libvirt_private.syms | 5 + - src/qemu/qemu_domain_address.c | 59 +++++++- - 6 files changed, 338 insertions(+), 1 deletion(-) - -diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c -index cadac32603..76370d30a2 100644 ---- a/src/conf/device_conf.c -+++ b/src/conf/device_conf.c -@@ -28,6 +28,7 @@ - #include "viruuid.h" - #include "virbuffer.h" - #include "device_conf.h" -+#include "domain_addr.h" - #include "virstring.h" - - #define VIR_FROM_THIS VIR_FROM_DEVICE -@@ -230,6 +231,21 @@ int virPCIDeviceAddressIsValid(virPCIDeviceAddressPtr addr, - } - - -+bool -+virDeviceInfoPCIAddressExtensionIsWanted(const virDomainDeviceInfo *info) -+{ -+ return (info->addr.pci.extFlags & VIR_PCI_ADDRESS_EXTENSION_ZPCI) && -+ virZPCIDeviceAddressIsEmpty(&info->addr.pci.zpci); -+} -+ -+bool -+virDeviceInfoPCIAddressExtensionIsPresent(const virDomainDeviceInfo *info) -+{ -+ return (info->addr.pci.extFlags & VIR_PCI_ADDRESS_EXTENSION_ZPCI) && -+ !virZPCIDeviceAddressIsEmpty(&info->addr.pci.zpci); -+} -+ -+ - int - virPCIDeviceAddressParseXML(xmlNodePtr node, - virPCIDeviceAddressPtr addr) -diff --git a/src/conf/device_conf.h b/src/conf/device_conf.h -index c79066ec02..6bef2f093a 100644 ---- a/src/conf/device_conf.h -+++ b/src/conf/device_conf.h -@@ -214,6 +214,9 @@ virDeviceInfoPCIAddressPresent(const virDomainDeviceInfo *info) - !virPCIDeviceAddressIsEmpty(&info->addr.pci); - } - -+bool virDeviceInfoPCIAddressExtensionIsWanted(const virDomainDeviceInfo *info); -+bool virDeviceInfoPCIAddressExtensionIsPresent(const virDomainDeviceInfo *info); -+ - int virPCIDeviceAddressParseXML(xmlNodePtr node, - virPCIDeviceAddressPtr addr); - -diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c -index 9e0a0fdf95..a58910c394 100644 ---- a/src/conf/domain_addr.c -+++ b/src/conf/domain_addr.c -@@ -33,6 +33,238 @@ - - VIR_LOG_INIT("conf.domain_addr"); - -+static int -+virDomainZPCIAddressReserveId(virHashTablePtr set, -+ unsigned int id, -+ const char *name) -+{ -+ if (virHashLookup(set, &id)) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, -+ _("zPCI %s %o is already reserved"), -+ name, id); -+ return -1; -+ } -+ -+ if (virHashAddEntry(set, &id, (void*)1) < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, -+ _("Failed to reserve %s %o"), -+ name, id); -+ return -1; -+ } -+ -+ return 0; -+} -+ -+ -+static int -+virDomainZPCIAddressReserveUid(virHashTablePtr set, -+ virZPCIDeviceAddressPtr addr) -+{ -+ return virDomainZPCIAddressReserveId(set, addr->uid, "uid"); -+} -+ -+ -+static int -+virDomainZPCIAddressReserveFid(virHashTablePtr set, -+ virZPCIDeviceAddressPtr addr) -+{ -+ return virDomainZPCIAddressReserveId(set, addr->fid, "fid"); -+} -+ -+ -+static int -+virDomainZPCIAddressAssignId(virHashTablePtr set, -+ unsigned int *id, -+ unsigned int min, -+ unsigned int max, -+ const char *name) -+{ -+ while (virHashLookup(set, &min)) { -+ if (min == max) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, -+ _("There is no more free %s."), -+ name); -+ return -1; -+ } -+ ++min; -+ } -+ *id = min; -+ -+ return 0; -+} -+ -+ -+static int -+virDomainZPCIAddressAssignUid(virHashTablePtr set, -+ virZPCIDeviceAddressPtr addr) -+{ -+ return virDomainZPCIAddressAssignId(set, &addr->uid, 1, -+ VIR_DOMAIN_DEVICE_ZPCI_MAX_UID, "uid"); -+} -+ -+ -+static int -+virDomainZPCIAddressAssignFid(virHashTablePtr set, -+ virZPCIDeviceAddressPtr addr) -+{ -+ return virDomainZPCIAddressAssignId(set, &addr->fid, 0, -+ VIR_DOMAIN_DEVICE_ZPCI_MAX_FID, "fid"); -+} -+ -+ -+static void -+virDomainZPCIAddressReleaseId(virHashTablePtr set, -+ unsigned int *id, -+ const char *name) -+{ -+ if (virHashRemoveEntry(set, id) < 0) { -+ virReportError(VIR_ERR_INTERNAL_ERROR, -+ _("Release %s %o failed"), -+ name, *id); -+ } -+ -+ *id = 0; -+} -+ -+ -+static void -+virDomainZPCIAddressReleaseUid(virHashTablePtr set, -+ virZPCIDeviceAddressPtr addr) -+{ -+ virDomainZPCIAddressReleaseId(set, &addr->uid, "uid"); -+} -+ -+ -+static void -+virDomainZPCIAddressReleaseFid(virHashTablePtr set, -+ virZPCIDeviceAddressPtr addr) -+{ -+ virDomainZPCIAddressReleaseId(set, &addr->fid, "fid"); -+} -+ -+ -+static void -+virDomainZPCIAddressReleaseIds(virDomainZPCIAddressIdsPtr zpciIds, -+ virZPCIDeviceAddressPtr addr) -+{ -+ if (!zpciIds || virZPCIDeviceAddressIsEmpty(addr)) -+ return; -+ -+ virDomainZPCIAddressReleaseUid(zpciIds->uids, addr); -+ -+ virDomainZPCIAddressReleaseFid(zpciIds->fids, addr); -+} -+ -+ -+static int -+virDomainZPCIAddressReserveNextUid(virHashTablePtr uids, -+ virZPCIDeviceAddressPtr zpci) -+{ -+ if (virDomainZPCIAddressAssignUid(uids, zpci) < 0) -+ return -1; -+ -+ if (virDomainZPCIAddressReserveUid(uids, zpci) < 0) -+ return -1; -+ -+ return 0; -+} -+ -+ -+static int -+virDomainZPCIAddressReserveNextFid(virHashTablePtr fids, -+ virZPCIDeviceAddressPtr zpci) -+{ -+ if (virDomainZPCIAddressAssignFid(fids, zpci) < 0) -+ return -1; -+ -+ if (virDomainZPCIAddressReserveFid(fids, zpci) < 0) -+ return -1; -+ -+ return 0; -+} -+ -+ -+static int -+virDomainZPCIAddressReserveAddr(virDomainZPCIAddressIdsPtr zpciIds, -+ virZPCIDeviceAddressPtr addr) -+{ -+ if (virDomainZPCIAddressReserveUid(zpciIds->uids, addr) < 0) -+ return -1; -+ -+ if (virDomainZPCIAddressReserveFid(zpciIds->fids, addr) < 0) { -+ virDomainZPCIAddressReleaseUid(zpciIds->uids, addr); -+ return -1; -+ } -+ -+ return 0; -+} -+ -+ -+static int -+virDomainZPCIAddressReserveNextAddr(virDomainZPCIAddressIdsPtr zpciIds, -+ virZPCIDeviceAddressPtr addr) -+{ -+ if (virDomainZPCIAddressReserveNextUid(zpciIds->uids, addr) < 0) -+ return -1; -+ -+ if (virDomainZPCIAddressReserveNextFid(zpciIds->fids, addr) < 0) { -+ virDomainZPCIAddressReleaseUid(zpciIds->uids, addr); -+ return -1; -+ } -+ -+ return 0; -+} -+ -+ -+int -+virDomainPCIAddressExtensionReserveAddr(virDomainPCIAddressSetPtr addrs, -+ virPCIDeviceAddressPtr addr) -+{ -+ if (addr->extFlags & VIR_PCI_ADDRESS_EXTENSION_ZPCI) { -+ /* Reserve uid/fid to ZPCI device which has defined uid/fid -+ * in the domain. -+ */ -+ return virDomainZPCIAddressReserveAddr(addrs->zpciIds, &addr->zpci); -+ } -+ -+ return 0; -+} -+ -+ -+int -+virDomainPCIAddressExtensionReserveNextAddr(virDomainPCIAddressSetPtr addrs, -+ virPCIDeviceAddressPtr addr) -+{ -+ if (addr->extFlags & VIR_PCI_ADDRESS_EXTENSION_ZPCI) { -+ virZPCIDeviceAddress zpci = { 0 }; -+ -+ if (virDomainZPCIAddressReserveNextAddr(addrs->zpciIds, &zpci) < 0) -+ return -1; -+ -+ if (!addrs->dryRun) -+ addr->zpci = zpci; -+ } -+ -+ return 0; -+} -+ -+static int -+virDomainPCIAddressExtensionEnsureAddr(virDomainPCIAddressSetPtr addrs, -+ virPCIDeviceAddressPtr addr) -+{ -+ if (addr->extFlags & VIR_PCI_ADDRESS_EXTENSION_ZPCI) { -+ virZPCIDeviceAddressPtr zpci = &addr->zpci; -+ -+ if (virZPCIDeviceAddressIsEmpty(zpci)) -+ return virDomainZPCIAddressReserveNextAddr(addrs->zpciIds, zpci); -+ else -+ return virDomainZPCIAddressReserveAddr(addrs->zpciIds, zpci); -+ } -+ -+ return 0; -+} -+ -+ - virDomainPCIConnectFlags - virDomainPCIControllerModelToConnectType(virDomainControllerModelPCI model) - { -@@ -729,12 +961,24 @@ virDomainPCIAddressEnsureAddr(virDomainPCIAddressSetPtr addrs, - ret = virDomainPCIAddressReserveNextAddr(addrs, dev, flags, -1); - } - -+ dev->addr.pci.extFlags = dev->pciAddrExtFlags; -+ ret = virDomainPCIAddressExtensionEnsureAddr(addrs, &dev->addr.pci); -+ - cleanup: - VIR_FREE(addrStr); - return ret; - } - - -+void -+virDomainPCIAddressExtensionReleaseAddr(virDomainPCIAddressSetPtr addrs, -+ virPCIDeviceAddressPtr addr) -+{ -+ if (addr->extFlags & VIR_PCI_ADDRESS_EXTENSION_ZPCI) -+ virDomainZPCIAddressReleaseIds(addrs->zpciIds, &addr->zpci); -+} -+ -+ - void - virDomainPCIAddressReleaseAddr(virDomainPCIAddressSetPtr addrs, - virPCIDeviceAddressPtr addr) -diff --git a/src/conf/domain_addr.h b/src/conf/domain_addr.h -index b01e6b9d20..e5ce4868d5 100644 ---- a/src/conf/domain_addr.h -+++ b/src/conf/domain_addr.h -@@ -166,6 +166,14 @@ bool virDomainPCIAddressSlotInUse(virDomainPCIAddressSetPtr addrs, - virPCIDeviceAddressPtr addr) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); - -+int virDomainPCIAddressExtensionReserveAddr(virDomainPCIAddressSetPtr addrs, -+ virPCIDeviceAddressPtr addr) -+ ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -+ -+int virDomainPCIAddressExtensionReserveNextAddr(virDomainPCIAddressSetPtr addrs, -+ virPCIDeviceAddressPtr addr) -+ ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -+ - int virDomainPCIAddressReserveAddr(virDomainPCIAddressSetPtr addrs, - virPCIDeviceAddressPtr addr, - virDomainPCIConnectFlags flags, -@@ -187,6 +195,10 @@ void virDomainPCIAddressReleaseAddr(virDomainPCIAddressSetPtr addrs, - virPCIDeviceAddressPtr addr) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); - -+void virDomainPCIAddressExtensionReleaseAddr(virDomainPCIAddressSetPtr addrs, -+ virPCIDeviceAddressPtr addr) -+ ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); -+ - void virDomainPCIAddressSetAllMulti(virDomainDefPtr def) - ATTRIBUTE_NONNULL(1); - -diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms -index b2a2a1f265..ee7625b0f3 100644 ---- a/src/libvirt_private.syms -+++ b/src/libvirt_private.syms -@@ -93,6 +93,8 @@ virCPUModeTypeToString; - - - # conf/device_conf.h -+virDeviceInfoPCIAddressExtensionIsPresent; -+virDeviceInfoPCIAddressExtensionIsWanted; - virDomainDeviceInfoAddressIsEqual; - virDomainDeviceInfoCopy; - virInterfaceLinkFormat; -@@ -114,6 +116,9 @@ virDomainPCIAddressAsString; - virDomainPCIAddressBusIsFullyReserved; - virDomainPCIAddressBusSetModel; - virDomainPCIAddressEnsureAddr; -+virDomainPCIAddressExtensionReleaseAddr; -+virDomainPCIAddressExtensionReserveAddr; -+virDomainPCIAddressExtensionReserveNextAddr; - virDomainPCIAddressReleaseAddr; - virDomainPCIAddressReserveAddr; - virDomainPCIAddressReserveNextAddr; -diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c -index ba870d56b1..8338241cba 100644 ---- a/src/qemu/qemu_domain_address.c -+++ b/src/qemu/qemu_domain_address.c -@@ -1405,6 +1405,24 @@ qemuDomainPCIAddressReserveNextAddr(virDomainPCIAddressSetPtr addrs, - } - - -+static int -+qemuDomainAssignPCIAddressExtension(virDomainDefPtr def ATTRIBUTE_UNUSED, -+ virDomainDeviceDefPtr device ATTRIBUTE_UNUSED, -+ virDomainDeviceInfoPtr info, -+ void *opaque) -+{ -+ virDomainPCIAddressSetPtr addrs = opaque; -+ virPCIDeviceAddressPtr addr = &info->addr.pci; -+ -+ if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) -+ addr->extFlags = info->pciAddrExtFlags; -+ -+ if (virDeviceInfoPCIAddressExtensionIsWanted(info)) -+ return virDomainPCIAddressExtensionReserveNextAddr(addrs, addr); -+ -+ return 0; -+} -+ - static int - qemuDomainCollectPCIAddress(virDomainDefPtr def ATTRIBUTE_UNUSED, - virDomainDeviceDefPtr device, -@@ -1498,6 +1516,31 @@ qemuDomainCollectPCIAddress(virDomainDefPtr def ATTRIBUTE_UNUSED, - return ret; - } - -+static int -+qemuDomainCollectPCIAddressExtension(virDomainDefPtr def ATTRIBUTE_UNUSED, -+ virDomainDeviceDefPtr device, -+ virDomainDeviceInfoPtr info, -+ void *opaque) -+{ -+ virDomainPCIAddressSetPtr addrs = opaque; -+ virPCIDeviceAddressPtr addr = &info->addr.pci; -+ -+ if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) -+ addr->extFlags = info->pciAddrExtFlags; -+ -+ if (!virDeviceInfoPCIAddressExtensionIsPresent(info) || -+ ((device->type == VIR_DOMAIN_DEVICE_HOSTDEV) && -+ (device->data.hostdev->parent.type != VIR_DOMAIN_DEVICE_NONE))) { -+ /* If a hostdev has a parent, its info will be a part of the -+ * parent, and will have its address collected during the scan -+ * of the parent's device type. -+ */ -+ return 0; -+ } -+ -+ return virDomainPCIAddressExtensionReserveAddr(addrs, addr); -+} -+ - static virDomainPCIAddressSetPtr - qemuDomainPCIAddressSetCreate(virDomainDefPtr def, - virQEMUCapsPtr qemuCaps, -@@ -1589,6 +1632,12 @@ qemuDomainPCIAddressSetCreate(virDomainDefPtr def, - if (virDomainDeviceInfoIterate(def, qemuDomainCollectPCIAddress, addrs) < 0) - goto error; - -+ if (virDomainDeviceInfoIterate(def, -+ qemuDomainCollectPCIAddressExtension, -+ addrs) < 0) { -+ goto error; -+ } -+ - return addrs; - - error: -@@ -2590,6 +2639,9 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def, - if (qemuDomainAssignDevicePCISlots(def, qemuCaps, addrs) < 0) - goto cleanup; - -+ if (virDomainDeviceInfoIterate(def, qemuDomainAssignPCIAddressExtension, addrs) < 0) -+ goto cleanup; -+ - /* Only for *new* domains with pcie-root (and no other - * manually specified PCI controllers in the definition): If, - * after assigning addresses/reserving slots for all devices, -@@ -2684,6 +2736,9 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def, - if (qemuDomainAssignDevicePCISlots(def, qemuCaps, addrs) < 0) - goto cleanup; - -+ if (virDomainDeviceInfoIterate(def, qemuDomainAssignPCIAddressExtension, addrs) < 0) -+ goto cleanup; -+ - /* set multi attribute for devices at function 0 of - * any slot that has multiple functions in use - */ -@@ -3143,8 +3198,10 @@ qemuDomainReleaseDeviceAddress(virDomainObjPtr vm, - if (!devstr) - devstr = info->alias; - -- if (virDeviceInfoPCIAddressPresent(info)) -+ if (virDeviceInfoPCIAddressPresent(info)) { - virDomainPCIAddressReleaseAddr(priv->pciaddrs, &info->addr.pci); -+ virDomainPCIAddressExtensionReleaseAddr(priv->pciaddrs, &info->addr.pci); -+ } - - if (virDomainUSBAddressRelease(priv->usbaddrs, info) < 0) - VIR_WARN("Unable to release USB address on %s", NULLSTR(devstr)); --- -2.22.0 - diff --git a/SOURCES/libvirt-conf-Don-t-format-http-cookies-unless-VIR_DOMAIN_DEF_FORMAT_SECURE-is-used.patch b/SOURCES/libvirt-conf-Don-t-format-http-cookies-unless-VIR_DOMAIN_DEF_FORMAT_SECURE-is-used.patch new file mode 100644 index 0000000..6c4c17c --- /dev/null +++ b/SOURCES/libvirt-conf-Don-t-format-http-cookies-unless-VIR_DOMAIN_DEF_FORMAT_SECURE-is-used.patch @@ -0,0 +1,58 @@ +From 898e0003ae21e9fbe49995980c8746e9d2ac9b8b Mon Sep 17 00:00:00 2001 +Message-Id: <898e0003ae21e9fbe49995980c8746e9d2ac9b8b@dist-git> +From: Peter Krempa +Date: Tue, 23 Jun 2020 14:23:06 +0200 +Subject: [PATCH] conf: Don't format http cookies unless + VIR_DOMAIN_DEF_FORMAT_SECURE is used + +Starting with 3b076391befc3fe72deb0c244ac6c2b4c100b410 +(v6.1.0-122-g3b076391be) we support http cookies. Since they may contain +somewhat sensitive information we should not format them into the XML +unless VIR_DOMAIN_DEF_FORMAT_SECURE is asserted. + +Reported-by: Han Han +Signed-off-by: Peter Krempa +Reviewed-by: Erik Skultety +(cherry picked from commit a5b064bf4b17a9884d7d361733737fb614ad8979) + +CVE-2020-14301 +Message-Id: <592a0b594666f580e743b6bd2b4ddccbd1e0cc7c.1592914898.git.pkrempa@redhat.com> + +Reviewed-by: Jiri Denemark +--- + src/conf/domain_conf.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index ed9ca0e9d8..60962ee7c1 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -24377,11 +24377,15 @@ virDomainSourceDefFormatSeclabel(virBufferPtr buf, + + static void + virDomainDiskSourceFormatNetworkCookies(virBufferPtr buf, +- virStorageSourcePtr src) ++ virStorageSourcePtr src, ++ unsigned int flags) + { + g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf); + size_t i; + ++ if (!(flags & VIR_DOMAIN_DEF_FORMAT_SECURE)) ++ return; ++ + for (i = 0; i < src->ncookies; i++) { + virBufferEscapeString(&childBuf, "", src->cookies[i]->name); + virBufferEscapeString(&childBuf, "%s\n", src->cookies[i]->value); +@@ -24442,7 +24446,7 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf, + virTristateBoolTypeToString(src->sslverify)); + } + +- virDomainDiskSourceFormatNetworkCookies(childBuf, src); ++ virDomainDiskSourceFormatNetworkCookies(childBuf, src, flags); + + if (src->readahead) + virBufferAsprintf(childBuf, "\n", src->readahead); +-- +2.27.0 + diff --git a/SOURCES/libvirt-conf-Don-t-generate-machine-names-with-a-dot.patch b/SOURCES/libvirt-conf-Don-t-generate-machine-names-with-a-dot.patch new file mode 100644 index 0000000..1a24e0b --- /dev/null +++ b/SOURCES/libvirt-conf-Don-t-generate-machine-names-with-a-dot.patch @@ -0,0 +1,97 @@ +From 3ff27fe469c36e5655231f6759150350b17de298 Mon Sep 17 00:00:00 2001 +Message-Id: <3ff27fe469c36e5655231f6759150350b17de298@dist-git> +From: Michal Privoznik +Date: Fri, 13 Mar 2020 13:08:09 +0100 +Subject: [PATCH] conf: Don't generate machine names with a dot +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +According to the linked BZ, machined expects either valid +hostname or valid FQDN (see systemd commit +v239-3092-gd65652f1f2). While in case of multiple dots, a +trailing one doesn't violate FQDN, it does violate the rule in +case of something simple, like "domain.". But it's safe to remove +it in both cases. + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1808499 +Fixes: 45464db8ba502764cf37ec9335770248bdb3d9a8 + +Signed-off-by: Michal Privoznik +Reviewed-by: Ján Tomko +(cherry picked from commit 2695191a44eb7375225b4ad073825ed3563a172a) +Signed-off-by: Michal Privoznik +Message-Id: <355e05e31ec98522fa0e03a0c2c7af8ca097070d.1584101247.git.mprivozn@redhat.com> +Reviewed-by: Ján Tomko +--- + src/conf/domain_conf.c | 14 +++++++------- + tests/virsystemdtest.c | 5 +++-- + 2 files changed, 10 insertions(+), 9 deletions(-) + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index 4b297c96bc..b3c4084c38 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -30688,20 +30688,20 @@ static void + virDomainMachineNameAppendValid(virBufferPtr buf, + const char *name) + { +- bool skip_dot = false; ++ bool skip = true; + + for (; *name; name++) { + if (strlen(virBufferCurrentContent(buf)) >= 64) + break; + +- if (*name == '.') { +- if (!skip_dot) ++ if (*name == '.' || *name == '-') { ++ if (!skip) + virBufferAddChar(buf, *name); +- skip_dot = true; ++ skip = true; + continue; + } + +- skip_dot = false; ++ skip = false; + + if (!strchr(HOSTNAME_CHARS, *name)) + continue; +@@ -30709,8 +30709,8 @@ virDomainMachineNameAppendValid(virBufferPtr buf, + virBufferAddChar(buf, *name); + } + +- /* trailing dashes are not allowed */ +- virBufferTrimChars(buf, "-"); ++ /* trailing dashes or dots are not allowed */ ++ virBufferTrimChars(buf, "-."); + } + + #undef HOSTNAME_CHARS +diff --git a/tests/virsystemdtest.c b/tests/virsystemdtest.c +index 26876850b8..eb510b40e4 100644 +--- a/tests/virsystemdtest.c ++++ b/tests/virsystemdtest.c +@@ -733,7 +733,7 @@ mymain(void) + TEST_MACHINE("demo", 1, "qemu-1-demo"); + TEST_MACHINE("demo-name", 2, "qemu-2-demo-name"); + TEST_MACHINE("demo!name", 3, "qemu-3-demoname"); +- TEST_MACHINE(".demo", 4, "qemu-4-.demo"); ++ TEST_MACHINE(".demo", 4, "qemu-4-demo"); + TEST_MACHINE("bull\U0001f4a9", 5, "qemu-5-bull"); + TEST_MACHINE("demo..name", 6, "qemu-6-demo.name"); + TEST_MACHINE("12345678901234567890123456789012345678901234567890123456789", 7, +@@ -743,7 +743,8 @@ mymain(void) + TEST_MACHINE("kstest-network-device-default-httpks_(c9eed63e-981e-48ec-acdc-56b3f8c5f678)", 100, + "qemu-100-kstest-network-device-default-httpksc9eed63e-981e-48ec"); + TEST_MACHINE("kstest-network-device-default-httpks_(c9eed63e-981e-48ec--cdc-56b3f8c5f678)", 10, +- "qemu-10-kstest-network-device-default-httpksc9eed63e-981e-48ec"); ++ "qemu-10-kstest-network-device-default-httpksc9eed63e-981e-48ec-c"); ++ TEST_MACHINE("demo.-.test.", 11, "qemu-11-demo.test"); + + # define TESTS_PM_SUPPORT_HELPER(name, function) \ + do { \ +-- +2.25.1 + diff --git a/SOURCES/libvirt-conf-Expose-virDomainSCSIDriveAddressIsUsed.patch b/SOURCES/libvirt-conf-Expose-virDomainSCSIDriveAddressIsUsed.patch deleted file mode 100644 index 9d79b6a..0000000 --- a/SOURCES/libvirt-conf-Expose-virDomainSCSIDriveAddressIsUsed.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 2e3774564235a185a2cc4b7a22c17de17498db68 Mon Sep 17 00:00:00 2001 -Message-Id: <2e3774564235a185a2cc4b7a22c17de17498db68@dist-git> -From: Michal Privoznik -Date: Thu, 18 Apr 2019 19:36:31 +0200 -Subject: [PATCH] conf: Expose virDomainSCSIDriveAddressIsUsed - -RHEl-7.7: https://bugzilla.redhat.com/show_bug.cgi?id=1692296 -RHEL-8.1.0: https://bugzilla.redhat.com/show_bug.cgi?id=1692354 - -This function checks if given drive address is already present in -passed domain definition. Expose the function as it will be used -shortly. - -Signed-off-by: Michal Privoznik -Tested-by: Daniel Henrique Barboza -Reviewed-by: Jim Fehlig -(cherry picked from commit 89237d534f0fe950d06a2081089154160c6c2224) -Signed-off-by: Michal Privoznik -Message-Id: -Reviewed-by: Jiri Denemark ---- - src/conf/domain_conf.c | 2 +- - src/conf/domain_conf.h | 4 ++++ - src/libvirt_private.syms | 1 + - 3 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c -index d431441f62..e62f78471c 100644 ---- a/src/conf/domain_conf.c -+++ b/src/conf/domain_conf.c -@@ -4404,7 +4404,7 @@ virDomainDriveAddressIsUsedByHostdev(const virDomainDef *def, - * Return true if the SCSI drive address is already in use, false - * otherwise. - */ --static bool -+bool - virDomainSCSIDriveAddressIsUsed(const virDomainDef *def, - const virDomainDeviceDriveAddress *addr) - { -diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h -index f05fca284f..dbccf2cf24 100644 ---- a/src/conf/domain_conf.h -+++ b/src/conf/domain_conf.h -@@ -2789,6 +2789,10 @@ virDomainXMLNamespacePtr - virDomainXMLOptionGetNamespace(virDomainXMLOptionPtr xmlopt) - ATTRIBUTE_NONNULL(1); - -+bool -+virDomainSCSIDriveAddressIsUsed(const virDomainDef *def, -+ const virDomainDeviceDriveAddress *addr); -+ - int virDomainDefPostParse(virDomainDefPtr def, - virCapsPtr caps, - unsigned int parseFlags, -diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms -index 624151056a..df27ac4b3a 100644 ---- a/src/libvirt_private.syms -+++ b/src/libvirt_private.syms -@@ -520,6 +520,7 @@ virDomainRunningReasonTypeToString; - virDomainSaveConfig; - virDomainSaveStatus; - virDomainSaveXML; -+virDomainSCSIDriveAddressIsUsed; - virDomainSeclabelTypeFromString; - virDomainSeclabelTypeToString; - virDomainShmemDefEquals; --- -2.21.0 - diff --git a/SOURCES/libvirt-conf-Fix-a-error-msg-typo-in-virDomainVideoDefValidate.patch b/SOURCES/libvirt-conf-Fix-a-error-msg-typo-in-virDomainVideoDefValidate.patch deleted file mode 100644 index c848359..0000000 --- a/SOURCES/libvirt-conf-Fix-a-error-msg-typo-in-virDomainVideoDefValidate.patch +++ /dev/null @@ -1,35 +0,0 @@ -From b1c91c78451c59b0ebe3aafa17eef764e69be28c Mon Sep 17 00:00:00 2001 -Message-Id: -From: Han Han -Date: Tue, 31 Jul 2018 10:42:27 +0200 -Subject: [PATCH] conf: Fix a error msg typo in virDomainVideoDefValidate - -https://bugzilla.redhat.com/show_bug.cgi?id=1607825 - -Introduced by commit d48813e8. - -Signed-off-by: Han Han -Reviewed-by: Erik Skultety -(cherry picked from commit d1c4480390da7243e37daee37f8a40cb439a6a7c) -Signed-off-by: Erik Skultety -Reviewed-by: Jiri Denemark ---- - src/conf/domain_conf.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c -index 23288aa01b..a05aad056d 100644 ---- a/src/conf/domain_conf.c -+++ b/src/conf/domain_conf.c -@@ -5697,7 +5697,7 @@ virDomainVideoDefValidate(const virDomainVideoDef *video, - if (def->videos[i]->type == VIR_DOMAIN_VIDEO_TYPE_NONE && - def->nvideos > 1) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", -- _("a '%s' video type must be the only video device " -+ _("a 'none' video type must be the only video device " - "defined for the domain")); - return -1; - } --- -2.18.0 - diff --git a/SOURCES/libvirt-conf-Fix-check-for-chardev-source-path.patch b/SOURCES/libvirt-conf-Fix-check-for-chardev-source-path.patch deleted file mode 100644 index 6aa4fef..0000000 --- a/SOURCES/libvirt-conf-Fix-check-for-chardev-source-path.patch +++ /dev/null @@ -1,113 +0,0 @@ -From 27213f01f9320cf0fec49980f78a100e64025ba4 Mon Sep 17 00:00:00 2001 -Message-Id: <27213f01f9320cf0fec49980f78a100e64025ba4@dist-git> -From: Andrea Bolognani -Date: Fri, 7 Sep 2018 17:53:32 +0200 -Subject: [PATCH] conf: Fix check for chardev source path -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Attempting to use a chardev definition like - - - - - -correctly results in an error being reported, since the source -path - a required piece of information - is missing; however, -the very similar - - - - - -was happily accepted by libvirt, only to result in libvirtd -crashing as soon as the guest was started. - -The issue was caused by checking the chardev's targetType -against whitelisted values from virDomainChrChannelTargetType -without first checking the chardev's deviceType to make sure -it is actually a channel, for which the check makes sense, -rather than a different type of chardev. - -The only reason this wasn't spotted earlier is that the -whitelisted values just so happen to correspond to USB and -PCI serial devices and Xen and UML consoles respectively, -all of which are fairly uncommon. - -https://bugzilla.redhat.com/show_bug.cgi?id=1609720 - -Signed-off-by: Andrea Bolognani -Reviewed-by: Ján Tomko -(cherry picked from commit 614193fac67445a7e92bf620ffef726ed1bd6f07) - -https://bugzilla.redhat.com/show_bug.cgi?id=1609723 - -Signed-off-by: Andrea Bolognani -Reviewed-by: Erik Skultety ---- - src/conf/domain_conf.c | 11 +++++++---- - .../serial-unix-missing-source.xml | 15 +++++++++++++++ - tests/qemuxml2argvtest.c | 1 + - 3 files changed, 23 insertions(+), 4 deletions(-) - create mode 100644 tests/qemuxml2argvdata/serial-unix-missing-source.xml - -diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c -index a881b43b51..240b33f28c 100644 ---- a/src/conf/domain_conf.c -+++ b/src/conf/domain_conf.c -@@ -5523,11 +5523,14 @@ virDomainChrSourceDefValidate(const virDomainChrSourceDef *def, - break; - - case VIR_DOMAIN_CHR_TYPE_UNIX: -- /* path can be auto generated */ -+ /* The source path can be auto generated for certain specific -+ * types of channels, but in most cases we should report an -+ * error if the user didn't provide it */ - if (!def->data.nix.path && -- (!chr_def || -- (chr_def->targetType != VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_XEN && -- chr_def->targetType != VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO))) { -+ !(chr_def && -+ chr_def->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL && -+ (chr_def->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_XEN || -+ chr_def->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Missing source path attribute for char device")); - return -1; -diff --git a/tests/qemuxml2argvdata/serial-unix-missing-source.xml b/tests/qemuxml2argvdata/serial-unix-missing-source.xml -new file mode 100644 -index 0000000000..1e1221f12d ---- /dev/null -+++ b/tests/qemuxml2argvdata/serial-unix-missing-source.xml -@@ -0,0 +1,15 @@ -+ -+ guest -+ c7a5fdbd-edaf-9455-926a-d65c16db1809 -+ 1048576 -+ 1 -+ -+ hvm -+ -+ -+ /usr/bin/qemu-system-aarch64 -+ -+ -+ -+ -+ -diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c -index 608a2b6ce3..ebe9c8a131 100644 ---- a/tests/qemuxml2argvtest.c -+++ b/tests/qemuxml2argvtest.c -@@ -1363,6 +1363,7 @@ mymain(void) - DO_TEST("serial-unix-chardev", - QEMU_CAPS_DEVICE_ISA_SERIAL); - DO_TEST_CAPS_LATEST("serial-unix-chardev"); -+ DO_TEST_PARSE_ERROR("serial-unix-missing-source", NONE); - DO_TEST("serial-tcp-chardev", - QEMU_CAPS_DEVICE_ISA_SERIAL); - DO_TEST("serial-udp-chardev", --- -2.19.1 - diff --git a/SOURCES/libvirt-conf-Implement-support-for-slices-of-disk-source.patch b/SOURCES/libvirt-conf-Implement-support-for-slices-of-disk-source.patch new file mode 100644 index 0000000..3083b2c --- /dev/null +++ b/SOURCES/libvirt-conf-Implement-support-for-slices-of-disk-source.patch @@ -0,0 +1,143 @@ +From 6d5174acd7530d554ac2651f3e6a5da9f69fe6e4 Mon Sep 17 00:00:00 2001 +Message-Id: <6d5174acd7530d554ac2651f3e6a5da9f69fe6e4@dist-git> +From: Peter Krempa +Date: Wed, 19 Feb 2020 15:10:20 +0100 +Subject: [PATCH] conf: Implement support for of disk source +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Implement parsing and formatting of the 'storage' slice. + +Signed-off-by: Peter Krempa +Reviewed-by: Ján Tomko +(cherry picked from commit bbf5d05cfd003e33600009cac7ea98ef1539dd7c) + +https://bugzilla.redhat.com/show_bug.cgi?id=1791788 +Message-Id: +Reviewed-by: Ján Tomko +--- + src/conf/domain_conf.c | 86 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 86 insertions(+) + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index b46b92aecf..5c11f49463 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -9441,6 +9441,57 @@ virDomainStorageSourceParseBase(const char *type, + } + + ++static virStorageSourceSlicePtr ++virDomainStorageSourceParseSlice(xmlNodePtr node, ++ xmlXPathContextPtr ctxt) ++{ ++ VIR_XPATH_NODE_AUTORESTORE(ctxt); ++ g_autofree char *offset = NULL; ++ g_autofree char *size = NULL; ++ g_autofree virStorageSourceSlicePtr ret = g_new0(virStorageSourceSlice, 1); ++ ++ ctxt->node = node; ++ ++ if (!(offset = virXPathString("string(./@offset)", ctxt)) || ++ !(size = virXPathString("string(./@size)", ctxt))) { ++ virReportError(VIR_ERR_XML_ERROR, "%s", ++ _("missing offset or size attribute of slice")); ++ return NULL; ++ } ++ ++ if (virStrToLong_ullp(offset, NULL, 10, &ret->offset) < 0) { ++ virReportError(VIR_ERR_XML_ERROR, ++ _("malformed value '%s' of 'offset' attribute of slice"), ++ offset); ++ return NULL; ++ } ++ ++ if (virStrToLong_ullp(size, NULL, 10, &ret->size) < 0) { ++ virReportError(VIR_ERR_XML_ERROR, ++ _("malformed value '%s' of 'size' attribute of slice"), ++ size); ++ return NULL; ++ } ++ ++ return g_steal_pointer(&ret); ++} ++ ++ ++static int ++virDomainStorageSourceParseSlices(virStorageSourcePtr src, ++ xmlXPathContextPtr ctxt) ++{ ++ xmlNodePtr node; ++ ++ if ((node = virXPathNode("./slices/slice[@type='storage']", ctxt))) { ++ if (!(src->sliceStorage = virDomainStorageSourceParseSlice(node, ctxt))) ++ return -1; ++ } ++ ++ return 0; ++} ++ ++ + /** + * virDomainStorageSourceParse: + * @node: XML node pointing to the source element to parse +@@ -9506,6 +9557,9 @@ virDomainStorageSourceParse(xmlNodePtr node, + if (virDomainDiskSourcePRParse(node, ctxt, &src->pr) < 0) + return -1; + ++ if (virDomainStorageSourceParseSlices(src, ctxt) < 0) ++ return -1; ++ + if (virSecurityDeviceLabelDefParseXML(&src->seclabels, &src->nseclabels, + ctxt, flags) < 0) + return -1; +@@ -24226,6 +24280,36 @@ virDomainDiskSourceFormatPrivateData(virBufferPtr buf, + } + + ++static void ++virDomainDiskSourceFormatSlice(virBufferPtr buf, ++ const char *slicetype, ++ virStorageSourceSlicePtr slice) ++{ ++ g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER; ++ ++ if (!slice) ++ return; ++ ++ virBufferAsprintf(&attrBuf, " type='%s'", slicetype); ++ virBufferAsprintf(&attrBuf, " offset='%llu'", slice->offset); ++ virBufferAsprintf(&attrBuf, " size='%llu'", slice->size); ++ ++ virXMLFormatElement(buf, "slice", &attrBuf, NULL); ++} ++ ++ ++static void ++virDomainDiskSourceFormatSlices(virBufferPtr buf, ++ virStorageSourcePtr src) ++{ ++ g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf); ++ ++ virDomainDiskSourceFormatSlice(&childBuf, "storage", src->sliceStorage); ++ ++ virXMLFormatElement(buf, "slices", NULL, &childBuf); ++} ++ ++ + /** + * virDomainDiskSourceFormat: + * @buf: output buffer +@@ -24296,6 +24380,8 @@ virDomainDiskSourceFormat(virBufferPtr buf, + return -1; + } + ++ virDomainDiskSourceFormatSlices(&childBuf, src); ++ + if (src->type != VIR_STORAGE_TYPE_NETWORK) + virDomainSourceDefFormatSeclabel(&childBuf, src->nseclabels, + src->seclabels, flags); +-- +2.25.0 + diff --git a/SOURCES/libvirt-conf-Introduce-VIR_DOMAIN_TIMER_NAME_ARMVTIMER.patch b/SOURCES/libvirt-conf-Introduce-VIR_DOMAIN_TIMER_NAME_ARMVTIMER.patch new file mode 100644 index 0000000..ba2679f --- /dev/null +++ b/SOURCES/libvirt-conf-Introduce-VIR_DOMAIN_TIMER_NAME_ARMVTIMER.patch @@ -0,0 +1,129 @@ +From eb6bdf4798eea9bae5ddca1fdd13fb5ef6e99596 Mon Sep 17 00:00:00 2001 +Message-Id: +From: Andrea Bolognani +Date: Fri, 14 Feb 2020 13:12:35 +0100 +Subject: [PATCH] conf: Introduce VIR_DOMAIN_TIMER_NAME_ARMVTIMER +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This new timer model will be used to control the behavior of the +virtual timer for KVM ARM/virt guests. + +Signed-off-by: Andrea Bolognani +Reviewed-by: Masayoshi Mizuma +Reviewed-by: Ján Tomko +(cherry picked from commit 3809e88a87e5898c9cf3a277cb32e20fca8fb2d0) + +https://bugzilla.redhat.com/show_bug.cgi?id=1762634 + +Signed-off-by: Andrea Bolognani +Message-Id: <20200214121237.623948-5-abologna@redhat.com> +Reviewed-by: Ján Tomko +--- + docs/schemas/domaincommon.rng | 1 + + src/conf/domain_conf.c | 1 + + src/conf/domain_conf.h | 1 + + src/libxl/libxl_conf.c | 1 + + src/libxl/xen_common.c | 1 + + src/qemu/qemu_command.c | 2 ++ + src/qemu/qemu_domain.c | 3 +++ + 7 files changed, 10 insertions(+) + +diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng +index 026e753567..19476a2735 100644 +--- a/docs/schemas/domaincommon.rng ++++ b/docs/schemas/domaincommon.rng +@@ -1239,6 +1239,7 @@ + + hpet + pit ++ armvtimer + + + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index 58f72b3b0f..68d9ce9c4e 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -1062,6 +1062,7 @@ VIR_ENUM_IMPL(virDomainTimerName, + "tsc", + "kvmclock", + "hypervclock", ++ "armvtimer", + ); + + VIR_ENUM_IMPL(virDomainTimerTrack, +diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h +index ee8eb3ddc0..ef2c1b80f7 100644 +--- a/src/conf/domain_conf.h ++++ b/src/conf/domain_conf.h +@@ -1989,6 +1989,7 @@ typedef enum { + VIR_DOMAIN_TIMER_NAME_TSC, + VIR_DOMAIN_TIMER_NAME_KVMCLOCK, + VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK, ++ VIR_DOMAIN_TIMER_NAME_ARMVTIMER, + + VIR_DOMAIN_TIMER_NAME_LAST + } virDomainTimerNameType; +diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c +index 2488bb9d32..ffac890262 100644 +--- a/src/libxl/libxl_conf.c ++++ b/src/libxl/libxl_conf.c +@@ -361,6 +361,7 @@ libxlMakeDomBuildInfo(virDomainDefPtr def, + case VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK: + case VIR_DOMAIN_TIMER_NAME_RTC: + case VIR_DOMAIN_TIMER_NAME_PIT: ++ case VIR_DOMAIN_TIMER_NAME_ARMVTIMER: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unsupported timer type (name) '%s'"), + virDomainTimerNameTypeToString(clock.timers[i]->name)); +diff --git a/src/libxl/xen_common.c b/src/libxl/xen_common.c +index 415549a42c..9a385eba0d 100644 +--- a/src/libxl/xen_common.c ++++ b/src/libxl/xen_common.c +@@ -2182,6 +2182,7 @@ xenFormatCPUFeatures(virConfPtr conf, virDomainDefPtr def) + case VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK: + case VIR_DOMAIN_TIMER_NAME_RTC: + case VIR_DOMAIN_TIMER_NAME_PIT: ++ case VIR_DOMAIN_TIMER_NAME_ARMVTIMER: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unsupported timer type (name) '%s'"), + virDomainTimerNameTypeToString(def->clock.timers[i]->name)); +diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c +index 0ad09baa1d..e1e19e0fcc 100644 +--- a/src/qemu/qemu_command.c ++++ b/src/qemu/qemu_command.c +@@ -6200,6 +6200,7 @@ qemuBuildClockCommandLine(virCommandPtr cmd, + case VIR_DOMAIN_TIMER_NAME_TSC: + case VIR_DOMAIN_TIMER_NAME_KVMCLOCK: + case VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK: ++ case VIR_DOMAIN_TIMER_NAME_ARMVTIMER: + /* Timers above are handled when building -cpu. */ + case VIR_DOMAIN_TIMER_NAME_LAST: + break; +@@ -6631,6 +6632,7 @@ qemuBuildCpuCommandLine(virCommandPtr cmd, + if (timer->frequency > 0) + virBufferAsprintf(&buf, ",tsc-frequency=%lu", timer->frequency); + break; ++ case VIR_DOMAIN_TIMER_NAME_ARMVTIMER: + case VIR_DOMAIN_TIMER_NAME_PLATFORM: + case VIR_DOMAIN_TIMER_NAME_PIT: + case VIR_DOMAIN_TIMER_NAME_RTC: +diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c +index 846d1ecb29..4de4f9da53 100644 +--- a/src/qemu/qemu_domain.c ++++ b/src/qemu/qemu_domain.c +@@ -5504,6 +5504,9 @@ qemuDomainDefValidateClockTimers(const virDomainDef *def, + return -1; + } + break; ++ ++ case VIR_DOMAIN_TIMER_NAME_ARMVTIMER: ++ break; + } + } + +-- +2.25.0 + diff --git a/SOURCES/libvirt-conf-Introduce-address-caching-for-PCI-extensions.patch b/SOURCES/libvirt-conf-Introduce-address-caching-for-PCI-extensions.patch deleted file mode 100644 index a186a21..0000000 --- a/SOURCES/libvirt-conf-Introduce-address-caching-for-PCI-extensions.patch +++ /dev/null @@ -1,241 +0,0 @@ -From 7888472ef1d57d992995a16dc7c9ba0fe18562a8 Mon Sep 17 00:00:00 2001 -Message-Id: <7888472ef1d57d992995a16dc7c9ba0fe18562a8@dist-git> -From: Yi Min Zhao -Date: Mon, 8 Apr 2019 10:57:22 +0200 -Subject: [PATCH] conf: Introduce address caching for PCI extensions -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch provides a caching mechanism for the device address -extensions uid and fid on S390. For efficient sparse address allocation, -we introduce two hash tables for uid/fid which hold the address set -information per domain. Also in order to improve performance of -searching available value, we introduce our own callbacks for the two -hashtables. In this way, uid/fid is saved in hash key and hash value -could be any non-NULL pointer due to no operation on hash value. That is -also the reason why we don't introduce hash value free callback. - -Signed-off-by: Yi Min Zhao -Reviewed-by: Boris Fiuczynski -Reviewed-by: Bjoern Walk -Reviewed-by: Ján Tomko -Reviewed-by: Andrea Bolognani - -(cherry picked from commit 28831e1f1ec001882e907f03f7618f7c00ebc98d) - -https://bugzilla.redhat.com/show_bug.cgi?id=1508149 - -Conflicts: - - * src/conf/domain_addr.h - + context - - missing b72183223f3b - -Signed-off-by: Andrea Bolognani -Message-Id: <20190408085732.28684-6-abologna@redhat.com> -Reviewed-by: Laine Stump -Reviewed-by: Ján Tomko ---- - src/bhyve/bhyve_device.c | 3 +- - src/conf/domain_addr.c | 93 +++++++++++++++++++++++++++++++++- - src/conf/domain_addr.h | 10 +++- - src/qemu/qemu_domain_address.c | 6 ++- - 4 files changed, 108 insertions(+), 4 deletions(-) - -diff --git a/src/bhyve/bhyve_device.c b/src/bhyve/bhyve_device.c -index 03aa6c93bd..8f0862b0b6 100644 ---- a/src/bhyve/bhyve_device.c -+++ b/src/bhyve/bhyve_device.c -@@ -71,7 +71,8 @@ bhyveDomainPCIAddressSetCreate(virDomainDefPtr def, unsigned int nbuses) - { - virDomainPCIAddressSetPtr addrs; - -- if ((addrs = virDomainPCIAddressSetAlloc(nbuses)) == NULL) -+ if ((addrs = virDomainPCIAddressSetAlloc(nbuses, -+ VIR_PCI_ADDRESS_EXTENSION_NONE)) == NULL) - return NULL; - - if (virDomainPCIAddressBusSetModel(&addrs->buses[0], -diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c -index 39f22b82eb..3e33549c3d 100644 ---- a/src/conf/domain_addr.c -+++ b/src/conf/domain_addr.c -@@ -27,6 +27,7 @@ - #include "virlog.h" - #include "virstring.h" - #include "domain_addr.h" -+#include "virhashcode.h" - - #define VIR_FROM_THIS VIR_FROM_DOMAIN - -@@ -741,8 +742,93 @@ virDomainPCIAddressReleaseAddr(virDomainPCIAddressSetPtr addrs, - addrs->buses[addr->bus].slot[addr->slot].functions &= ~(1 << addr->function); - } - -+ -+static uint32_t -+virZPCIAddrKeyCode(const void *name, -+ uint32_t seed) -+{ -+ unsigned int value = *((unsigned int *)name); -+ return virHashCodeGen(&value, sizeof(value), seed); -+} -+ -+ -+static bool -+virZPCIAddrKeyEqual(const void *namea, -+ const void *nameb) -+{ -+ return *((unsigned int *)namea) == *((unsigned int *)nameb); -+} -+ -+ -+static void * -+virZPCIAddrKeyCopy(const void *name) -+{ -+ unsigned int *copy; -+ -+ if (VIR_ALLOC(copy) < 0) -+ return NULL; -+ -+ *copy = *((unsigned int *)name); -+ return (void *)copy; -+} -+ -+ -+static void -+virZPCIAddrKeyFree(void *name) -+{ -+ VIR_FREE(name); -+} -+ -+ -+static void -+virDomainPCIAddressSetExtensionFree(virDomainPCIAddressSetPtr addrs) -+{ -+ if (!addrs || !addrs->zpciIds) -+ return; -+ -+ virHashFree(addrs->zpciIds->uids); -+ virHashFree(addrs->zpciIds->fids); -+ VIR_FREE(addrs->zpciIds); -+} -+ -+ -+static int -+virDomainPCIAddressSetExtensionAlloc(virDomainPCIAddressSetPtr addrs, -+ virPCIDeviceAddressExtensionFlags extFlags) -+{ -+ if (extFlags & VIR_PCI_ADDRESS_EXTENSION_ZPCI) { -+ if (addrs->zpciIds) -+ return 0; -+ -+ if (VIR_ALLOC(addrs->zpciIds) < 0) -+ return -1; -+ -+ if (!(addrs->zpciIds->uids = virHashCreateFull(10, NULL, -+ virZPCIAddrKeyCode, -+ virZPCIAddrKeyEqual, -+ virZPCIAddrKeyCopy, -+ virZPCIAddrKeyFree))) -+ goto error; -+ -+ if (!(addrs->zpciIds->fids = virHashCreateFull(10, NULL, -+ virZPCIAddrKeyCode, -+ virZPCIAddrKeyEqual, -+ virZPCIAddrKeyCopy, -+ virZPCIAddrKeyFree))) -+ goto error; -+ } -+ -+ return 0; -+ -+ error: -+ virDomainPCIAddressSetExtensionFree(addrs); -+ return -1; -+} -+ -+ - virDomainPCIAddressSetPtr --virDomainPCIAddressSetAlloc(unsigned int nbuses) -+virDomainPCIAddressSetAlloc(unsigned int nbuses, -+ virPCIDeviceAddressExtensionFlags extFlags) - { - virDomainPCIAddressSetPtr addrs; - -@@ -753,6 +839,10 @@ virDomainPCIAddressSetAlloc(unsigned int nbuses) - goto error; - - addrs->nbuses = nbuses; -+ -+ if (virDomainPCIAddressSetExtensionAlloc(addrs, extFlags) < 0) -+ goto error; -+ - return addrs; - - error: -@@ -767,6 +857,7 @@ virDomainPCIAddressSetFree(virDomainPCIAddressSetPtr addrs) - if (!addrs) - return; - -+ virDomainPCIAddressSetExtensionFree(addrs); - VIR_FREE(addrs->buses); - VIR_FREE(addrs); - } -diff --git a/src/conf/domain_addr.h b/src/conf/domain_addr.h -index fd06008e26..b01e6b9d20 100644 ---- a/src/conf/domain_addr.h -+++ b/src/conf/domain_addr.h -@@ -116,6 +116,12 @@ typedef struct { - } virDomainPCIAddressBus; - typedef virDomainPCIAddressBus *virDomainPCIAddressBusPtr; - -+typedef struct { -+ virHashTablePtr uids; -+ virHashTablePtr fids; -+} virDomainZPCIAddressIds; -+typedef virDomainZPCIAddressIds *virDomainZPCIAddressIdsPtr; -+ - struct _virDomainPCIAddressSet { - virDomainPCIAddressBus *buses; - size_t nbuses; -@@ -125,6 +131,7 @@ struct _virDomainPCIAddressSet { - bool areMultipleRootsSupported; - /* If true, the guest can use the pcie-to-pci-bridge controller */ - bool isPCIeToPCIBridgeSupported; -+ virDomainZPCIAddressIdsPtr zpciIds; - }; - typedef struct _virDomainPCIAddressSet virDomainPCIAddressSet; - typedef virDomainPCIAddressSet *virDomainPCIAddressSetPtr; -@@ -132,7 +139,8 @@ typedef virDomainPCIAddressSet *virDomainPCIAddressSetPtr; - char *virDomainPCIAddressAsString(virPCIDeviceAddressPtr addr) - ATTRIBUTE_NONNULL(1); - --virDomainPCIAddressSetPtr virDomainPCIAddressSetAlloc(unsigned int nbuses); -+virDomainPCIAddressSetPtr virDomainPCIAddressSetAlloc(unsigned int nbuses, -+ virPCIDeviceAddressExtensionFlags extFlags); - - void virDomainPCIAddressSetFree(virDomainPCIAddressSetPtr addrs); - -diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c -index 3d01d14b46..ba870d56b1 100644 ---- a/src/qemu/qemu_domain_address.c -+++ b/src/qemu/qemu_domain_address.c -@@ -1508,8 +1508,12 @@ qemuDomainPCIAddressSetCreate(virDomainDefPtr def, - size_t i; - bool hasPCIeRoot = false; - virDomainControllerModelPCI defaultModel; -+ virPCIDeviceAddressExtensionFlags extFlags = VIR_PCI_ADDRESS_EXTENSION_NONE; - -- if ((addrs = virDomainPCIAddressSetAlloc(nbuses)) == NULL) -+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_ZPCI)) -+ extFlags |= VIR_PCI_ADDRESS_EXTENSION_ZPCI; -+ -+ if ((addrs = virDomainPCIAddressSetAlloc(nbuses, extFlags)) == NULL) - return NULL; - - addrs->dryRun = dryRun; --- -2.22.0 - diff --git a/SOURCES/libvirt-conf-Introduce-extension-flag-and-zPCI-member-for-PCI-address.patch b/SOURCES/libvirt-conf-Introduce-extension-flag-and-zPCI-member-for-PCI-address.patch deleted file mode 100644 index 3093f57..0000000 --- a/SOURCES/libvirt-conf-Introduce-extension-flag-and-zPCI-member-for-PCI-address.patch +++ /dev/null @@ -1,283 +0,0 @@ -From 050eb598af9291f385998cb1127d5bdf83305501 Mon Sep 17 00:00:00 2001 -Message-Id: <050eb598af9291f385998cb1127d5bdf83305501@dist-git> -From: Yi Min Zhao -Date: Mon, 8 Apr 2019 10:57:21 +0200 -Subject: [PATCH] conf: Introduce extension flag and zPCI member for PCI - address -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch introduces PCI address extension flag for virDomainDeviceInfo -and virPCIDeviceAddress. The extension flag in virDomainDeviceInfo is -used internally during calculating PCI extension flag. The one in -virPCIDeviceAddress is the duplicate to indicate extension address is -being used. Currently only zPCI extension address is introduced to deal -with 'uid' and 'fid' on the S390 platform. - -Signed-off-by: Yi Min Zhao -Reviewed-by: Boris Fiuczynski -Reviewed-by: Ján Tomko -Reviewed-by: Andrea Bolognani - -(cherry picked from commit 478e5f90fd4c0c0a8c1b3a8e19b9cae93ed78a4e) - -https://bugzilla.redhat.com/show_bug.cgi?id=1508149 - -Conflicts: - - * src/qemu/qemu_domain_address.c - + context - - missing db98a426a640 - -Signed-off-by: Andrea Bolognani -Message-Id: <20190408085732.28684-5-abologna@redhat.com> -Reviewed-by: Laine Stump -Reviewed-by: Ján Tomko ---- - src/conf/device_conf.h | 4 + - src/conf/domain_addr.h | 5 ++ - src/qemu/qemu_domain_address.c | 140 ++++++++++++++++++++++++++++++++- - src/util/virpci.h | 2 + - 4 files changed, 149 insertions(+), 2 deletions(-) - -diff --git a/src/conf/device_conf.h b/src/conf/device_conf.h -index a31ce9c376..c79066ec02 100644 ---- a/src/conf/device_conf.h -+++ b/src/conf/device_conf.h -@@ -164,6 +164,10 @@ struct _virDomainDeviceInfo { - * assignment, never saved and never reported. - */ - int pciConnectFlags; /* enum virDomainPCIConnectFlags */ -+ /* pciAddrExtFlags is only used internally to calculate PCI -+ * address extension flags during address assignment. -+ */ -+ int pciAddrExtFlags; /* enum virDomainPCIAddressExtensionFlags */ - char *loadparm; - - /* PCI devices will only be automatically placed on a PCI bus -diff --git a/src/conf/domain_addr.h b/src/conf/domain_addr.h -index 3236b7d6de..fd06008e26 100644 ---- a/src/conf/domain_addr.h -+++ b/src/conf/domain_addr.h -@@ -29,6 +29,11 @@ - # define VIR_PCI_ADDRESS_SLOT_LAST 31 - # define VIR_PCI_ADDRESS_FUNCTION_LAST 7 - -+typedef enum { -+ VIR_PCI_ADDRESS_EXTENSION_NONE = 0, /* no extension */ -+ VIR_PCI_ADDRESS_EXTENSION_ZPCI = 1 << 0, /* zPCI support */ -+} virPCIDeviceAddressExtensionFlags; -+ - typedef enum { - VIR_PCI_CONNECT_HOTPLUGGABLE = 1 << 0, /* is hotplug needed/supported */ - -diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c -index 79d2b9f9c4..3d01d14b46 100644 ---- a/src/qemu/qemu_domain_address.c -+++ b/src/qemu/qemu_domain_address.c -@@ -511,6 +511,64 @@ qemuDomainAssignARMVirtioMMIOAddresses(virDomainDefPtr def, - } - - -+static bool -+qemuDomainDeviceSupportZPCI(virDomainDeviceDefPtr device) -+{ -+ switch ((virDomainDeviceType)device->type) { -+ case VIR_DOMAIN_DEVICE_CHR: -+ return false; -+ -+ case VIR_DOMAIN_DEVICE_CONTROLLER: -+ case VIR_DOMAIN_DEVICE_DISK: -+ case VIR_DOMAIN_DEVICE_LEASE: -+ case VIR_DOMAIN_DEVICE_FS: -+ case VIR_DOMAIN_DEVICE_NET: -+ case VIR_DOMAIN_DEVICE_INPUT: -+ case VIR_DOMAIN_DEVICE_SOUND: -+ case VIR_DOMAIN_DEVICE_VIDEO: -+ case VIR_DOMAIN_DEVICE_HOSTDEV: -+ case VIR_DOMAIN_DEVICE_WATCHDOG: -+ case VIR_DOMAIN_DEVICE_GRAPHICS: -+ case VIR_DOMAIN_DEVICE_HUB: -+ case VIR_DOMAIN_DEVICE_REDIRDEV: -+ case VIR_DOMAIN_DEVICE_SMARTCARD: -+ case VIR_DOMAIN_DEVICE_MEMBALLOON: -+ case VIR_DOMAIN_DEVICE_NVRAM: -+ case VIR_DOMAIN_DEVICE_RNG: -+ case VIR_DOMAIN_DEVICE_SHMEM: -+ case VIR_DOMAIN_DEVICE_TPM: -+ case VIR_DOMAIN_DEVICE_PANIC: -+ case VIR_DOMAIN_DEVICE_MEMORY: -+ case VIR_DOMAIN_DEVICE_IOMMU: -+ case VIR_DOMAIN_DEVICE_VSOCK: -+ break; -+ -+ case VIR_DOMAIN_DEVICE_NONE: -+ case VIR_DOMAIN_DEVICE_LAST: -+ default: -+ virReportEnumRangeError(virDomainDeviceType, device->type); -+ return false; -+ } -+ -+ return true; -+} -+ -+ -+static virPCIDeviceAddressExtensionFlags -+qemuDomainDeviceCalculatePCIAddressExtensionFlags(virQEMUCapsPtr qemuCaps, -+ virDomainDeviceDefPtr dev) -+{ -+ virPCIDeviceAddressExtensionFlags extFlags = 0; -+ -+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_ZPCI) && -+ qemuDomainDeviceSupportZPCI(dev)) { -+ extFlags |= VIR_PCI_ADDRESS_EXTENSION_ZPCI; -+ } -+ -+ return extFlags; -+} -+ -+ - /** - * qemuDomainDeviceCalculatePCIConnectFlags: - * -@@ -993,6 +1051,56 @@ qemuDomainFillAllPCIConnectFlags(virDomainDefPtr def, - } - - -+/** -+ * qemuDomainFillDevicePCIExtensionFlagsIter: -+ * -+ * @def: the entire DomainDef -+ * @dev: The device to be checked -+ * @info: virDomainDeviceInfo within the device -+ * @opaque: qemu capabilities -+ * -+ * Sets the pciAddressExtFlags for a single device's info. Has properly -+ * formatted arguments to be called by virDomainDeviceInfoIterate(). -+ * -+ * Always returns 0 - there is no failure. -+ */ -+static int -+qemuDomainFillDevicePCIExtensionFlagsIter(virDomainDefPtr def ATTRIBUTE_UNUSED, -+ virDomainDeviceDefPtr dev, -+ virDomainDeviceInfoPtr info, -+ void *opaque) -+{ -+ virQEMUCapsPtr qemuCaps = opaque; -+ -+ info->pciAddrExtFlags = -+ qemuDomainDeviceCalculatePCIAddressExtensionFlags(qemuCaps, dev); -+ -+ return 0; -+} -+ -+ -+/** -+ * qemuDomainFillAllPCIExtensionFlags: -+ * -+ * @def: the entire DomainDef -+ * @qemuCaps: as you'd expect -+ * -+ * Set the info->pciAddressExtFlags for all devices in the domain. -+ * -+ * Returns 0 on success or -1 on failure (the only possibility of -+ * failure would be some internal problem with -+ * virDomainDeviceInfoIterate()) -+ */ -+static int -+qemuDomainFillAllPCIExtensionFlags(virDomainDefPtr def, -+ virQEMUCapsPtr qemuCaps) -+{ -+ return virDomainDeviceInfoIterate(def, -+ qemuDomainFillDevicePCIExtensionFlagsIter, -+ qemuCaps); -+} -+ -+ - /** - * qemuDomainFindUnusedIsolationGroupIter: - * @def: domain definition -@@ -1267,6 +1375,27 @@ qemuDomainFillDevicePCIConnectFlags(virDomainDefPtr def, - } - - -+/** -+ * qemuDomainFillDevicePCIExtensionFlags: -+ * -+ * @dev: The device to be checked -+ * @info: virDomainDeviceInfo within the device -+ * @qemuCaps: as you'd expect -+ * -+ * Set the info->pciAddressExtFlags for a single device. -+ * -+ * No return value. -+ */ -+static void -+qemuDomainFillDevicePCIExtensionFlags(virDomainDeviceDefPtr dev, -+ virDomainDeviceInfoPtr info, -+ virQEMUCapsPtr qemuCaps) -+{ -+ info->pciAddrExtFlags = -+ qemuDomainDeviceCalculatePCIAddressExtensionFlags(qemuCaps, dev); -+} -+ -+ - static int - qemuDomainPCIAddressReserveNextAddr(virDomainPCIAddressSetPtr addrs, - virDomainDeviceInfoPtr dev) -@@ -2400,6 +2529,9 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def, - if (qemuDomainFillAllPCIConnectFlags(def, qemuCaps, driver) < 0) - goto cleanup; - -+ if (qemuDomainFillAllPCIExtensionFlags(def, qemuCaps) < 0) -+ goto cleanup; -+ - if (qemuDomainSetupIsolationGroups(def) < 0) - goto cleanup; - -@@ -2435,7 +2567,8 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def, - */ - virDomainDeviceInfo info = { - .pciConnectFlags = (VIR_PCI_CONNECT_HOTPLUGGABLE | -- VIR_PCI_CONNECT_TYPE_PCI_DEVICE) -+ VIR_PCI_CONNECT_TYPE_PCI_DEVICE), -+ .pciAddrExtFlags = VIR_PCI_ADDRESS_EXTENSION_NONE - }; - bool buses_reserved = true; - -@@ -2472,7 +2605,8 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def, - qemuDomainHasPCIeRoot(def)) { - virDomainDeviceInfo info = { - .pciConnectFlags = (VIR_PCI_CONNECT_HOTPLUGGABLE | -- VIR_PCI_CONNECT_TYPE_PCIE_DEVICE) -+ VIR_PCI_CONNECT_TYPE_PCIE_DEVICE), -+ .pciAddrExtFlags = VIR_PCI_ADDRESS_EXTENSION_NONE - }; - - /* if there isn't an empty pcie-root-port, this will -@@ -2989,6 +3123,8 @@ qemuDomainEnsurePCIAddress(virDomainObjPtr obj, - - qemuDomainFillDevicePCIConnectFlags(obj->def, dev, priv->qemuCaps, driver); - -+ qemuDomainFillDevicePCIExtensionFlags(dev, info, priv->qemuCaps); -+ - return virDomainPCIAddressEnsureAddr(priv->pciaddrs, info, - info->pciConnectFlags); - } -diff --git a/src/util/virpci.h b/src/util/virpci.h -index 01df652b86..b366d7d9c3 100644 ---- a/src/util/virpci.h -+++ b/src/util/virpci.h -@@ -49,6 +49,8 @@ struct _virPCIDeviceAddress { - unsigned int slot; - unsigned int function; - int multi; /* virTristateSwitch */ -+ int extFlags; /* enum virPCIDeviceAddressExtensionFlags */ -+ virZPCIDeviceAddress zpci; - }; - - typedef enum { --- -2.22.0 - diff --git a/SOURCES/libvirt-conf-Introduce-new-hostdev-attribute-display.patch b/SOURCES/libvirt-conf-Introduce-new-hostdev-attribute-display.patch deleted file mode 100644 index 2dc0045..0000000 --- a/SOURCES/libvirt-conf-Introduce-new-hostdev-attribute-display.patch +++ /dev/null @@ -1,416 +0,0 @@ -From 5ad0f7cc1b2444ee9355229316fb008919d22c71 Mon Sep 17 00:00:00 2001 -Message-Id: <5ad0f7cc1b2444ee9355229316fb008919d22c71@dist-git> -From: Erik Skultety -Date: Thu, 19 Jul 2018 15:04:02 +0200 -Subject: [PATCH] conf: Introduce new attribute 'display' -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -QEMU 2.12 introduced a new type of display for mediated devices using -vfio-pci backend which allows a mediated device to be used as a VGA -compatible device as an alternative to an emulated video device. QEMU -exposes this feature via a vfio device property 'display' with supported -values 'on/off/auto' (libvirt will default to 'off'). - -This patch adds the necessary bits to domain config handling in order to -expose this feature. Since there's no convenient way for libvirt to come -up with usable defaults for the display setting, simply because libvirt -is not able to figure out which of the display implementations - dma-buf -which requires OpenGL support vs vfio regions which doesn't need OpenGL -(works with OpenGL enabled too) - the underlying mdev uses. - -Reviewed-by: Ján Tomko -Signed-off-by: Erik Skultety -(cherry picked from commit d54e45b6edd7623e488a19e30bc4148a21fa8b03) - -https://bugzilla.redhat.com/show_bug.cgi?id=1475770 -Signed-off-by: Erik Skultety -Reviewed-by: Ján Tomko ---- - docs/formatdomain.html.in | 20 +++- - docs/schemas/domaincommon.rng | 5 + - src/conf/domain_conf.c | 19 +++- - src/conf/domain_conf.h | 1 + - src/qemu/qemu_domain.c | 98 ++++++++++++++++++- - .../qemuxml2argvdata/hostdev-mdev-display.xml | 39 ++++++++ - .../hostdev-mdev-display.xml | 47 +++++++++ - tests/qemuxml2xmltest.c | 1 + - 8 files changed, 222 insertions(+), 8 deletions(-) - create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display.xml - create mode 100644 tests/qemuxml2xmloutdata/hostdev-mdev-display.xml - -diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in -index 9dd22554ad..3554c3dc30 100644 ---- a/docs/formatdomain.html.in -+++ b/docs/formatdomain.html.in -@@ -4510,9 +4510,23 @@ - guest. Currently, model='vfio-pci' and - model='vfio-ccw' (Since 4.4.0) - is supported. Refer MDEV to create -- a mediated device on the host. There are also some implications on the -- usage of guest's address type depending on the model -- attribute, see the address element below. -+ a mediated device on the host. -+ Since 4.6.0 (QEMU 2.12) an optional -+ display attribute may be used to enable or disable -+ support for an accelerated remote desktop backed by a mediated -+ device (such as NVIDIA vGPU or Intel GVT-g) as an alternative to -+ emulated video devices. This attribute -+ is limited to model='vfio-pci' only. Supported values -+ are either on or off (default is 'off'). -+ It is required to use a -+ graphical framebuffer in order to -+ use this attribute, currently only supported with VNC, Spice and -+ egl-headless graphics devices. -+

-+ Note: There are also some implications on the usage of guest's -+ address type depending on the model attribute, -+ see the address element below. -+

- - -

-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng -index 157726752c..be8430ab22 100644 ---- a/docs/schemas/domaincommon.rng -+++ b/docs/schemas/domaincommon.rng -@@ -4579,6 +4579,11 @@ - vfio-ccw - - -+ -+ -+ -+ -+ - - - -diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c -index 72086f9e86..830c298158 100644 ---- a/src/conf/domain_conf.c -+++ b/src/conf/domain_conf.c -@@ -7656,6 +7656,7 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node, - char *rawio = NULL; - char *backendStr = NULL; - char *model = NULL; -+ char *display = NULL; - int backend; - int ret = -1; - virDomainHostdevSubsysPCIPtr pcisrc = &def->source.subsys.u.pci; -@@ -7675,6 +7676,7 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node, - sgio = virXMLPropString(node, "sgio"); - rawio = virXMLPropString(node, "rawio"); - model = virXMLPropString(node, "model"); -+ display = virXMLPropString(node, "display"); - - /* @type is passed in from the caller rather than read from the - * xml document, because it is specified in different places for -@@ -7762,6 +7764,15 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node, - model); - goto cleanup; - } -+ -+ if (display && -+ (mdevsrc->display = virTristateSwitchTypeFromString(display)) <= 0) { -+ virReportError(VIR_ERR_XML_ERROR, -+ _("unknown value '%s' for attribute " -+ "'display'"), -+ display); -+ goto cleanup; -+ } - } - - switch (def->source.subsys.type) { -@@ -7815,6 +7826,7 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node, - VIR_FREE(rawio); - VIR_FREE(backendStr); - VIR_FREE(model); -+ VIR_FREE(display); - return ret; - } - -@@ -26568,9 +26580,14 @@ virDomainHostdevDefFormat(virBufferPtr buf, - virTristateBoolTypeToString(scsisrc->rawio)); - } - -- if (def->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) -+ if (def->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) { - virBufferAsprintf(buf, " model='%s'", - virMediatedDeviceModelTypeToString(mdevsrc->model)); -+ if (mdevsrc->display != VIR_TRISTATE_SWITCH_ABSENT) -+ virBufferAsprintf(buf, " display='%s'", -+ virTristateSwitchTypeToString(mdevsrc->display)); -+ } -+ - } - virBufferAddLit(buf, ">\n"); - virBufferAdjustIndent(buf, 2); -diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h -index 3deda1d978..8ca9558ceb 100644 ---- a/src/conf/domain_conf.h -+++ b/src/conf/domain_conf.h -@@ -382,6 +382,7 @@ typedef struct _virDomainHostdevSubsysMediatedDev virDomainHostdevSubsysMediated - typedef virDomainHostdevSubsysMediatedDev *virDomainHostdevSubsysMediatedDevPtr; - struct _virDomainHostdevSubsysMediatedDev { - int model; /* enum virMediatedDeviceModelType */ -+ int display; /* virTristateSwitch */ - char uuidstr[VIR_UUID_STRING_BUFLEN]; /* mediated device's uuid string */ - }; - -diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c -index 9498594857..5337f1ce55 100644 ---- a/src/qemu/qemu_domain.c -+++ b/src/qemu/qemu_domain.c -@@ -4451,9 +4451,48 @@ qemuDomainDeviceDefValidateNetwork(const virDomainNetDef *net) - - - static int --qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev, -- const virDomainDef *def) -+qemuDomainMdevDefValidate(const virDomainHostdevSubsysMediatedDev *mdevsrc, -+ const virDomainDef *def, -+ virQEMUCapsPtr qemuCaps) - { -+ if (mdevsrc->display == VIR_TRISTATE_SWITCH_ABSENT) -+ return 0; -+ -+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VFIO_PCI_DISPLAY)) { -+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", -+ _("display property of device vfio-pci is " -+ "not supported by this version of QEMU")); -+ return -1; -+ } -+ -+ if (mdevsrc->model != VIR_MDEV_MODEL_TYPE_VFIO_PCI) { -+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", -+ _(" attribute 'display' is only supported" -+ " with model='vfio-pci'")); -+ -+ return -1; -+ } -+ -+ if (mdevsrc->display == VIR_TRISTATE_SWITCH_ON) { -+ if (def->ngraphics == 0) { -+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", -+ _("graphics device is needed for attribute value " -+ "'display=on' in ")); -+ return -1; -+ } -+ } -+ -+ return 0; -+} -+ -+ -+static int -+qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev, -+ const virDomainDef *def, -+ virQEMUCapsPtr qemuCaps) -+{ -+ const virDomainHostdevSubsysMediatedDev *mdevsrc; -+ - /* forbid capabilities mode hostdev in this kind of hypervisor */ - if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, -@@ -4463,6 +4502,24 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev, - return -1; - } - -+ if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) { -+ switch ((virDomainHostdevSubsysType) hostdev->source.subsys.type) { -+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: -+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: -+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: -+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: -+ break; -+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: -+ mdevsrc = &hostdev->source.subsys.u.mdev; -+ return qemuDomainMdevDefValidate(mdevsrc, def, qemuCaps); -+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: -+ default: -+ virReportEnumRangeError(virDomainHostdevSubsysType, -+ hostdev->source.subsys.type); -+ return -1; -+ } -+ } -+ - return 0; - } - -@@ -5595,7 +5652,8 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev, - break; - - case VIR_DOMAIN_DEVICE_HOSTDEV: -- ret = qemuDomainDeviceDefValidateHostdev(dev->data.hostdev, def); -+ ret = qemuDomainDeviceDefValidateHostdev(dev->data.hostdev, def, -+ qemuCaps); - break; - - case VIR_DOMAIN_DEVICE_VIDEO: -@@ -6205,6 +6263,35 @@ qemuDomainVsockDefPostParse(virDomainVsockDefPtr vsock) - } - - -+static int -+qemuDomainHostdevDefMdevPostParse(virDomainHostdevSubsysMediatedDevPtr mdevsrc, -+ virQEMUCapsPtr qemuCaps) -+{ -+ /* QEMU 2.12 added support for vfio-pci display type, we default to -+ * 'display=off' to stay safe from future changes */ -+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VFIO_PCI_DISPLAY) && -+ mdevsrc->display == VIR_TRISTATE_SWITCH_ABSENT) -+ mdevsrc->display = VIR_TRISTATE_SWITCH_OFF; -+ -+ return 0; -+} -+ -+ -+static int -+qemuDomainHostdevDefPostParse(virDomainHostdevDefPtr hostdev, -+ virQEMUCapsPtr qemuCaps) -+{ -+ virDomainHostdevSubsysPtr subsys = &hostdev->source.subsys; -+ -+ if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && -+ hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV && -+ qemuDomainHostdevDefMdevPostParse(&subsys->u.mdev, qemuCaps) < 0) -+ return -1; -+ -+ return 0; -+} -+ -+ - static int - qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, - const virDomainDef *def, -@@ -6255,11 +6342,14 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev, - ret = qemuDomainVsockDefPostParse(dev->data.vsock); - break; - -+ case VIR_DOMAIN_DEVICE_HOSTDEV: -+ ret = qemuDomainHostdevDefPostParse(dev->data.hostdev, qemuCaps); -+ break; -+ - case VIR_DOMAIN_DEVICE_LEASE: - case VIR_DOMAIN_DEVICE_FS: - case VIR_DOMAIN_DEVICE_INPUT: - case VIR_DOMAIN_DEVICE_SOUND: -- case VIR_DOMAIN_DEVICE_HOSTDEV: - case VIR_DOMAIN_DEVICE_WATCHDOG: - case VIR_DOMAIN_DEVICE_GRAPHICS: - case VIR_DOMAIN_DEVICE_HUB: -diff --git a/tests/qemuxml2argvdata/hostdev-mdev-display.xml b/tests/qemuxml2argvdata/hostdev-mdev-display.xml -new file mode 100644 -index 0000000000..f37e08e1b9 ---- /dev/null -+++ b/tests/qemuxml2argvdata/hostdev-mdev-display.xml -@@ -0,0 +1,39 @@ -+ -+ QEMUGuest2 -+ c7a5fdbd-edaf-9455-926a-d65c16db1809 -+ 219136 -+ 219136 -+ 1 -+ -+ hvm -+ -+ -+ -+ destroy -+ restart -+ destroy -+ -+ /usr/bin/qemu-system-i686 -+ -+ -+ -+ -+

-+ -+ -+ -+ -+ -+ -+ -+ -+ -+
-+ -+ -+ -+ -+ -+ -diff --git a/tests/qemuxml2xmloutdata/hostdev-mdev-display.xml b/tests/qemuxml2xmloutdata/hostdev-mdev-display.xml -new file mode 100644 -index 0000000000..94c11b1199 ---- /dev/null -+++ b/tests/qemuxml2xmloutdata/hostdev-mdev-display.xml -@@ -0,0 +1,47 @@ -+ -+ QEMUGuest2 -+ c7a5fdbd-edaf-9455-926a-d65c16db1809 -+ 219136 -+ 219136 -+ 1 -+ -+ hvm -+ -+ -+ -+ destroy -+ restart -+ destroy -+ -+ /usr/bin/qemu-system-i686 -+ -+ -+ -+ -+
-+ -+ -+
-+ -+ -+ -+
-+ -+ -+ -+ -+ -+ -+