diff mbox series

[v2,-next,1/3] mm/hugetlb_cgroup: identify the legacy using cgroup_subsys_on_dfl()

Message ID 20240605070133.1941677-2-xiujianfeng@huawei.com (mailing list archive)
State New
Headers show
Series mm/hugetlb_cgroup: rework on cftypes | expand

Commit Message

Xiu Jianfeng June 5, 2024, 7:01 a.m. UTC
Currently the numa_stat file encodes 1 into private using the micro
MEMFILE_PRIVATE() to identify the legacy. Actually, we can use
cgroup_subsys_on_dfl() instead. This is helpful to handle .private
in the static array of the comming patch.

Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>
---
 mm/hugetlb_cgroup.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Oscar Salvador June 10, 2024, 5:03 a.m. UTC | #1
On Wed, Jun 05, 2024 at 07:01:31AM +0000, Xiu Jianfeng wrote:
> Currently the numa_stat file encodes 1 into private using the micro
> MEMFILE_PRIVATE() to identify the legacy. Actually, we can use
> cgroup_subsys_on_dfl() instead. This is helpful to handle .private
> in the static array of the comming patch.
> 
> Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>

Reviewed-by: Oscar Salvador <osalvador@suse.de>

Nit below:

> ---
>  mm/hugetlb_cgroup.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c
> index e20339a346b9..45f94a869776 100644
> --- a/mm/hugetlb_cgroup.c
> +++ b/mm/hugetlb_cgroup.c
> @@ -460,7 +460,7 @@ static int hugetlb_cgroup_read_numa_stat(struct seq_file *seq, void *dummy)
>  	int nid;
>  	struct cftype *cft = seq_cft(seq);
>  	int idx = MEMFILE_IDX(cft->private);
> -	bool legacy = MEMFILE_ATTR(cft->private);
> +	bool legacy = !cgroup_subsys_on_dfl(hugetlb_cgrp_subsys);
>  	struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(seq_css(seq));
>  	struct cgroup_subsys_state *css;
>  	unsigned long usage;
> @@ -839,7 +839,7 @@ static void __init __hugetlb_cgroup_file_legacy_init(int idx)
>  	/* Add the numa stat file */
>  	cft = &h->cgroup_files_legacy[8];
>  	snprintf(cft->name, MAX_CFTYPE_NAME, "%s.numa_stat", buf);
> -	cft->private = MEMFILE_PRIVATE(idx, 1);
> +	cft->private = MEMFILE_PRIVATE(idx, 0);

Do we still have to set it to '0'?
Is it not by default?
Xiu Jianfeng June 11, 2024, 2:28 a.m. UTC | #2
On 2024/6/10 13:03, Oscar Salvador wrote:
> On Wed, Jun 05, 2024 at 07:01:31AM +0000, Xiu Jianfeng wrote:
>> Currently the numa_stat file encodes 1 into private using the micro
>> MEMFILE_PRIVATE() to identify the legacy. Actually, we can use
>> cgroup_subsys_on_dfl() instead. This is helpful to handle .private
>> in the static array of the comming patch.
>>
>> Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>
> 
> Reviewed-by: Oscar Salvador <osalvador@suse.de>
> 
> Nit below:
> 
>> ---
>>  mm/hugetlb_cgroup.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c
>> index e20339a346b9..45f94a869776 100644
>> --- a/mm/hugetlb_cgroup.c
>> +++ b/mm/hugetlb_cgroup.c
>> @@ -460,7 +460,7 @@ static int hugetlb_cgroup_read_numa_stat(struct seq_file *seq, void *dummy)
>>  	int nid;
>>  	struct cftype *cft = seq_cft(seq);
>>  	int idx = MEMFILE_IDX(cft->private);
>> -	bool legacy = MEMFILE_ATTR(cft->private);
>> +	bool legacy = !cgroup_subsys_on_dfl(hugetlb_cgrp_subsys);
>>  	struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(seq_css(seq));
>>  	struct cgroup_subsys_state *css;
>>  	unsigned long usage;
>> @@ -839,7 +839,7 @@ static void __init __hugetlb_cgroup_file_legacy_init(int idx)
>>  	/* Add the numa stat file */
>>  	cft = &h->cgroup_files_legacy[8];
>>  	snprintf(cft->name, MAX_CFTYPE_NAME, "%s.numa_stat", buf);
>> -	cft->private = MEMFILE_PRIVATE(idx, 1);
>> +	cft->private = MEMFILE_PRIVATE(idx, 0);
> 
> Do we still have to set it to '0'?
> Is it not by default?
> 

Hi Oscar,

Thanks for your review.

Not all files care about the value of the second argument of
MEMFILE_PRIVATE(), but all files care about the value of the first
argument 'idx', so the .private must be explicitly set, and passing 0 as
the second argument can be treated as 'not caring what its value is'.

Setting it to 0 or 1 does not affect the functionality, but it makes the
semantics more clear, IMO.

However, you've reminded me that the reassignment of .private in the
second patch is problematic, and I will make a comment on that patch.
diff mbox series

Patch

diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c
index e20339a346b9..45f94a869776 100644
--- a/mm/hugetlb_cgroup.c
+++ b/mm/hugetlb_cgroup.c
@@ -460,7 +460,7 @@  static int hugetlb_cgroup_read_numa_stat(struct seq_file *seq, void *dummy)
 	int nid;
 	struct cftype *cft = seq_cft(seq);
 	int idx = MEMFILE_IDX(cft->private);
-	bool legacy = MEMFILE_ATTR(cft->private);
+	bool legacy = !cgroup_subsys_on_dfl(hugetlb_cgrp_subsys);
 	struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(seq_css(seq));
 	struct cgroup_subsys_state *css;
 	unsigned long usage;
@@ -839,7 +839,7 @@  static void __init __hugetlb_cgroup_file_legacy_init(int idx)
 	/* Add the numa stat file */
 	cft = &h->cgroup_files_legacy[8];
 	snprintf(cft->name, MAX_CFTYPE_NAME, "%s.numa_stat", buf);
-	cft->private = MEMFILE_PRIVATE(idx, 1);
+	cft->private = MEMFILE_PRIVATE(idx, 0);
 	cft->seq_show = hugetlb_cgroup_read_numa_stat;
 
 	/* NULL terminate the last cft */