Skip to content

Commit 3230e95

Browse files
Panky-codeskawasaki
authored andcommitted
huge_memory: add huge_zero_page_shrinker_(init|exit) function
Add huge_zero_page_shrinker_init() and huge_zero_page_shrinker_exit(). As shrinker will not be needed when static PMD zero page is enabled, these two functions can be a no-op. This is a preparation patch for static PMD zero page. No functional changes. Signed-off-by: Pankaj Raghav <[email protected]>
1 parent 8d1423e commit 3230e95

1 file changed

Lines changed: 27 additions & 11 deletions

File tree

mm/huge_memory.c

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,24 @@ static unsigned long shrink_huge_zero_page_scan(struct shrinker *shrink,
289289
}
290290

291291
static struct shrinker *huge_zero_page_shrinker;
292+
static int huge_zero_page_shrinker_init(void)
293+
{
294+
huge_zero_page_shrinker = shrinker_alloc(0, "thp-zero");
295+
if (!huge_zero_page_shrinker)
296+
return -ENOMEM;
297+
298+
huge_zero_page_shrinker->count_objects = shrink_huge_zero_page_count;
299+
huge_zero_page_shrinker->scan_objects = shrink_huge_zero_page_scan;
300+
shrinker_register(huge_zero_page_shrinker);
301+
return 0;
302+
}
303+
304+
static void huge_zero_page_shrinker_exit(void)
305+
{
306+
shrinker_free(huge_zero_page_shrinker);
307+
return;
308+
}
309+
292310

293311
#ifdef CONFIG_SYSFS
294312
static ssize_t enabled_show(struct kobject *kobj,
@@ -850,33 +868,31 @@ static inline void hugepage_exit_sysfs(struct kobject *hugepage_kobj)
850868

851869
static int __init thp_shrinker_init(void)
852870
{
853-
huge_zero_page_shrinker = shrinker_alloc(0, "thp-zero");
854-
if (!huge_zero_page_shrinker)
855-
return -ENOMEM;
871+
int ret = 0;
856872

857873
deferred_split_shrinker = shrinker_alloc(SHRINKER_NUMA_AWARE |
858874
SHRINKER_MEMCG_AWARE |
859875
SHRINKER_NONSLAB,
860876
"thp-deferred_split");
861-
if (!deferred_split_shrinker) {
862-
shrinker_free(huge_zero_page_shrinker);
877+
if (!deferred_split_shrinker)
863878
return -ENOMEM;
864-
}
865-
866-
huge_zero_page_shrinker->count_objects = shrink_huge_zero_page_count;
867-
huge_zero_page_shrinker->scan_objects = shrink_huge_zero_page_scan;
868-
shrinker_register(huge_zero_page_shrinker);
869879

870880
deferred_split_shrinker->count_objects = deferred_split_count;
871881
deferred_split_shrinker->scan_objects = deferred_split_scan;
872882
shrinker_register(deferred_split_shrinker);
873883

884+
ret = huge_zero_page_shrinker_init();
885+
if (ret) {
886+
shrinker_free(deferred_split_shrinker);
887+
return ret;
888+
}
889+
874890
return 0;
875891
}
876892

877893
static void __init thp_shrinker_exit(void)
878894
{
879-
shrinker_free(huge_zero_page_shrinker);
895+
huge_zero_page_shrinker_exit();
880896
shrinker_free(deferred_split_shrinker);
881897
}
882898

0 commit comments

Comments
 (0)