]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/damon/sysfs: remove damon_sysfs_cmd_request code from damon_sysfs_handle_cmd()
authorSeongJae Park <sj@kernel.org>
Thu, 6 Mar 2025 17:59:00 +0000 (09:59 -0800)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 18 Mar 2025 05:06:55 +0000 (22:06 -0700)
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>
mm/damon/sysfs.c

index c55a2cee4b749df4916eb40ee221ac4cf8f00beb..166161f12c2605825d490039d53a73f53b4b69ee 100644 (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,