mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-23 07:23:12 +02:00
mm/damon/core: pass per-region filter-passed bytes to damos_walk_control->walk_fn()
Total size of memory that passed DAMON operations set layer-handled DAMOS filters per scheme is provided to DAMON core API and ABI (sysfs interface) users. Having it per-region in non-accumulated way can provide it in finer granularity. Provide it to damos_walk() core API users, by passing the data to damos_walk_control->walk_fn(). Link: https://lkml.kernel.org/r/20250106193401.109161-13-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
e1a1d377e4
commit
cfc33a7d2d
|
@ -388,7 +388,7 @@ struct damos;
|
|||
struct damos_walk_control {
|
||||
void (*walk_fn)(void *data, struct damon_ctx *ctx,
|
||||
struct damon_target *t, struct damon_region *r,
|
||||
struct damos *s);
|
||||
struct damos *s, unsigned long sz_filter_passed);
|
||||
void *data;
|
||||
/* private: internal use only */
|
||||
/* informs if the kdamond finished handling of the walk request */
|
||||
|
|
|
@ -1445,7 +1445,8 @@ static bool damos_filter_out(struct damon_ctx *ctx, struct damon_target *t,
|
|||
* installed by damos_walk() and not yet uninstalled, invoke it.
|
||||
*/
|
||||
static void damos_walk_call_walk(struct damon_ctx *ctx, struct damon_target *t,
|
||||
struct damon_region *r, struct damos *s)
|
||||
struct damon_region *r, struct damos *s,
|
||||
unsigned long sz_filter_passed)
|
||||
{
|
||||
struct damos_walk_control *control;
|
||||
|
||||
|
@ -1454,7 +1455,7 @@ static void damos_walk_call_walk(struct damon_ctx *ctx, struct damon_target *t,
|
|||
mutex_unlock(&ctx->walk_control_lock);
|
||||
if (!control)
|
||||
return;
|
||||
control->walk_fn(control->data, ctx, t, r, s);
|
||||
control->walk_fn(control->data, ctx, t, r, s, sz_filter_passed);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1574,7 +1575,7 @@ static void damos_apply_scheme(struct damon_ctx *c, struct damon_target *t,
|
|||
sz_applied = c->ops.apply_scheme(c, t, r, s,
|
||||
&sz_ops_filter_passed);
|
||||
}
|
||||
damos_walk_call_walk(c, t, r, s);
|
||||
damos_walk_call_walk(c, t, r, s, sz_ops_filter_passed);
|
||||
ktime_get_coarse_ts64(&end);
|
||||
quota->total_charged_ns += timespec64_to_ns(&end) -
|
||||
timespec64_to_ns(&begin);
|
||||
|
|
|
@ -1454,7 +1454,7 @@ struct damon_sysfs_schemes_walk_data {
|
|||
/* populate the region directory */
|
||||
static void damon_sysfs_schemes_tried_regions_upd_one(void *data, struct damon_ctx *ctx,
|
||||
struct damon_target *t, struct damon_region *r,
|
||||
struct damos *s)
|
||||
struct damos *s, unsigned long sz_filter_passed)
|
||||
{
|
||||
struct damon_sysfs_schemes_walk_data *walk_data = data;
|
||||
struct damon_sysfs_kdamond *sysfs_kdamond = walk_data->sysfs_kdamond;
|
||||
|
|
Loading…
Reference in New Issue
Block a user