Re: [PATCH 8/8] lxc: use job functions in lxcDomain* functions that perform modify actions.

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

 



On Tue, May 17, 2016 at 12:36:54AM +0300, Katerina Koukiou wrote:
> Use the recently added job functions and unlock the virDomainObj while
> performing the respective modify operation.
> This commit affects lxcDomain{DestroyFlags, Reboot, SetBlkioParameters,
> SetMemoryParameters, SetMetadata, SetSchedulerParameterFlags, ShutdownFlags}
> 
> Signed-off-by: Katerina Koukiou <k.koukiou@xxxxxxxxx>
> ---
>  src/lxc/lxc_driver.c | 114 +++++++++++++++++++++++++++++++++++++--------------
>  1 file changed, 83 insertions(+), 31 deletions(-)
> 
> diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
> index 2d610f4..7cdea2c 100644
> --- a/src/lxc/lxc_driver.c
> +++ b/src/lxc/lxc_driver.c
> @@ -857,16 +857,19 @@ lxcDomainSetMemoryParameters(virDomainPtr dom,

Adding extra context:

    if (virDomainSetMemoryParametersEnsureACL(dom->conn, vm->def, flags) < 0 ||
        !(caps = virLXCDriverGetCapabilities(driver, false)) ||
        virDomainLiveConfigHelperMethod(caps, driver->xmlopt,
>                                          vm, &flags, &vmdef) < 0)
>          goto cleanup;
>  
> +    if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0)
> +        goto cleanup;

This should be called between the virDomainSetMemoryParametersEnsureACL and
virDomainLiveConfigHelperMethod calls above.

In virDomainLiveConfigHelperMethod, there is a check to see if the
domain is active when AFFECT_LIVE is set.

Since virLXCDomainObjBeginJob unlocks the virDomainObjPtr lock,
the domain could possibly be destroyed while we wait for the job
and the check results would no longer be valid.

(Found while trying to remove the remaining uses of
 virDomainLiveConfigHelperMethod)

Jan

> +
>      if (flags & VIR_DOMAIN_AFFECT_LIVE &&
>          !virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_MEMORY)) {
>          virReportError(VIR_ERR_OPERATION_INVALID,
>                         "%s", _("cgroup memory controller is not mounted"));

--
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]