mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
mm/khugepaged: factor out common logic in [scan,alloc]_sleep_millisecs_store()
Both scan_sleep_millisecs_store() and alloc_sleep_millisecs_store() perform the same operations: parse the input value, update their respective sleep interval, reset khugepaged_sleep_expire, and wake up the khugepaged thread. Factor out this duplicated logic into a helper function __sleep_millisecs_store(), and simplify both store functions. No functional change intended. Link: https://lkml.kernel.org/r/20251021134431.26488-1-leon.hwang@linux.dev Signed-off-by: Leon Hwang <leon.hwang@linux.dev> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Reviewed-by: Zi Yan <ziy@nvidia.com> Reviewed-by: Lance Yang <lance.yang@linux.dev> Acked-by: David Hildenbrand <david@redhat.com> Acked-by: Nico Pache <npache@redhat.com> Reviewed-by: Dev Jain <dev.jain@arm.com> Reviewed-by: SeongJae Park <sj@kernel.org> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Barry Song <baohua@kernel.org> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
fae4e86024
commit
2da6fe91c2
@@ -129,9 +129,8 @@ static ssize_t scan_sleep_millisecs_show(struct kobject *kobj,
|
||||
return sysfs_emit(buf, "%u\n", khugepaged_scan_sleep_millisecs);
|
||||
}
|
||||
|
||||
static ssize_t scan_sleep_millisecs_store(struct kobject *kobj,
|
||||
struct kobj_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
static ssize_t __sleep_millisecs_store(const char *buf, size_t count,
|
||||
unsigned int *millisecs)
|
||||
{
|
||||
unsigned int msecs;
|
||||
int err;
|
||||
@@ -140,12 +139,19 @@ static ssize_t scan_sleep_millisecs_store(struct kobject *kobj,
|
||||
if (err)
|
||||
return -EINVAL;
|
||||
|
||||
khugepaged_scan_sleep_millisecs = msecs;
|
||||
*millisecs = msecs;
|
||||
khugepaged_sleep_expire = 0;
|
||||
wake_up_interruptible(&khugepaged_wait);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t scan_sleep_millisecs_store(struct kobject *kobj,
|
||||
struct kobj_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
return __sleep_millisecs_store(buf, count, &khugepaged_scan_sleep_millisecs);
|
||||
}
|
||||
static struct kobj_attribute scan_sleep_millisecs_attr =
|
||||
__ATTR_RW(scan_sleep_millisecs);
|
||||
|
||||
@@ -160,18 +166,7 @@ static ssize_t alloc_sleep_millisecs_store(struct kobject *kobj,
|
||||
struct kobj_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
unsigned int msecs;
|
||||
int err;
|
||||
|
||||
err = kstrtouint(buf, 10, &msecs);
|
||||
if (err)
|
||||
return -EINVAL;
|
||||
|
||||
khugepaged_alloc_sleep_millisecs = msecs;
|
||||
khugepaged_sleep_expire = 0;
|
||||
wake_up_interruptible(&khugepaged_wait);
|
||||
|
||||
return count;
|
||||
return __sleep_millisecs_store(buf, count, &khugepaged_alloc_sleep_millisecs);
|
||||
}
|
||||
static struct kobj_attribute alloc_sleep_millisecs_attr =
|
||||
__ATTR_RW(alloc_sleep_millisecs);
|
||||
|
||||
Reference in New Issue
Block a user