This series is getting rather big. The target is to refactor the way libvirt stores info about vCPUs into a single structure (okay, two structures for the qemu driver. Part 1 is not yet completely there, well, not even halfway. Future work will involve fully allocating priv->vcpupids to the maxcpus size and moving around few other bits of data in cputune and other parts to the new structure. Yet another follow up work is then to add new APIs for vCPU hotplug, which will enable adding vCPUs sparsely (useful if you have NUMA). Since this refactor will result in tracking all vcpu-related data in one struct, the result will automagically fix a few bugs where we'd end up with invalid config after vcpu unplug or other operations. Version 2 does not contain already pushed patches and incorporates feedback from John's review. Since I've changed quite a few things I'm reposting this. Peter Krempa (27): conf: Replace writes to def->maxvcpus with accessor conf: Use local copy of maxvcpus in virDomainVcpuParse conf: Extract update of vcpu count if maxvcpus is decreased conf: Add helper to check whether domain has offline vCPUs conf: Replace read access to def->maxvcpus with accessor conf: Replace writes to def->vcpus with accessor conf: Move vcpu count check into helper conf: Replace read accesses to def->vcpus with accessor conf: Turn def->maxvcpus into size_t qemu: domain: Add helper to access vm->privateData->agent qemu: Extract vCPU onlining/offlining via agent into a separate function qemu: qemuDomainSetVcpusAgent: re-check agent before calling it the again qemu: Split up vCPU hotplug and hotunplug qemu: cpu hotplug: Fix error handling logic qemu: monitor: Remove weird return values from qemuMonitorSetCPU qemu: cpu hotplug: Move loops to qemuDomainSetVcpusFlags qemu: Refactor qemuDomainHotplugVcpus qemu: refactor qemuDomainHotunplugVcpus conf: turn def->vcpus into a structure conf: ABI: Split up and improve vcpu info ABI checking conf: Add helper to get pointer to a certain vCPU definition qemu: cgroup: Remove now unreachable check qemu: Drop checking vcpu threads in emulator bandwidth getter/setter qemu: Replace checking for vcpu<->pid mapping availability with a helper qemu: Add helper to retrieve vCPU pid qemu: driver: Refactor qemuDomainHelperGetVcpus qemu: cgroup: Don't use priv->ncpupids to iterate domain vCPUs src/bhyve/bhyve_command.c | 2 +- src/bhyve/bhyve_driver.c | 2 +- src/conf/domain_audit.c | 2 +- src/conf/domain_conf.c | 190 ++++++++++++--- src/conf/domain_conf.h | 20 +- src/hyperv/hyperv_driver.c | 10 +- src/libvirt_private.syms | 6 + src/libxl/libxl_conf.c | 6 +- src/libxl/libxl_driver.c | 40 ++-- src/lxc/lxc_controller.c | 2 +- src/lxc/lxc_driver.c | 2 +- src/lxc/lxc_native.c | 7 +- src/openvz/openvz_conf.c | 7 +- src/openvz/openvz_driver.c | 19 +- src/phyp/phyp_driver.c | 12 +- src/qemu/qemu_cgroup.c | 42 ++-- src/qemu/qemu_command.c | 29 ++- src/qemu/qemu_domain.c | 47 ++++ src/qemu/qemu_domain.h | 4 + src/qemu/qemu_driver.c | 542 ++++++++++++++++++++++--------------------- src/qemu/qemu_monitor.c | 3 + src/qemu/qemu_monitor_json.c | 8 - src/qemu/qemu_monitor_text.c | 23 +- src/qemu/qemu_process.c | 22 +- src/test/test_driver.c | 38 +-- src/uml/uml_driver.c | 2 +- src/vbox/vbox_common.c | 19 +- src/vmware/vmware_driver.c | 2 +- src/vmx/vmx.c | 38 +-- src/vz/vz_driver.c | 8 +- src/vz/vz_sdk.c | 13 +- src/xen/xm_internal.c | 19 +- src/xenapi/xenapi_driver.c | 7 +- src/xenapi/xenapi_utils.c | 6 +- src/xenconfig/xen_common.c | 16 +- src/xenconfig/xen_sxpr.c | 27 ++- 36 files changed, 767 insertions(+), 475 deletions(-) -- 2.6.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list