[libvirt] [PATCH 0/5] Misc migration cleanups
by Jiri Denemark
Jiri Denemark (5):
qemu: Reorder migration status enum
qemu: Rename qemuMonitorMigrationStatus struct
qemu: Create a proper type for migration status enum
qemu: Report more migration statistics
qemu: Refactor qemuMigrationFinish
include/libvirt/libvirt-domain.h | 19 ++
src/qemu/qemu_domain.c | 92 +++++-----
src/qemu/qemu_domain.h | 2 +-
src/qemu/qemu_driver.c | 2 +-
src/qemu/qemu_migration.c | 368 ++++++++++++++++++++-------------------
src/qemu/qemu_monitor.c | 14 +-
src/qemu/qemu_monitor.h | 20 ++-
src/qemu/qemu_monitor_json.c | 96 +++++-----
src/qemu/qemu_monitor_json.h | 4 +-
src/qemu/qemu_monitor_text.c | 40 ++---
src/qemu/qemu_monitor_text.h | 4 +-
src/qemu/qemu_process.c | 2 +-
tests/qemumonitorjsontest.c | 22 +--
tools/virsh-domain.c | 16 ++
14 files changed, 388 insertions(+), 313 deletions(-)
--
2.7.0
8 years, 10 months
[libvirt] [PATCH 0/4] Adjustment to recent cgroup/cpuset changes
by John Ferlan
The problem being resolved by this series was seen as a failure in the
virt-test 'memtune' test which attempts to look at the on disk change
for the cgroup by using the 'memory' controller entry in /proc/$pid/cgroup.
For reasons still not quite 100% crystal clear, without doing the revert
in patch#3 of this series, the /proc/$pid/cgroup file gets updated with
the controller path. On the somewhat older f20 test system, this resulted
in an adjustment to other controllers (memory, devices, and blkio). On
a different test environment (f23), the file wasn't erroneously updated.
Although systemd may ultimately be at fault - it just wasn't obvious
what the failure was - so reverting the patch and making the one change
(in patch #4) that appeared to at least follow the spirit of the
reverted patch with respect to using virCgroupAddTask for the
qemuSetupCgroupForEmulator similar to how qemuSetupCgroupForVcpu
does it for the various vpcu threads.
John Ferlan (4):
cgroup: Fix possible bug as a result of code motion for vcpu cgroup
setup
qemu: Add check for NULL cgroup return from virCgroupNewMachine
Revert "qemu: do not put a task into machine cgroup"
qemu: Put the emulator cgroup pid into the right task file
src/qemu/qemu_cgroup.c | 18 +++++++++++++-----
src/qemu/qemu_process.c | 12 ++++++------
2 files changed, 19 insertions(+), 11 deletions(-)
--
2.5.0
8 years, 10 months
[libvirt] [PATCH 00/10] [rebase] various test fixes and input devices handling
by Pavel Hrdina
This is just a rebase to current HEAD.
Pavel Hrdina (10):
xen: move virDomainDefPostParse to xenParseSxpr
tests: introduce VIR_TEST_REGENERATE_OUTPUT flag
tests.testutils: use VIR_TEST_REGENERATE_OUTPUT for
virTestDifferenceFull
tests.testutils: use virTestDifferenceFull in virtTestCompareToFile
tests: use virtTestDifferenceFull in tests where we have output file
tests: skip regeneration for problematic test
tests: regenerate all outputs using VIR_TEST_REGENERATE_OUTPUT flag
tests.nwfilterebiptablestest: swap actual and expected
device: cleanup input device code
tests: update test XML files to follow input changes
src/Makefile.am | 4 +-
src/conf/domain_conf.c | 77 +-----------
src/libxl/libxl_domain.c | 5 +
src/qemu/qemu_domain.c | 22 ++++
src/xen/xen_driver.c | 5 +
src/xen/xend_internal.c | 7 +-
src/xenapi/xenapi_driver.c | 5 +
src/xenconfig/xen_common.c | 22 ++++
src/xenconfig/xen_common.h | 2 +
src/xenconfig/xen_sxpr.c | 21 ++--
src/xenconfig/xen_sxpr.h | 6 +-
.../disk_snapshot_redefine.xml | 2 +
.../external_vm_redefine.xml | 2 +
tests/domainsnapshotxml2xmlout/full_domain.xml | 2 +
tests/domainsnapshotxml2xmlout/metadata.xml | 2 +
tests/domainsnapshotxml2xmltest.c | 2 +-
tests/interfacexml2xmltest.c | 2 +-
tests/lxcconf2xmltest.c | 2 +-
tests/nodedevxml2xmltest.c | 2 +-
tests/nwfilterebiptablestest.c | 14 +--
tests/qemuargv2xmltest.c | 18 ++-
tests/qemuhotplugtest.c | 11 +-
.../qemuhotplug-hotplug-base+disk-scsi.xml | 2 +
.../qemuhotplug-hotplug-base+disk-usb.xml | 2 +
.../qemuhotplug-hotplug-base+disk-virtio.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-bios-nvram.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-blkdeviotune.xml | 2 +
.../qemuxml2argv-blkiotune-device.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-blkiotune.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-boot-cdrom.xml | 6 +-
.../qemuxml2argvdata/qemuxml2argv-boot-floppy.xml | 6 +-
.../qemuxml2argv-boot-menu-disable.xml | 2 +
.../qemuxml2argv-boot-menu-enable-with-timeout.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-boot-multi.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-boot-network.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-boot-order.xml | 2 +
.../qemuxml2argv-channel-guestfwd.xml | 2 +
.../qemuxml2argv-channel-virtio.xml | 2 +
.../qemuxml2argv-chardev-label.xml | 2 +
.../qemuxml2argv-clock-catchup.xml | 2 +
.../qemuxml2argv-clock-localtime.xml | 6 +-
.../qemuxml2argv-clock-timer-hyperv-rtc.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-clock-utc.xml | 6 +-
.../qemuxml2argv-console-compat.xml | 6 +-
.../qemuxml2argv-console-virtio-many.xml | 2 +
.../qemuxml2argv-cpu-eoi-disabled.xml | 2 +
.../qemuxml2argv-cpu-eoi-enabled.xml | 2 +
.../qemuxml2argv-cpu-host-kvmclock.xml | 2 +
.../qemuxml2argv-cpu-host-model-features.xml | 2 +
.../qemuxml2argv-cpu-host-passthrough-features.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-cpu-kvmclock.xml | 2 +
.../qemuxml2argv-cpu-numa-disjoint.xml | 2 +
.../qemuxml2argv-cpu-numa-memshared.xml | 2 +
...xml2argv-cputune-iothreadsched-zeropriority.xml | 2 +
.../qemuxml2argv-cputune-numatune.xml | 2 +
.../qemuxml2argv-cputune-zero-shares.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-cputune.xml | 2 +
.../qemuxml2argv-disk-active-commit.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-disk-aio.xml | 2 +
.../qemuxml2argv-disk-cdrom-empty.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom.xml | 6 +-
.../qemuxml2argv-disk-copy_on_read.xml | 2 +
.../qemuxml2argv-disk-drive-boot-cdrom.xml | 7 +-
.../qemuxml2argv-disk-drive-boot-disk.xml | 7 +-
.../qemuxml2argv-disk-drive-cache-directsync.xml | 2 +
.../qemuxml2argv-disk-drive-cache-unsafe.xml | 2 +
.../qemuxml2argv-disk-drive-cache-v2-none.xml | 6 +-
.../qemuxml2argv-disk-drive-cache-v2-wb.xml | 2 +
.../qemuxml2argv-disk-drive-cache-v2-wt.xml | 2 +
.../qemuxml2argv-disk-drive-copy-on-read.xml | 2 +
...muxml2argv-disk-drive-error-policy-enospace.xml | 2 +
.../qemuxml2argv-disk-drive-error-policy-stop.xml | 2 +
...rgv-disk-drive-error-policy-wreport-rignore.xml | 2 +
.../qemuxml2argv-disk-drive-fat.xml | 2 +
.../qemuxml2argv-disk-drive-fmt-qcow.xml | 2 +
.../qemuxml2argv-disk-drive-network-gluster.xml | 2 +
.../qemuxml2argv-disk-drive-network-iscsi-auth.xml | 2 +
.../qemuxml2argv-disk-drive-network-iscsi.xml | 2 +
.../qemuxml2argv-disk-drive-network-nbd-export.xml | 2 +
...xml2argv-disk-drive-network-nbd-ipv6-export.xml | 2 +
.../qemuxml2argv-disk-drive-network-nbd-ipv6.xml | 2 +
.../qemuxml2argv-disk-drive-network-nbd-unix.xml | 2 +
.../qemuxml2argv-disk-drive-network-nbd.xml | 2 +
.../qemuxml2argv-disk-drive-network-rbd-auth.xml | 2 +
...emuxml2argv-disk-drive-network-rbd-ceph-env.xml | 2 +
.../qemuxml2argv-disk-drive-network-rbd-ipv6.xml | 2 +
.../qemuxml2argv-disk-drive-network-rbd.xml | 2 +
.../qemuxml2argv-disk-drive-network-sheepdog.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-disk-floppy.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-disk-many.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-disk-mirror.xml | 2 +
.../qemuxml2argv-disk-scsi-device.xml | 2 +
.../qemuxml2argv-disk-scsi-disk-vpd.xml | 2 +
...qemuxml2argv-disk-scsi-lun-passthrough-sgio.xml | 2 +
.../qemuxml2argv-disk-scsi-megasas.xml | 2 +
.../qemuxml2argv-disk-scsi-virtio-scsi.xml | 2 +
.../qemuxml2argv-disk-scsi-vscsi.xml | 2 +
.../qemuxml2argv-disk-source-pool-mode.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-disk-usb.xml | 2 +
.../qemuxml2argv-disk-virtio-scsi-cmd_per_lun.xml | 2 +
.../qemuxml2argv-disk-virtio-scsi-ioeventfd.xml | 2 +
.../qemuxml2argv-disk-virtio-scsi-max_sectors.xml | 2 +
.../qemuxml2argv-disk-virtio-scsi-num_queues.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-disk-virtio.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-disk-xenvbd.xml | 2 +
.../qemuxml2argv-encrypted-disk.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-eoi-disabled.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-eoi-enabled.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-event_idx.xml | 2 +
.../qemuxml2argv-floppy-drive-fat.xml | 2 +
.../qemuxml2argv-graphics-vnc-policy.xml | 4 +-
.../qemuxml2argv-graphics-vnc-sasl.xml | 4 +-
.../qemuxml2argv-graphics-vnc-socket.xml | 4 +-
.../qemuxml2argv-graphics-vnc-tls.xml | 4 +-
.../qemuxml2argv-graphics-vnc-websocket.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-graphics-vnc.xml | 4 +-
.../qemuxml2argv-hostdev-pci-address.xml | 6 +-
.../qemuxml2argv-hostdev-scsi-large-unit.xml | 2 +
.../qemuxml2argv-hostdev-scsi-lsi-iscsi-auth.xml | 2 +
.../qemuxml2argv-hostdev-scsi-lsi-iscsi.xml | 2 +
.../qemuxml2argv-hostdev-scsi-lsi.xml | 2 +
.../qemuxml2argv-hostdev-scsi-rawio.xml | 2 +
.../qemuxml2argv-hostdev-scsi-readonly.xml | 2 +
.../qemuxml2argv-hostdev-scsi-sgio.xml | 2 +
.../qemuxml2argv-hostdev-scsi-shareable.xml | 2 +
...qemuxml2argv-hostdev-scsi-virtio-iscsi-auth.xml | 2 +
.../qemuxml2argv-hostdev-scsi-virtio-iscsi.xml | 2 +
.../qemuxml2argv-hostdev-scsi-virtio-scsi.xml | 2 +
.../qemuxml2argv-hostdev-usb-address.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-hostdev-vfio.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-hotplug-base.xml | 2 +
.../qemuxml2argv-hugepages-pages.xml | 2 +
.../qemuxml2argv-hugepages-pages2.xml | 2 +
.../qemuxml2argv-hugepages-pages3.xml | 2 +
.../qemuxml2argv-hugepages-shared.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-hugepages.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-hyperv-off.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-hyperv-panic.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-hyperv.xml | 6 +-
.../qemuxml2argv-input-usbmouse.xml | 2 +
.../qemuxml2argv-input-usbtablet.xml | 2 +
.../qemuxml2argv-interface-driver.xml | 2 +
.../qemuxml2argv-iothreads-disk.xml | 2 +
.../qemuxml2argv-iothreads-ids-partial.xml | 2 +
.../qemuxml2argv-iothreads-ids.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-iothreads.xml | 2 +
.../qemuxml2argv-kvm-features-off.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-kvm-features.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-kvmclock.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-lease.xml | 2 +
.../qemuxml2argv-machine-aeskeywrap-off-argv.xml | 4 +-
.../qemuxml2argv-machine-aeskeywrap-on-argv.xml | 4 +-
.../qemuxml2argv-machine-core-off.xml | 6 +-
.../qemuxml2argv-machine-core-on.xml | 6 +-
.../qemuxml2argv-machine-deakeywrap-off-argv.xml | 4 +-
.../qemuxml2argv-machine-deakeywrap-on-argv.xml | 4 +-
.../qemuxml2argv-machine-keywrap-none-argv.xml | 4 +-
.../qemuxml2argv-memory-hotplug-dimm.xml | 2 +
.../qemuxml2argv-memory-hotplug-nonuma.xml | 2 +
.../qemuxml2argv-memory-hotplug.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-migrate.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-minimal.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-misc-acpi.xml | 2 +
.../qemuxml2argv-misc-disable-s3.xml | 6 +-
.../qemuxml2argv-misc-disable-suspends.xml | 6 +-
.../qemuxml2argv-misc-enable-s4.xml | 6 +-
.../qemuxml2argv-misc-no-reboot.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-misc-uuid.xml | 2 +
.../qemuxml2argv-net-eth-ifname.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-net-eth.xml | 6 +-
.../qemuxml2argv-net-hostdev-vfio.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-net-hostdev.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-net-midonet.xml | 2 +
.../qemuxml2argv-net-openvswitch.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-net-udp.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-net-user.xml | 2 +
.../qemuxml2argv-net-vhostuser.xml | 2 +
.../qemuxml2argv-net-virtio-device.xml | 2 +
.../qemuxml2argv-net-virtio-disable-offloads.xml | 2 +
.../qemuxml2argv-net-virtio-network-portgroup.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-net-virtio.xml | 2 +
.../qemuxml2argv-nographics-vga.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-nosharepages.xml | 6 +-
.../qemuxml2argv-numad-static-vcpu-no-numatune.xml | 2 +
.../qemuxml2argv-numatune-memnode-no-memory.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-panic-double.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-panic-isa.xml | 2 +
.../qemuxml2argv-panic-no-address.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-parallel-tcp.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-pci-rom.xml | 2 +
.../qemuxml2argv-pci-serial-dev-chardev.xml | 2 +
.../qemuxml2argv-pcie-root-port-too-many.xml | 2 +
.../qemuxml2argv-pcie-root-port.xml | 2 +
.../qemuxml2argv-pcie-switch-downstream-port.xml | 2 +
.../qemuxml2argv-pcie-switch-upstream-port.xml | 2 +
.../qemuxml2argv-pcihole64-none.xml | 2 +
.../qemuxml2argv-pcihole64-q35.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-pcihole64.xml | 2 +
.../qemuxml2argv-pmu-feature-off.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-pseries-disk.xml | 2 +-
.../qemuxml2argv-pv-spinlock-disabled.xml | 2 +
.../qemuxml2argv-pv-spinlock-enabled.xml | 2 +
.../qemuxml2argv-qemu-ns-no-env.xml | 2 +
.../qemuxml2argv-reboot-timeout-disabled.xml | 6 +-
.../qemuxml2argv-reboot-timeout-enabled.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-restore-v2.xml | 2 +
.../qemuxml2argv-seclabel-dac-none.xml | 2 +
.../qemuxml2argv-seclabel-device-multiple.xml | 2 +
.../qemuxml2argv-seclabel-dynamic-baselabel.xml | 2 +
.../qemuxml2argv-seclabel-dynamic-none.xml | 2 +
.../qemuxml2argv-seclabel-dynamic-override.xml | 2 +
.../qemuxml2argv-seclabel-static-labelskip.xml | 2 +
.../qemuxml2argv-seclabel-static.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-serial-dev.xml | 6 +-
.../qemuxml2argvdata/qemuxml2argv-serial-file.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-serial-many.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-serial-pty.xml | 2 +
.../qemuxml2argv-serial-spiceport-nospice.xml | 2 +
.../qemuxml2argv-serial-tcp-telnet.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-serial-tcp.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-serial-udp.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-serial-unix.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-serial-vc.xml | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-shmem.xml | 2 +
.../qemuxml2argv-smbios-multiple-type2.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-smbios.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-smp.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-sound-device.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-sound.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-tap-vhost.xml | 2 +
.../qemuxml2argv-tpm-passthrough.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-usb-redir.xml | 2 +
.../qemuxml2argv-vcpu-placement-static.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-vhost_queues.xml | 2 +
.../qemuxml2argv-video-virtio-gpu-device.xml | 2 +
.../qemuxml2argv-video-virtio-gpu-virgl.xml | 2 +
.../qemuxml2argv-virtio-input-passthrough.xml | 2 +
.../qemuxml2argvdata/qemuxml2argv-virtio-input.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-virtio-lun.xml | 2 +
.../qemuxml2argv-virtio-rng-egd.xml | 2 +
.../qemuxml2argv-virtio-rng-random.xml | 2 +
tests/qemuxml2argvdata/qemuxml2argv-watchdog.xml | 6 +-
.../qemuxml2xmlout-balloon-device-auto.xml | 2 +
.../qemuxml2xmlout-balloon-device-period.xml | 2 +
.../qemuxml2xmlout-bios-nvram-os-interleave.xml | 2 +
...muxml2xmlout-boot-menu-disable-with-timeout.xml | 2 +
.../qemuxml2xmlout-channel-virtio-auto.xml | 2 +
.../qemuxml2xmlout-channel-virtio-state-active.xml | 2 +
...emuxml2xmlout-channel-virtio-state-inactive.xml | 2 +
.../qemuxml2xmlout-console-compat-auto.xml | 2 +
.../qemuxml2xmlout-console-compat2.xml | 2 +
.../qemuxml2xmlout-console-virtio.xml | 2 +
.../qemuxml2xmlout-controller-usb-order.xml | 2 +
.../qemuxml2xmlout-cpu-empty.xml | 2 +
.../qemuxml2xmlout-cpu-numa-disordered.xml | 2 +
.../qemuxml2xmlout-cpu-numa-no-memory-element.xml | 2 +
.../qemuxml2xmlout-cpu-numa1.xml | 2 +
.../qemuxml2xmlout-cpu-numa2.xml | 2 +
.../qemuxml2xmlout-cputune-iothreads.xml | 2 +
.../qemuxml2xmlout-cputune-iothreadsched.xml | 2 +
.../qemuxml2xmlout-default-kvm-host-arch.xml | 2 +
.../qemuxml2xmlout-default-qemu-host-arch.xml | 2 +
.../qemuxml2xmlout-disk-backing-chains-active.xml | 2 +
...qemuxml2xmlout-disk-backing-chains-inactive.xml | 2 +
.../qemuxml2xmlout-disk-drive-discard.xml | 2 +
.../qemuxml2xmlout-disk-mirror-old-inactive.xml | 2 +
.../qemuxml2xmlout-disk-mirror-old.xml | 2 +
.../qemuxml2xmlout-disk-mirror.xml | 2 +
.../qemuxml2xmlout-disk-scsi-device-auto.xml | 2 +
.../qemuxml2xmlout-disk-source-pool.xml | 2 +
...qemuxml2xmlout-hostdev-scsi-autogen-address.xml | 2 +
.../qemuxml2xmlout-memtune-unlimited.xml | 2 +
.../qemuxml2xmloutdata/qemuxml2xmlout-memtune.xml | 2 +
.../qemuxml2xmlout-metadata-duplicate.xml | 2 +
.../qemuxml2xmloutdata/qemuxml2xmlout-metadata.xml | 2 +
...emuxml2xmlout-numad-auto-memory-vcpu-cpuset.xml | 2 +
...ad-auto-memory-vcpu-no-cpuset-and-placement.xml | 2 +
.../qemuxml2xmlout-numad-auto-vcpu-no-numatune.xml | 2 +
.../qemuxml2xmlout-numatune-auto-prefer.xml | 2 +
.../qemuxml2xmlout-numatune-memnode.xml | 2 +
tests/qemuxml2xmloutdata/qemuxml2xmlout-panic.xml | 2 +
.../qemuxml2xmlout-pci-autoadd-addr.xml | 2 +
.../qemuxml2xmlout-pci-autoadd-idx.xml | 2 +
.../qemuxml2xmlout-pci-bridge-many-disks.xml | 2 +
.../qemuxml2xmlout-pcie-root.xml | 2 +
.../qemuxml2xmlout-pcihole64-gib.xml | 2 +
.../qemuxml2xmlout-pmu-feature.xml | 2 +
tests/qemuxml2xmloutdata/qemuxml2xmlout-q35.xml | 2 +
.../qemuxml2xmlout-seclabel-dynamic-labelskip.xml | 2 +
.../qemuxml2xmlout-seclabel-dynamic-relabel.xml | 2 +
.../qemuxml2xmlout-seclabel-none.xml | 2 +
.../qemuxml2xmlout-serial-target-port-auto.xml | 2 +
.../qemuxml2xmlout-tap-vhost-incorrect.xml | 2 +
.../qemuxml2xmlout-usb-ich9-ehci-addr.xml | 2 +
.../qemuxml2xmlout-usb-redir-filter-version.xml | 2 +
.../qemuxml2xmlout-usb-redir-filter.xml | 2 +
tests/qemuxml2xmltest.c | 8 +-
tests/sexpr2xmldata/sexpr2xml-boot-grub.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-bridge-ipaddr.xml | 2 +
.../sexpr2xml-disk-block-shareable.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-disk-block.xml | 2 +
.../sexpr2xml-disk-drv-blktap-qcow.xml | 2 +
.../sexpr2xml-disk-drv-blktap-raw.xml | 2 +
.../sexpr2xml-disk-drv-blktap2-raw.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-disk-file.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-fv-kernel.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-net-bridged.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-net-e1000.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-net-routed.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-pci-devs.xml | 2 +
.../sexpr2xml-pv-bootloader-cmdline.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-pv-bootloader.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-pv-localtime.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-pv-vcpus.xml | 2 +
tests/sexpr2xmldata/sexpr2xml-pv.xml | 2 +
tests/testutils.c | 134 ++++++++++++++++++---
tests/testutils.h | 8 ++
tests/vboxsnapshotxmltest.c | 2 +-
tests/vmx2xmldata/vmx2xml-graphics-vnc.xml | 2 -
tests/xlconfigdata/test-paravirt-maxvcpus.xml | 2 +
tests/xmconfigdata/test-paravirt-maxvcpus.xml | 2 +
tests/xmconfigdata/test-paravirt-vcpu.xml | 2 +
322 files changed, 915 insertions(+), 220 deletions(-)
--
2.7.0
8 years, 10 months
[libvirt] [PATCH] qemu: align the cur_balloon too if not explicitly specified by the user
by Shivaprasad G Bhat
As of now, the cur_ballon is set to actual memory if not specified by the user.
When the user specified memory is not aligned the cur_balloon alone ends up
unaligned. For qemu in function qemuDomainAttachMemory(), the cur_balloon
wouldn't add up to the actual memory as the cur_ballon was not aligned.
So, there is need for explicit setmem post attach-device for such guests.
The decision as to whether to align the cur_balloon memory or not is
not possible if we set it to actual memory by default in post-parse.
Move the default cur_balloon assignment to their respective drivers during
domain start wherever possible. For qemu align the cur_balloon too iow assign
the aligned actual memory when not specified by the user.
Signed-off-by: Shivaprasad G Bhat <sbhat(a)linux.vnet.ibm.com>
---
src/conf/domain_conf.c | 3 +--
src/libxl/libxl_conf.c | 2 ++
src/lxc/lxc_process.c | 3 +++
src/openvz/openvz_driver.c | 13 +++++++------
src/phyp/phyp_driver.c | 10 +++-------
src/qemu/qemu_domain.c | 3 +++
src/uml/uml_conf.c | 3 +++
src/vbox/vbox_common.c | 3 +++
src/vmx/vmx.c | 3 +++
src/vz/vz_sdk.c | 3 +++
src/xenconfig/xen_common.c | 3 +++
src/xenconfig/xen_sxpr.c | 4 ++++
12 files changed, 38 insertions(+), 15 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 2f5c0ed..68338f4 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -3527,8 +3527,7 @@ virDomainDefPostParseMemory(virDomainDefPtr def,
return -1;
}
- if (def->mem.cur_balloon > virDomainDefGetMemoryActual(def) ||
- def->mem.cur_balloon == 0)
+ if (def->mem.cur_balloon > virDomainDefGetMemoryActual(def))
def->mem.cur_balloon = virDomainDefGetMemoryActual(def);
if ((def->mem.max_memory || def->mem.memory_slots) &&
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 4eed5ca..6b6e764 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -665,6 +665,8 @@ libxlMakeDomBuildInfo(virDomainDefPtr def,
}
b_info->sched_params.weight = 1000;
b_info->max_memkb = virDomainDefGetMemoryInitial(def);
+ if (!def->mem.cur_balloon)
+ def->mem.cur_balloon = virDomainDefGetMemoryInitial(def);
b_info->target_memkb = def->mem.cur_balloon;
if (hvm) {
char bootorder[VIR_DOMAIN_BOOT_LAST + 1];
diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
index 57e3880..201ee61 100644
--- a/src/lxc/lxc_process.c
+++ b/src/lxc/lxc_process.c
@@ -1257,6 +1257,9 @@ int virLXCProcessStart(virConnectPtr conn,
vm->def->resource = res;
}
+ if (!vm->def->mem.cur_balloon)
+ vm->def->mem.cur_balloon = virDomainDefGetMemoryActual(vm->def);
+
if (virAsprintf(&logfile, "%s/%s.log",
cfg->logDir, vm->def->name) < 0)
goto cleanup;
diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c
index b8c0f50..8a56d94 100644
--- a/src/openvz/openvz_driver.c
+++ b/src/openvz/openvz_driver.c
@@ -1043,12 +1043,13 @@ openvzDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int fla
}
}
- if (vm->def->mem.cur_balloon > 0) {
- if (openvzDomainSetMemoryInternal(vm, vm->def->mem.cur_balloon) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Could not set memory size"));
- goto cleanup;
- }
+ if (!vm->def->mem.cur_balloon)
+ vm->def->mem.cur_balloon = virDomainDefGetMemoryActual(vm->def);
+
+ if (openvzDomainSetMemoryInternal(vm, vm->def->mem.cur_balloon) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Could not set memory size"));
+ goto cleanup;
}
dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c
index 14264c0..1fc7b34 100644
--- a/src/phyp/phyp_driver.c
+++ b/src/phyp/phyp_driver.c
@@ -3491,13 +3491,6 @@ phypBuildLpar(virConnectPtr conn, virDomainDefPtr def)
int exit_status = 0;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- if (!def->mem.cur_balloon) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("Field <currentMemory> on the domain XML file is "
- "missing or has invalid value"));
- goto cleanup;
- }
-
if (!virDomainDefGetMemoryInitial(def)) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("Field <memory> on the domain XML file is missing or "
@@ -3505,6 +3498,9 @@ phypBuildLpar(virConnectPtr conn, virDomainDefPtr def)
goto cleanup;
}
+ if (!def->mem.cur_balloon)
+ def->mem.cur_balloon = virDomainDefGetMemoryActual(def);
+
if (def->ndisks < 1) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("Domain XML must contain at least one <disk> element."));
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 40e1f18..9d92d99 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -3567,6 +3567,9 @@ qemuDomainAlignMemorySizes(virDomainDefPtr def)
}
}
+ if (!def->mem.cur_balloon)
+ def->mem.cur_balloon = virDomainDefGetMemoryActual(def);
+
return 0;
}
diff --git a/src/uml/uml_conf.c b/src/uml/uml_conf.c
index afc0375..c53bc65 100644
--- a/src/uml/uml_conf.c
+++ b/src/uml/uml_conf.c
@@ -399,6 +399,9 @@ virCommandPtr umlBuildCommandLine(virConnectPtr conn,
virCommandAddEnvPassCommon(cmd);
+ if (!vm->def->mem.cur_balloon)
+ vm->def->mem.cur_balloon = virDomainDefGetMemoryActual(vm->def);
+
//virCommandAddArgPair(cmd, "con0", "fd:0,fd:1");
virCommandAddArgFormat(cmd, "mem=%lluK", vm->def->mem.cur_balloon);
virCommandAddArgPair(cmd, "umid", vm->def->name);
diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c
index 9369367..38bf35e 100644
--- a/src/vbox/vbox_common.c
+++ b/src/vbox/vbox_common.c
@@ -1886,6 +1886,9 @@ vboxDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags
goto cleanup;
}
+ if (!def->mem.cur_balloon)
+ def->mem.cur_balloon = virDomainDefGetMemoryActual(def);
+
rc = gVBoxAPI.UIMachine.SetMemorySize(machine,
VIR_DIV_UP(def->mem.cur_balloon, 1024));
if (NS_FAILED(rc)) {
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index 7c3c10a..8f4d66a 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -3157,6 +3157,9 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virDomainDe
virBufferAsprintf(&buffer, "memsize = \"%llu\"\n",
max_balloon / 1024); /* Scale from kilobytes to megabytes */
+ if (!def->mem.cur_balloon)
+ def->mem.cur_balloon = virDomainDefGetMemoryActual(def);
+
/* def:mem.cur_balloon -> vmx:sched.mem.max */
if (def->mem.cur_balloon < max_balloon) {
virBufferAsprintf(&buffer, "sched.mem.max = \"%llu\"\n",
diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index 1fced3f..131f6bb 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -3475,6 +3475,9 @@ prlsdkDoApplyConfig(virConnectPtr conn,
bool needBoot = true;
char *mask = NULL;
+ if (!def->mem.cur_ballon)
+ def->mem.cur_ballon = virDomainDefGetMemoryActual(def);
+
if (prlsdkCheckUnsupportedParams(sdkdom, def) < 0)
return -1;
diff --git a/src/xenconfig/xen_common.c b/src/xenconfig/xen_common.c
index 0890c73..ba6dffa 100644
--- a/src/xenconfig/xen_common.c
+++ b/src/xenconfig/xen_common.c
@@ -1306,6 +1306,9 @@ xenFormatMem(virConfPtr conf, virDomainDefPtr def)
VIR_DIV_UP(virDomainDefGetMemoryActual(def), 1024)) < 0)
return -1;
+ if (!def->mem.cur_balloon)
+ def->mem.cur_balloon = virDomainDefGetMemoryActual(def);
+
if (xenConfigSetInt(conf, "memory",
VIR_DIV_UP(def->mem.cur_balloon, 1024)) < 0)
return -1;
diff --git a/src/xenconfig/xen_sxpr.c b/src/xenconfig/xen_sxpr.c
index 7fc9c9d..63b79a0 100644
--- a/src/xenconfig/xen_sxpr.c
+++ b/src/xenconfig/xen_sxpr.c
@@ -2219,6 +2219,10 @@ xenFormatSxpr(virConnectPtr conn,
virBufferAddLit(&buf, "(vm ");
virBufferEscapeSexpr(&buf, "(name '%s')", def->name);
+
+ if (!def->mem.cur_balloon)
+ def->mem.cur_balloon = virDomainDefGetMemoryActual(def);
+
virBufferAsprintf(&buf, "(memory %llu)(maxmem %llu)",
VIR_DIV_UP(def->mem.cur_balloon, 1024),
VIR_DIV_UP(virDomainDefGetMemoryActual(def), 1024));
8 years, 10 months
[libvirt] [PATCH 0/2] Xen: Support vif outging bandwidth QoS
by Jim Fehlig
Happy Holidays! :-)
This small series adds support for specifying vif outgoing rate limits
in Xen. The first patch adds support for converting rate limits between
xl/xm config and domXML, along with introducing a test for the conversion
logic. The second patch adds outgoing rate limiting to the libxl driver.
Jim Fehlig (2):
xenconfig: support parsing and formatting vif bandwidth
libxl: support vif outgoing bandwidth QoS
src/libxl/libxl_conf.c | 39 ++++++++++++++++++
src/xenconfig/xen_common.c | 77 ++++++++++++++++++++++++++++++++++++
tests/xlconfigdata/test-vif-rate.cfg | 26 ++++++++++++
tests/xlconfigdata/test-vif-rate.xml | 57 ++++++++++++++++++++++++++
tests/xlconfigtest.c | 1 +
5 files changed, 200 insertions(+)
create mode 100644 tests/xlconfigdata/test-vif-rate.cfg
create mode 100644 tests/xlconfigdata/test-vif-rate.xml
--
2.1.4
8 years, 10 months
[libvirt] [PATCH] Remove non-breaking space in comment
by Martin Kletzander
It was added by mistake before the 'If' by commit 714080791778.
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
Pushed as trivial
src/qemu/qemu_domain.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 73fc79dab56b..a539278058fa 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1340,7 +1340,7 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
* If the address is generated by us (starts with our
* channel dir), we should not keep it in the persistent
* XML. If libvirt is the one who generated it, users
- * shouldn't care about that. If they do, they are
+ * shouldn't care about that. If they do, they are
* supposed to set it themselves.
*/
VIR_FREE(dev->data.chr->source.data.nix.path);
--
2.7.0
8 years, 10 months
[libvirt] Libvirt 1.3.0 compilation failure on OSX 10.9.5
by Justin Clift
Hiyas,
Just went to update the MacOS X Homebrew port/formula for
Libvirt 1.3.0. It's failing during compilation with:
***********************************************************************************
Last 15 lines from /Users/jc/Library/Logs/Homebrew/libvirt/02.make:
CCLD libvirt_driver_vbox.la
CCLD libvirt_driver_storage.la
Undefined symbols for architecture x86_64:
"_xdr_uint64_t", referenced from:
_xdr_virLogManagerProtocolLogFilePosition in virtlogd-log_protocol.o
_xdr_virLogManagerProtocolDomainOpenLogFileRet in virtlogd-log_protocol.o
_xdr_virLogManagerProtocolDomainGetLogFilePositionRet in virtlogd-log_protocol.o
_xdr_virLogManagerProtocolDomainReadLogFileArgs in virtlogd-log_protocol.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [virtlogd] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
***********************************************************************************
Is this a known thing, or should I grab the rest of the failure logging for
someone (not me) to look at? :)
+ Justin
8 years, 10 months
[libvirt] [PATCH] qemu: Fix NBD migration with default listenAddress
by Jiri Denemark
My commit 674afcb09e3d33500cfbbcf870ebf92cb99ecfa3 moved computing the
default listen address from qemuMigrationPrepareAny to
qemuMigrationPrepareIncoming. However, I didn't notice listenAddress was
later passed to qemuMigrationStartNBDServer. Thus, it would be called
with the original value of listenAddress (NULL).
Let's add the updated listen address to qemuProcessIncomingDef and use
it when starting NBD servers.
Reported-by: Michael Chapman <mike(a)very.puzzling.org>
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/qemu/qemu_migration.c | 5 +++--
src/qemu/qemu_process.c | 7 ++++++-
src/qemu/qemu_process.h | 2 ++
3 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 6be11b4..cb8c75d 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -3365,7 +3365,8 @@ qemuMigrationPrepareIncoming(virDomainObjPtr vm,
goto cleanup;
}
- inc = qemuProcessIncomingDefNew(priv->qemuCaps, migrateFrom, fd, NULL);
+ inc = qemuProcessIncomingDefNew(priv->qemuCaps, listenAddress,
+ migrateFrom, fd, NULL);
cleanup:
VIR_FREE(migrateFrom);
@@ -3586,7 +3587,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
if (mig->nbd &&
flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC) &&
virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_SERVER)) {
- if (qemuMigrationStartNBDServer(driver, vm, listenAddress,
+ if (qemuMigrationStartNBDServer(driver, vm, incoming->address,
nmigrate_disks, migrate_disks) < 0) {
goto stopjob;
}
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index f274068..819ad05 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -4124,6 +4124,7 @@ qemuProcessIncomingDefFree(qemuProcessIncomingDefPtr inc)
if (!inc)
return;
+ VIR_FREE(inc->address);
VIR_FREE(inc->launchURI);
VIR_FREE(inc->deferredURI);
VIR_FREE(inc);
@@ -4137,6 +4138,7 @@ qemuProcessIncomingDefFree(qemuProcessIncomingDefPtr inc)
*/
qemuProcessIncomingDefPtr
qemuProcessIncomingDefNew(virQEMUCapsPtr qemuCaps,
+ const char *listenAddress,
const char *migrateFrom,
int fd,
const char *path)
@@ -4149,6 +4151,9 @@ qemuProcessIncomingDefNew(virQEMUCapsPtr qemuCaps,
if (VIR_ALLOC(inc) < 0)
return NULL;
+ if (VIR_STRDUP(inc->address, listenAddress) < 0)
+ goto error;
+
inc->launchURI = qemuMigrationIncomingURI(migrateFrom, fd);
if (!inc->launchURI)
goto error;
@@ -5137,7 +5142,7 @@ qemuProcessStart(virConnectPtr conn,
goto cleanup;
if (migrateFrom) {
- incoming = qemuProcessIncomingDefNew(priv->qemuCaps, migrateFrom,
+ incoming = qemuProcessIncomingDefNew(priv->qemuCaps, NULL, migrateFrom,
migrateFd, migratePath);
if (!incoming)
goto stop;
diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h
index 85e3a06..c674111 100644
--- a/src/qemu/qemu_process.h
+++ b/src/qemu/qemu_process.h
@@ -47,6 +47,7 @@ int qemuProcessAssignPCIAddresses(virDomainDefPtr def);
typedef struct _qemuProcessIncomingDef qemuProcessIncomingDef;
typedef qemuProcessIncomingDef *qemuProcessIncomingDefPtr;
struct _qemuProcessIncomingDef {
+ char *address; /* address where QEMU is supposed to listen */
char *launchURI; /* used as a parameter for -incoming command line option */
char *deferredURI; /* used when calling migrate-incoming QMP command */
int fd; /* for fd:N URI */
@@ -54,6 +55,7 @@ struct _qemuProcessIncomingDef {
};
qemuProcessIncomingDefPtr qemuProcessIncomingDefNew(virQEMUCapsPtr qemuCaps,
+ const char *listenAddress,
const char *migrateFrom,
int fd,
const char *path);
--
2.7.0
8 years, 10 months
[libvirt] [PATCH 0/4] virsh: Some events cleanups and improvements
by Jiri Denemark
Jiri Denemark (4):
virsh: Refactor event printing
virsh: Add timestamps to events
virsh: Pass ctl to virshCatchDisconnect
virsh: Interrupt *event --loop on disconnect
tools/virsh-domain.c | 310 +++++++++++++++++++++++++--------------------------
tools/virsh.c | 5 +-
2 files changed, 156 insertions(+), 159 deletions(-)
--
2.6.4
8 years, 10 months
[libvirt] [PATCH] pci: Log debug messages when manipulating the inactive list
by Andrea Bolognani
Most of the changes to the list of active and inactive PCI devices
happen in virHostdev, where they are properly logged.
virPCIDeviceDetach() and virPCIDeviceReattach(), however, change the
inactive list as well, so they should be logging similar messages.
---
src/util/virpci.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/util/virpci.c b/src/util/virpci.c
index 5ebd408..505c1f3 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -1370,9 +1370,10 @@ virPCIDeviceDetach(virPCIDevicePtr dev,
/* Add *a copy of* the dev into list inactiveDevs, if
* it's not already there.
*/
- if (inactiveDevs && !virPCIDeviceListFind(inactiveDevs, dev) &&
- virPCIDeviceListAddCopy(inactiveDevs, dev) < 0) {
- return -1;
+ if (inactiveDevs && !virPCIDeviceListFind(inactiveDevs, dev)) {
+ VIR_DEBUG("Adding PCI device %s to inactive list", dev->name);
+ if (virPCIDeviceListAddCopy(inactiveDevs, dev) < 0)
+ return -1;
}
return 0;
@@ -1393,8 +1394,10 @@ virPCIDeviceReattach(virPCIDevicePtr dev,
return -1;
/* Steal the dev from list inactiveDevs */
- if (inactiveDevs)
+ if (inactiveDevs) {
+ VIR_DEBUG("Removing PCI device %s from inactive list", dev->name);
virPCIDeviceListDel(inactiveDevs, dev);
+ }
return 0;
}
--
2.5.0
8 years, 10 months