[libvirt] [PATCH 06/53] vircgroup: introduce virCgroupV2DetectMounts

Pavel Hrdina phrdina at redhat.com
Thu Oct 4 12:01:36 UTC 2018


On Thu, Oct 04, 2018 at 01:18:21PM +0200, Michal Privoznik wrote:
> On 10/02/2018 10:43 AM, Pavel Hrdina wrote:
> > Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> > ---
> >  src/util/vircgroupv2.c | 16 ++++++++++++++++
> >  1 file changed, 16 insertions(+)
> > 
> > diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c
> > index 11d9876d36..eaf07397d5 100644
> > --- a/src/util/vircgroupv2.c
> > +++ b/src/util/vircgroupv2.c
> > @@ -167,6 +167,21 @@ virCgroupV2CopyPlacement(virCgroupPtr group,
> >  }
> >  
> >  
> > +static int
> > +virCgroupV2DetectMounts(virCgroupPtr group,
> > +                        const char *mntType,
> > +                        const char *mntOpts ATTRIBUTE_UNUSED,
> > +                        const char *mntDir)
> > +{
> > +    if (STRNEQ(mntType, "cgroup2"))
> > +        return 0;
> > +
> > +    VIR_FREE(group->unified.mountPoint);
> > +
> > +    return VIR_STRDUP(group->unified.mountPoint, mntDir);
> 
> Looking at virCgroupDetectMounts() maybe we could have a new return
> value to stop going through mount table once we've found what we were
> looking for? E.g. -1 = an error, 0 not found but continue, 1 found and
> break the loop.
> 
> Because the way this is written now - this will always pick up the last
> cgroup2 mount. I don't think that is a problem right now. Also, probably
> if you have more than one mount of cgroup2 then you're in a bigger
> trouble anyway. If you decide to work my suggestion in, then it can be
> saved as a follow up patch.

So I should have probably used the same comment from cgroup v1 backend.

We do it there as well because of bind mounts and we are taking
into account only the last entry from /proc/mounts.

See commit <dacd160d747> for more information.  I don't know whether it
can/will happen for cgroup v2.

> 
> > +}
> > +
> > +
> >  virCgroupBackend virCgroupV2Backend = {
> >      .type = VIR_CGROUP_BACKEND_TYPE_V2,
> >  
> > @@ -174,6 +189,7 @@ virCgroupBackend virCgroupV2Backend = {
> >      .validateMachineGroup = virCgroupV2ValidateMachineGroup,
> >      .copyMounts = virCgroupV2CopyMounts,
> >      .copyPlacement = virCgroupV2CopyPlacement,
> > +    .detectMounts = virCgroupV2DetectMounts,
> >  };
> >  
> >  
> > 
> 
> 
> ACK
> 
> Michal
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20181004/999d68c5/attachment-0001.sig>


More information about the libvir-list mailing list