Commit e2fbfeda authored by SeongJae Park's avatar SeongJae Park Committed by Andrew Morton
Browse files

mm/damon: add 'allow' argument to damos_new_filter()

DAMON API users should set damos_filter->allow manually to use a DAMOS
allow-filter, since damos_new_filter() unsets the field always.  It is
cumbersome and easy to mistake.  Add an arugment for setting the field to
damos_new_filter().

Link: https://lkml.kernel.org/r/20250109175126.57878-6-sj@kernel.org


Signed-off-by: default avatarSeongJae Park <sj@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 283cbc00
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -801,7 +801,7 @@ void damon_update_region_access_rate(struct damon_region *r, bool accessed,
		struct damon_attrs *attrs);

struct damos_filter *damos_new_filter(enum damos_filter_type type,
		bool matching);
		bool matching, bool allow);
void damos_add_filter(struct damos *s, struct damos_filter *f);
void damos_destroy_filter(struct damos_filter *f);

+4 −3
Original line number Diff line number Diff line
@@ -266,7 +266,7 @@ int damon_set_regions(struct damon_target *t, struct damon_addr_range *ranges,
}

struct damos_filter *damos_new_filter(enum damos_filter_type type,
		bool matching)
		bool matching, bool allow)
{
	struct damos_filter *filter;

@@ -275,7 +275,7 @@ struct damos_filter *damos_new_filter(enum damos_filter_type type,
		return NULL;
	filter->type = type;
	filter->matching = matching;
	filter->allow = false;
	filter->allow = allow;
	INIT_LIST_HEAD(&filter->list);
	return filter;
}
@@ -806,7 +806,8 @@ static int damos_commit_filters(struct damos *dst, struct damos *src)
			continue;

		new_filter = damos_new_filter(
				src_filter->type, src_filter->matching);
				src_filter->type, src_filter->matching,
				src_filter->allow);
		if (!new_filter)
			return -ENOMEM;
		damos_commit_filter_arg(new_filter, src_filter);
+2 −1
Original line number Diff line number Diff line
@@ -259,7 +259,8 @@ static unsigned long damon_pa_pageout(struct damon_region *r, struct damos *s,
		}
	}
	if (install_young_filter) {
		filter = damos_new_filter(DAMOS_FILTER_TYPE_YOUNG, true);
		filter = damos_new_filter(
				DAMOS_FILTER_TYPE_YOUNG, true, false);
		if (!filter)
			return 0;
		damos_add_filter(s, filter);
+1 −1
Original line number Diff line number Diff line
@@ -221,7 +221,7 @@ static int damon_reclaim_apply_parameters(void)
	}

	if (skip_anon) {
		filter = damos_new_filter(DAMOS_FILTER_TYPE_ANON, true);
		filter = damos_new_filter(DAMOS_FILTER_TYPE_ANON, true, false);
		if (!filter)
			goto out;
		damos_add_filter(scheme, filter);
+1 −1
Original line number Diff line number Diff line
@@ -1901,7 +1901,7 @@ static int damon_sysfs_add_scheme_filters(struct damos *scheme,
			sysfs_filters->filters_arr[i];
		struct damos_filter *filter =
			damos_new_filter(sysfs_filter->type,
					sysfs_filter->matching);
					sysfs_filter->matching, false);
		int err;

		if (!filter)
Loading