mirror of
https://github.com/torvalds/linux.git
synced 2026-05-13 00:28:54 +02:00
mm/damon/sysfs-schemes: implement path file under quota goal directory
Add a DAMOS sysfs file for specifying the cgroup of the interest for DAMOS_QUOTA_NODE_MEMCG_USED_BP. Link: https://lkml.kernel.org/r/20251017212706.183502-5-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:
parent
b74a120bcf
commit
c41e253a41
|
|
@ -999,6 +999,7 @@ struct damos_sysfs_quota_goal {
|
|||
unsigned long target_value;
|
||||
unsigned long current_value;
|
||||
int nid;
|
||||
char *path;
|
||||
};
|
||||
|
||||
static struct damos_sysfs_quota_goal *damos_sysfs_quota_goal_alloc(void)
|
||||
|
|
@ -1128,10 +1129,39 @@ static ssize_t nid_store(struct kobject *kobj,
|
|||
return err ? err : count;
|
||||
}
|
||||
|
||||
static ssize_t path_show(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, char *buf)
|
||||
{
|
||||
struct damos_sysfs_quota_goal *goal = container_of(kobj,
|
||||
struct damos_sysfs_quota_goal, kobj);
|
||||
|
||||
return sysfs_emit(buf, "%s\n", goal->path ? goal->path : "");
|
||||
}
|
||||
|
||||
static ssize_t path_store(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, const char *buf, size_t count)
|
||||
{
|
||||
struct damos_sysfs_quota_goal *goal = container_of(kobj,
|
||||
struct damos_sysfs_quota_goal, kobj);
|
||||
char *path = kmalloc_array(size_add(count, 1), sizeof(*path),
|
||||
GFP_KERNEL);
|
||||
|
||||
if (!path)
|
||||
return -ENOMEM;
|
||||
|
||||
strscpy(path, buf, count + 1);
|
||||
kfree(goal->path);
|
||||
goal->path = path;
|
||||
return count;
|
||||
}
|
||||
|
||||
static void damos_sysfs_quota_goal_release(struct kobject *kobj)
|
||||
{
|
||||
/* or, notify this release to the feed callback */
|
||||
kfree(container_of(kobj, struct damos_sysfs_quota_goal, kobj));
|
||||
struct damos_sysfs_quota_goal *goal = container_of(kobj,
|
||||
struct damos_sysfs_quota_goal, kobj);
|
||||
|
||||
kfree(goal->path);
|
||||
kfree(goal);
|
||||
}
|
||||
|
||||
static struct kobj_attribute damos_sysfs_quota_goal_target_metric_attr =
|
||||
|
|
@ -1146,11 +1176,15 @@ static struct kobj_attribute damos_sysfs_quota_goal_current_value_attr =
|
|||
static struct kobj_attribute damos_sysfs_quota_goal_nid_attr =
|
||||
__ATTR_RW_MODE(nid, 0600);
|
||||
|
||||
static struct kobj_attribute damos_sysfs_quota_goal_path_attr =
|
||||
__ATTR_RW_MODE(path, 0600);
|
||||
|
||||
static struct attribute *damos_sysfs_quota_goal_attrs[] = {
|
||||
&damos_sysfs_quota_goal_target_metric_attr.attr,
|
||||
&damos_sysfs_quota_goal_target_value_attr.attr,
|
||||
&damos_sysfs_quota_goal_current_value_attr.attr,
|
||||
&damos_sysfs_quota_goal_nid_attr.attr,
|
||||
&damos_sysfs_quota_goal_path_attr.attr,
|
||||
NULL,
|
||||
};
|
||||
ATTRIBUTE_GROUPS(damos_sysfs_quota_goal);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user