[libvirt PATCH 1/3] vircgroup: introduce virCgroupGetInode function
Pavel Hrdina
phrdina at redhat.com
Wed Aug 4 08:32:20 UTC 2021
On Wed, Aug 04, 2021 at 10:26:41AM +0200, Michal Prívozník wrote:
> On 8/4/21 10:22 AM, Pavel Hrdina wrote:
> > On Wed, Aug 04, 2021 at 10:06:17AM +0200, Michal Prívozník wrote:
> >> On 8/3/21 4:29 PM, Pavel Hrdina wrote:
> >>> For new feature Fibre Channel VMID we will need to get inode of the
> >>> VM root cgroup as it is used in the new kernel API together with VMID.
> >>>
> >>> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> >>> ---
> >>> src/libvirt_private.syms | 1 +
> >>> src/util/vircgroup.c | 37 +++++++++++++++++++++++++++++++++++++
> >>> src/util/vircgroup.h | 2 ++
> >>> 3 files changed, 40 insertions(+)
> >>>
> >>> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> >>> index 6961cdb137..d8451fcfff 100644
> >>> --- a/src/libvirt_private.syms
> >>> +++ b/src/libvirt_private.syms
> >>> @@ -1920,6 +1920,7 @@ virCgroupGetCpuShares;
> >>> virCgroupGetDevicePermsString;
> >>> virCgroupGetDomainTotalCpuStats;
> >>> virCgroupGetFreezerState;
> >>> +virCgroupGetInode;
> >>> virCgroupGetMemoryHardLimit;
> >>> virCgroupGetMemorySoftLimit;
> >>> virCgroupGetMemoryStat;
> >>> diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
> >>> index 1b3b28342e..ea702e7b63 100644
> >>> --- a/src/util/vircgroup.c
> >>> +++ b/src/util/vircgroup.c
> >>> @@ -3973,3 +3973,40 @@ virCgroupGetCpuPeriodQuota(virCgroup *cgroup, unsigned long long *period,
> >>>
> >>> return 0;
> >>> }
> >>> +
> >>> +
> >>> +/**
> >>> + * virCgroupGetInode:
> >>> + *
> >>> + * @cgroup: the cgroup to get inode for
> >>> + *
> >>> + * Get the @cgroup inode and return its value to the caller.
> >>> + *
> >>> + * Returns inode on success, -1 on error with error message reported.
> >>> + */
> >>> +int
> >>> +virCgroupGetInode(virCgroup *cgroup)
> >>> +{
> >>> + VIR_AUTOCLOSE fd = 0;
> >>> + struct stat st;
> >>> + int controller = virCgroupGetAnyController(cgroup);
> >>> + g_autofree char *path = NULL;
> >>> +
> >>> + if (controller < 0)
> >>> + return -1;
> >>> +
> >>> + if (virCgroupPathOfController(cgroup, controller, "", &path) < 0)
> >>> + return -1;
> >>> +
> >>> + if ((fd = open(path, O_RDONLY | O_NONBLOCK)) < 0) {
> >>> + virReportSystemError(errno, _("failed to open cgroup '%s'"), path);
> >>> + return -1;
> >>> + }
> >>
> >> Is the open() necessary? Why isn't plain stat() enough?
> >
> > Good question :) I was lazy so I looked for first similar code in
> > libvirt codebase and copied it. You are right, stat should be enough
> > as according to man page stat and fstat are identical except or the
> > fd vs path parameter. I'll fix it before pushing or should I send a v2?
>
> No need, just drop open() and switch to stat() before pushing. My
> Reviewed-by still applies.
OK, will do. Thanks for review!
Pavel
-------------- 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/20210804/3ef3668b/attachment-0001.sig>
More information about the libvir-list
mailing list