<div dir="ltr"><div>Hi Li, <br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 11, 2022 at 2:51 AM Li Wang <<a href="mailto:liwang@redhat.com">liwang@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> +# Find mountpoint of the given controller<br>
> +# USAGE: cgroup_get_mountpoint CONTROLLER<br>
> +# RETURNS: Prints the mountpoint of the given controller<br>
> +# Must call cgroup_require before calling<br>
> +cgroup_get_mountpoint()<br>
> +{<br>
> +       local ctrl=$1<br>
> +       local mountpoint<br>
> +<br>
> +       [ $# -eq 0 ] && tst_brk TBROK "cgroup_get_mountpoint: controller not defined"<br>
> +       [ "$_cgroup_state" = "" ] && tst_brk TBROK "cgroup_get_mountpoint: No previous state found. Forgot to call cgroup_require?"<br>
> +<br>
> +       mountpoint=$(echo "$_cgroup_state" | grep -w "$ctrl" | awk '{ print $4 }')<br>
> +       echo "$mountpoint"<br>
> +<br>
> +       return 0<br>
> +}<br>
> +<br>
> +# Get the test path of a given controller that has been created by the cgroup C API<br>
> +# USAGE: cgroup_get_test_path CONTROLLER<br>
> +# RETURNS: Prints the path to the test direcory<br>
> +# Must call cgroup_require before calling<br>
> +cgroup_get_test_path()<br>
> +{<br>
> +       local ctrl="$1"<br>
> +       local mountpoint<br>
> +       local test_path<br>
> +<br>
> +       [ $# -eq 0 ] && tst_brk TBROK "cgroup_get_test_path: controller not defined"<br>
> +       [ "$_cgroup_state" = "" ] && tst_brk TBROK "cgroup_get_test_path: No previous state found. Forgot to call cgroup_require?"<br>
> +<br>
> +       mountpoint=$(cgroup_get_mountpoint "$ctrl")<br>
> +<br>
> +       test_path="$mountpoint/ltp/test-$$"<br>
> +<br>
> +       [ ! -d "$test_path" ] && tst_brk TBROK "cgroup_get_test_path: No test path found. Forgot to call cgroup_require?"<br>
> +<br>
> +       echo "$test_path"<br>
> +<br>
> +       return 0<br>
> +}<br>
> +<br>
> +# Gets the cgroup version of the given controller<br>
> +# USAGE: cgroup_get_version CONTROLLER<br>
> +# RETURNS: "V1" if version 1 and "V2" if version 2<br>
> +# Must call cgroup_require before calling<br>
> +cgroup_get_version()<br>
> +{<br>
> +       local ctrl="$1"<br>
> +<br>
> +       [ $# -eq 0 ] && tst_brk TBROK "cgroup_get_version: controller not defined"<br>
> +       [ "$_cgroup_state" = "" ] && tst_brk TBROK "cgroup_get_version: No previous state found. Forgot to call cgroup_require?"<br>
> +<br>
> +       version=$(echo "$_cgroup_state" | grep -w "$ctrl" | awk '{ print $2 }')<br>
<br>
This won't work on my x86_64 KVM platform, maybe we need: grep -w "^$ctrl".<br>
<br>
# echo $$<br>
1801<br>
<br>
# ./tst_cgctl require memory 1801<br>
Detected Controllers:<br>
memory V1 @ /sys/fs/cgroup/memory Required<br>
cpu V1 @ /sys/fs/cgroup/cpu,cpuacct<br>
cpuset V1 @ /sys/fs/cgroup/cpuset<br>
Detected Roots:<br>
/sys/fs/cgroup/memory Mounted_Root=no Created_Ltp_Dir=no<br>
Created_Drain_Dir=no Test_Id=test-1801<br>
/sys/fs/cgroup/cpu,cpuacct Mounted_Root=no Created_Ltp_Dir=no<br>
Created_Drain_Dir=no Test_Id=NULL<br>
/sys/fs/cgroup/cpuset Mounted_Root=no Created_Ltp_Dir=no<br>
Created_Drain_Dir=no Test_Id=NULL<br>
<br>
# _cgroup_state=$(./tst_cgctl require memory 1801)<br>
<br>
# echo "$_cgroup_state" | grep -w "memory" | awk '{ print $2 }'<br>
V1<br>
Mounted_Root=no<br>
<br>
# echo "$_cgroup_state" | grep -w "memory" | awk '{ print $4 }'<br>
/sys/fs/cgroup/memory<br>
Created_Drain_Dir=no<br>
<br>
# ./tst_cgctl cleanup "$_cgroup_state"<br>
tst_cgroup.c:414: TBROK: Could not find root from config. Roots<br>
changing between calls?<br>
<br>
<br>
> +       [ "$version" = "" ] && tst_brk TBROK "cgroup_get_version: Could not find controller $ctrl"<br>
> +<br>
> +       echo "$version"<br>
> +<br>
> +       return 0<br>
> +}<br>
> +<br>
<br></blockquote><div><br></div><div>Ah I see that the grepping goes awry when there is already a V1 controller which has the controller name in the mount path. Thank you for checking this, I will fix this in the next version.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
-- <br>
Regards,<br>
Li Wang<br>
<br></blockquote><div><br></div><div>Thanks for the review,</div><div>- Luke<br></div></div></div>