mirror of
https://github.com/torvalds/linux.git
synced 2026-05-21 13:27:57 +02: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:
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};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user