mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
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: SeongJae Park <sj@kernel.org> Cc: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
283cbc006f
commit
e2fbfedad0
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -411,7 +411,7 @@ static void damos_test_new_filter(struct kunit *test)
|
||||
{
|
||||
struct damos_filter *filter;
|
||||
|
||||
filter = damos_new_filter(DAMOS_FILTER_TYPE_ANON, true);
|
||||
filter = damos_new_filter(DAMOS_FILTER_TYPE_ANON, true, false);
|
||||
KUNIT_EXPECT_EQ(test, filter->type, DAMOS_FILTER_TYPE_ANON);
|
||||
KUNIT_EXPECT_EQ(test, filter->matching, true);
|
||||
KUNIT_EXPECT_PTR_EQ(test, filter->list.prev, &filter->list);
|
||||
@@ -425,7 +425,7 @@ static void damos_test_filter_out(struct kunit *test)
|
||||
struct damon_region *r, *r2;
|
||||
struct damos_filter *f;
|
||||
|
||||
f = damos_new_filter(DAMOS_FILTER_TYPE_ADDR, true);
|
||||
f = damos_new_filter(DAMOS_FILTER_TYPE_ADDR, true, false);
|
||||
f->addr_range = (struct damon_addr_range){
|
||||
.start = DAMON_MIN_REGION * 2, .end = DAMON_MIN_REGION * 6};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user