Re: [PATCH 7/7] qemu: Allow making vcpus hotpluggable with virDomainSetVcpusFlags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 09/29/2016 05:32 PM, Peter Krempa wrote:
On Thu, Sep 29, 2016 at 16:29:13 +0530, Shivaprasad G Bhat wrote:
On 09/21/2016 05:19 PM, Peter Krempa wrote:
Implement support for VIR_DOMAIN_VCPU_HOTPLUGGABLE so that users can
choose to make vcpus added by the API removable.
---
   src/qemu/qemu_driver.c | 22 ++++++++++++++++------
   1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 357be4e..8453628 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -4912,7 +4912,8 @@ qemuDomainSetVcpusLive(virQEMUDriverPtr driver,
    */
   static void
   qemuDomainSetVcpusConfig(virDomainDefPtr def,
-                         unsigned int nvcpus)
+                         unsigned int nvcpus,
+                         bool hotpluggable)
   {
       virDomainVcpuDefPtr vcpu;
Here  if (curvcpus == nvcpus)

                      return
     we still need to allow if someone wants to switch from hotpluggable
= yes to no/ vice versa.
No. As no new vcpus were added there's nothing to turn to hotpluggable.
The flag turns only the newly added vcpus as hotpluggable.

What if someone had the hotplug = yes. And He wants to make it "no". ? With no changes to the vcpus.


       size_t curvcpus = virDomainDefGetVcpus(def);
@@ -4933,7 +4934,12 @@ qemuDomainSetVcpusConfig(virDomainDefPtr def,
                   continue;

               vcpu->online = true;
-            vcpu->hotpluggable = VIR_TRISTATE_BOOL_NO;
+            if (hotpluggable) {
+                vcpu->hotpluggable = VIR_TRISTATE_BOOL_YES;
+                def->individualvcpus = true;
+            } else {
+                vcpu->hotpluggable = VIR_TRISTATE_BOOL_NO;
+            }

               if (++curvcpus == nvcpus)
                   break;
Can we add checks here to see on PPC, the config is valid with a check
when topology is given in xml to see (curvcpus%threads_per_core == 0)
No. For PPC and all the weird archs that don't have thread level hotplug
we can't really know what to use and what is a legitimate configuration
until we start the VM and query qemu.

Otherwise with virsh setvcpus rhel71 13 --config --hotpluggable
for a guest with topology     <topology sockets='8' cores='2' threads='4'/>
we would see,
2016-09-29 10:12:05.929+0000: 1137: error :
qemuProcessValidateHotpluggableVcpus:4829 : unsupported configuration:
vcpus '12' and '13' are in the same hotplug group but differ in
configuration
Yes, you can configure the same thing manually in the XML.

OR

Even when setvcpus live to a number not leading to a complete core, we
have checks leading to sensible error (error: unsupported configuration:
target vm vcpu granularity does not allow the desired vcpu count ) . So,
in case of --config also may be we can add the check to bring the
consistency.
As said above. Libvirt can't surely detect that the "weird" approach is
needed.

Peter

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]