mm/damon/core: hide private damon_region fields

Patch series "mm/damon/core: hide core-private struct fields".

DAMON core structs hide core-private fields using 'private:' comment tags.
It is incomplete and inconsistent.  The linked list heads in a few
structs, for example, are intended to be hidden, and always be used using
the wrapper macros like damon_for_each_region().  But those were
mistakenly marked as non-private.  A few core layer-only fields were also
mistakenly added as non-private.

This only encourages callers to directly use the private fields.  It is
easy to make mistakes, and difficult to control.  Mark all such DAMON core
struct fields as private.

Patches 1-8 mark the private fields for damon_region, damon_target,
damos_quota_goal, damos_quota, damos_filter, damos, damon_filter and
damon_probe, respectively.  Patch 9 removes DAMON_SYSFS's direct access to
core-private field, damon_ctx->ops.  Finally patch 10 mark the private
fields for damon_ctx.


This patch (of 10):

damon_region->list is intended to be used by only the DAMON core layer. 
But it is mistakenly not marked as private.  Hide it from the callers by
marking it private.

Link: https://lore.kernel.org/20260714143544.101305-1-sj@kernel.org
Link: https://lore.kernel.org/20260714143544.101305-2-sj@kernel.org
Signed-off-by: SJ Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
SJ Park 2026-07-14 07:35:34 -07:00 committed by Andrew Morton
parent 5c3746a0fe
commit e0ea9467db

View File

@ -46,7 +46,6 @@ struct damon_size_range {
* @sampling_addr: Address of the sample for the next access check.
* @nr_accesses: Access frequency of this region.
* @probe_hits: Number of probe-positive region samples.
* @list: List head for siblings.
* @age: Age of this region.
*
* For any use case, @ar should be non-zero positive size. damon_set_regions()
@ -68,9 +67,11 @@ struct damon_region {
unsigned long sampling_addr;
unsigned int nr_accesses;
unsigned char probe_hits[DAMON_MAX_PROBES];
struct list_head list;
unsigned int age;
/* private: Internal value for age calculation. */
/* private: internal use only. */
/* List head for siblings. */
struct list_head list;
/* for age calculation. */
unsigned int last_nr_accesses;
unsigned char last_probe_hits[DAMON_MAX_PROBES];
};