mm/damon/sysfs: remove damon_sysfs_cmd_request code from damon_sysfs_handle_cmd()

damon_sysfs_handle_cmd() handles user requests that it can directly handle
on its own.  For requests that need to be handled from damon_callback
hooks, it uses DAMON sysfs interface's own synchronous damon_callback
hooks management mechanism, namely damon_sysfs_cmd_request.  Now all user
requests are handled without damon_callback hooks, so
damon_sysfs_cmd_request client code in damon_sysfs_andle_cmd() does
nothing in real.  Remove the unnecessary code.

Link: https://lkml.kernel.org/r/20250306175908.66300-6-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
SeongJae Park 2025-03-06 09:59:00 -08:00 committed by Andrew Morton
parent 3301f1861d
commit 8b40db0edf

View File

@ -1715,8 +1715,6 @@ static int damon_sysfs_update_schemes_tried_regions(
static int damon_sysfs_handle_cmd(enum damon_sysfs_cmd cmd,
struct damon_sysfs_kdamond *kdamond)
{
bool need_wait = true;
switch (cmd) {
case DAMON_SYSFS_CMD_ON:
return damon_sysfs_turn_damon_on(kdamond);
@ -1747,38 +1745,8 @@ static int damon_sysfs_handle_cmd(enum damon_sysfs_cmd cmd,
return damon_sysfs_damon_call(
damon_sysfs_upd_tuned_intervals, kdamond);
default:
break;
}
/* Pass the command to DAMON callback for safe DAMON context access */
if (damon_sysfs_cmd_request.kdamond)
return -EBUSY;
if (!damon_sysfs_kdamond_running(kdamond))
return -EINVAL;
damon_sysfs_cmd_request.cmd = cmd;
damon_sysfs_cmd_request.kdamond = kdamond;
/*
* wait until damon_sysfs_cmd_request_callback() handles the request
* from kdamond context
*/
mutex_unlock(&damon_sysfs_lock);
while (need_wait) {
schedule_timeout_idle(msecs_to_jiffies(100));
if (!mutex_trylock(&damon_sysfs_lock))
continue;
if (!damon_sysfs_cmd_request.kdamond) {
/* damon_sysfs_cmd_request_callback() handled */
need_wait = false;
} else if (!damon_sysfs_kdamond_running(kdamond)) {
/* kdamond has already finished */
need_wait = false;
damon_sysfs_cmd_request.kdamond = NULL;
}
mutex_unlock(&damon_sysfs_lock);
}
mutex_lock(&damon_sysfs_lock);
return 0;
}
static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr,