[LTP] Do we have some simple way to get the current cgroup.procs path?

xuyang2018.jy@fujitsu.com xuyang2018.jy@fujitsu.com
Thu Jul 21 02:59:02 CEST 2022


Hi  Richard
> Hello,
> 
> "xuyang2018.jy@fujitsu.com" <xuyang2018.jy@fujitsu.com> writes:
> 
>> Hi Li
>>> Hi Xu,
>>>
>>> On Thu, Jul 14, 2022 at 2:02 PM xuyang2018.jy@fujitsu.com
>>> <mailto:xuyang2018.jy@fujitsu.com> <xuyang2018.jy@fujitsu.com
>>> <mailto:xuyang2018.jy@fujitsu.com>> wrote:
>>>
>>>      Hi Richard, LI
>>>
>>>      I am writting a simple regression test[1]that refer to kernel
>>>      selftest cgroup test_core[2]. I may name it as memcontrol05.c.
>>>
>>>      It tests cgroup migration permission check should be performed based
>>>      on the credentials at the time of open instead of write.
>>>
>>>      I have used ltp cgroup framework, but ltp cgroup only use
>>>      SAFE_CGROUP_PRINTF to write value.
>>>
>>>      How can get the cgroup root_dir ltp_dir path? So I can open this fd
>>>      and change/save effective uid between open and write?
>>>
>>> Not sure if I fully understand your requirements.
>>> Can we achieve this test by creating a two-layer subdirectory?
>>
>> I think yes.
> 
> I think you must have multiple layers. Otherwise you could break other
> tests running in parallel.
> 
>>
>>>
>>> Does only the root/ltp_dir mandatory for completing your test?
>>
>> It also need gettid subdirectory and cgroup name.
> 
> You could create an accessor function in the library to get dir_fd from
> cgroup_dir.
> 
> This is complicated by V1 CGs where a tst_cg_group can have multiple
> struct cgroup_dir's. This isn't a problem for selftests because they
> only support V2, but it would be nice to make as many tests as possible
> work with V1.
> 

Yes, this bug exists on both v1 and v2.

> The easiest solution I can think of is to write a library function like
> SAFE_CG_GROUP_EACH_DIR(void (*const fn_ptr)(int dir_fd)) which takes a
> const function pointer and executes it with the FD of each
> directory. Then you can use the internal for_each_dir macro like
> SAFE_CGROUP_PRINTF.
> 

Thanks, I will try this.

Best Regards
Yang Xu
>>> If yes, I think tst_cg_print_config() maybe fits your purpose,
>>> but that would need additional function help extracting that.
>>>
>>> Take a reference to see how Luke gets the root path (in shell):
>>> https://lists.linux.it/pipermail/ltp/2022-April/028772.html
>>> <https://lists.linux.it/pipermail/ltp/2022-April/028772.html>
>>
>> Thanks, I prefer to use c api and will think about it continuely.
>>
>> Best Regards
>> Yang Xu
>>>
>>>
>>> -- 
>>> Regards,
>>> Li Wang
> 
> 


More information about the ltp mailing list