mm-damon-sysfs-implement-a-kdamond-command-for-updating-schemes-effective-quotas.patch removed from -mm tree
The quilt patch titled
Subject: mm/damon/sysfs: implement a kdamond command for updating schemes' effective quotas
has been removed from the -mm tree. Its filename was
mm-damon-sysfs-implement-a-kdamond-command-for-updating-schemes-effective-quotas.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: SeongJae Park <[email protected]>
Subject: mm/damon/sysfs: implement a kdamond command for updating schemes' effective quotas
Date: Mon, 19 Feb 2024 11:44:14 -0800
Implement yet another kdamond 'state' file input command, namely 'update_schemes_effective_quotas'. If it is written, the 'effective_bytes' files of the kdamond will be updated to provide the current effective size quota of each scheme in bytes.
---
mm/damon/sysfs-common.h | 4 ++++ mm/damon/sysfs-schemes.c | 20 ++++++++++++++++++++ mm/damon/sysfs.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+)
mm/damon/sysfs.c renamed from mm/damon/sysfs.c~mm-damon-sysfs-implement-a-kdamond-command-for-updating-schemes-effective-quotas +32 -0
@@ -1020,6 +1020,11 @@ enum damon_sysfs_cmd {*/ DAMON_SYSFS_CMD_CLEAR_SCHEMES_TRIED_REGIONS ,/* +* @DAMON_SYSFS_CMD_UPDATE_SCHEMES_EFFECTIVE_QUOTAS: Update the +* effective size quota of the scheme in bytes. +*/ +DAMON_SYSFS_CMD_UPDATE_SCHEMES_EFFECTIVE_QUOTAS , +/* * @NR_DAMON_SYSFS_CMDS: Total number of DAMON sysfs commands. */ NR_DAMON_SYSFS_CMDS,
@@ -1035,6 +1040,7 @@ static const char * const damon_sysfs_cm"update_schemes_tried_bytes" ,"update_schemes_tried_regions" ,"clear_schemes_tried_regions" , + "update_schemes_effective_quotas", };/*
@@ -1376,6 +1382,29 @@ static int damon_sysfs_commit_schemes_qu }/* +* damon_sysfs_upd_schemes_effective_quotas() - Update schemes effective quotas +* sysfs files. +* @kdamond: The kobject wrapper that associated to the kdamond thread. +* +* This function reads the schemes' effective quotas of specific kdamond and +* update the related values for sysfs files. This function should be called +* from DAMON callbacks while holding ``damon_syfs_lock``, to safely access the +* DAMON contexts-internal data and DAMON sysfs variables. +*/ +static int damon_sysfs_upd_schemes_effective_quotas ( +struct damon_sysfs_kdamond *kdamond) +{ +struct damon_ctx *ctx = kdamond->damon_ctx; + +if (!ctx) +return -EINVAL ; +damos_sysfs_update_effective_quotas ( + kdamond->contexts->contexts_arr[0 ]->schemes, ctx); +return 0 ; +} + + +/* * damon_sysfs_cmd_request_callback() - DAMON callback for handling requests. * @c: The DAMON context of the callback. * @active: Whether @c is not deactivated due to watermarks.
@@ -1437,6 +1466,9 @@ static int damon_sysfs_cmd_request_callbcase DAMON_SYSFS_CMD_CLEAR_SCHEMES_TRIED_REGIONS : err =damon_sysfs_clear_schemes_regions (kdamond);break ; +case DAMON_SYSFS_CMD_UPDATE_SCHEMES_EFFECTIVE_QUOTAS : + err =damon_sysfs_upd_schemes_effective_quotas (kdamond); +break ;default :break ; }
mm/damon/sysfs-common.h renamed from mm/damon/sysfs-common.h~mm-damon-sysfs-implement-a-kdamond-command-for-updating-schemes-effective-quotas +4 -0
@@ -61,3 +61,7 @@ int damon_sysfs_schemes_clear_regions(void damos_sysfs_set_quota_scores (struct damon_sysfs_schemes *sysfs_schemes,struct damon_ctx *ctx); + +void damos_sysfs_update_effective_quotas ( +struct damon_sysfs_schemes *sysfs_schemes, +struct damon_ctx *ctx);
mm/damon/sysfs-schemes.c renamed from mm/damon/sysfs-schemes.c~mm-damon-sysfs-implement-a-kdamond-command-for-updating-schemes-effective-quotas +20 -0
@@ -1930,6 +1930,26 @@ void damos_sysfs_set_quota_scores(struct } } +void damos_sysfs_update_effective_quotas ( +struct damon_sysfs_schemes *sysfs_schemes, +struct damon_ctx *ctx) +{ +struct damos *scheme; +int schemes_idx =0 ; + +damon_for_each_scheme (scheme, ctx) { +struct damon_sysfs_quotas *sysfs_quotas; + +/* user could have removed the scheme sysfs dir */ +if (schemes_idx >= sysfs_schemes->nr) +break ; + + sysfs_quotas = + sysfs_schemes->schemes_arr[schemes_idx++]->quotas; + sysfs_quotas->effective_sz = scheme->quota.esz; + } +} +static struct damos *damon_sysfs_mk_scheme (struct damon_sysfs_scheme *sysfs_scheme) {
_
Patches currently in -mm which might be from [email protected] are