lxc: Refresh capabilities if they have never been initalized

Message ID ae302da2285cebe3d5d5d1ae0d8a37fea687c045.1575915302.git.crobinso@redhat.com
State New
Headers show
Series
  • lxc: Refresh capabilities if they have never been initalized
Related show

Commit Message

Cole Robinson Dec. 9, 2019, 6:15 p.m.
Adjust virLXCDriverGetCapabilities to fill in driver->caps if it has
never been set, regardless of the passed 'refresh' boolean.

This fixes LXC XML startup parsing for me

Signed-off-by: Cole Robinson <crobinso@redhat.com>

---
 src/lxc/lxc_conf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.23.0

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

Comments

Cole Robinson Dec. 9, 2019, 6:16 p.m. | #1
On 12/9/19 1:15 PM, Cole Robinson wrote:
> Adjust virLXCDriverGetCapabilities to fill in driver->caps if it has

> never been set, regardless of the passed 'refresh' boolean.

> 

> This fixes LXC XML startup parsing for me

> 

> Signed-off-by: Cole Robinson <crobinso@redhat.com>

> ---

>  src/lxc/lxc_conf.c | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

> 


I meant to add: not sure if it's safe to access driver->caps like this
without holding the driver lock ...

- Cole

> diff --git a/src/lxc/lxc_conf.c b/src/lxc/lxc_conf.c

> index 2df1537b22..803176f52b 100644

> --- a/src/lxc/lxc_conf.c

> +++ b/src/lxc/lxc_conf.c

> @@ -186,7 +186,7 @@ virCapsPtr virLXCDriverGetCapabilities(virLXCDriverPtr driver,

>                                         bool refresh)

>  {

>      virCapsPtr ret;

> -    if (refresh) {

> +    if (refresh || !driver->caps) {

>          virCapsPtr caps = NULL;

>          if ((caps = virLXCDriverCapsInit(driver)) == NULL)

>              return NULL;

>


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Daniel P. Berrangé Dec. 9, 2019, 6:21 p.m. | #2
On Mon, Dec 09, 2019 at 01:16:42PM -0500, Cole Robinson wrote:
> On 12/9/19 1:15 PM, Cole Robinson wrote:

> > Adjust virLXCDriverGetCapabilities to fill in driver->caps if it has

> > never been set, regardless of the passed 'refresh' boolean.

> > 

> > This fixes LXC XML startup parsing for me

> > 

> > Signed-off-by: Cole Robinson <crobinso@redhat.com>

> > ---

> >  src/lxc/lxc_conf.c | 2 +-

> >  1 file changed, 1 insertion(+), 1 deletion(-)

> > 

> 

> I meant to add: not sure if it's safe to access driver->caps like this

> without holding the driver lock ...


No, you'll have to hold the lock - take a look at
virQEMUDriverGetCapabilities for the pattern we can
copy.

> 

> - Cole

> 

> > diff --git a/src/lxc/lxc_conf.c b/src/lxc/lxc_conf.c

> > index 2df1537b22..803176f52b 100644

> > --- a/src/lxc/lxc_conf.c

> > +++ b/src/lxc/lxc_conf.c

> > @@ -186,7 +186,7 @@ virCapsPtr virLXCDriverGetCapabilities(virLXCDriverPtr driver,

> >                                         bool refresh)

> >  {

> >      virCapsPtr ret;

> > -    if (refresh) {

> > +    if (refresh || !driver->caps) {

> >          virCapsPtr caps = NULL;

> >          if ((caps = virLXCDriverCapsInit(driver)) == NULL)

> >              return NULL;

> >

> 

> --

> libvir-list mailing list

> libvir-list@redhat.com

> https://www.redhat.com/mailman/listinfo/libvir-list


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

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

Patch

diff --git a/src/lxc/lxc_conf.c b/src/lxc/lxc_conf.c
index 2df1537b22..803176f52b 100644
--- a/src/lxc/lxc_conf.c
+++ b/src/lxc/lxc_conf.c
@@ -186,7 +186,7 @@  virCapsPtr virLXCDriverGetCapabilities(virLXCDriverPtr driver,
                                        bool refresh)
 {
     virCapsPtr ret;
-    if (refresh) {
+    if (refresh || !driver->caps) {
         virCapsPtr caps = NULL;
         if ((caps = virLXCDriverCapsInit(driver)) == NULL)
             return NULL;