[libvirt] [PATCH 7/7] qemu: Allow making vcpus hotpluggable with virDomainSetVcpusFlags
Peter Krempa
pkrempa at redhat.com
Thu Sep 29 12:02:57 UTC 2016
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.
>
>
> > 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20160929/d2a0b1af/attachment-0001.sig>
More information about the libvir-list
mailing list