| From fb1a2ed4aaaaeaaac63089136b66322c1fd0f6a4 Mon Sep 17 00:00:00 2001 |
| From: Yu Zhao <yuzhao@google.com> |
| Date: Fri, 28 May 2021 12:35:18 -0600 |
| Subject: [PATCH] CHROMIUM: mm: multi-gen LRU: don't use min_filelist_kbytes |
| |
| The multi-gen lru doesn't need min_filelist_kbytes. |
| |
| BUG=b:222766163 |
| TEST=built |
| |
| Signed-off-by: Yu Zhao <yuzhao@google.com> |
| Change-Id: I221ddc3d041a1d4b506427b9d0aa7306b27814c3 |
| Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3948113 |
| Commit-Queue: Yu Zhao <yuzhao@chromium.org> |
| Tested-by: Yu Zhao <yuzhao@chromium.org> |
| Reviewed-by: Brian Geffon <bgeffon@chromium.org> |
| --- |
| include/linux/mm.h | 2 ++ |
| kernel/sysctl.c | 2 +- |
| mm/low-mem-notify.c | 4 +++- |
| mm/vmscan.c | 22 ++++++++++++++++++++++ |
| 4 files changed, 28 insertions(+), 2 deletions(-) |
| |
| diff --git a/include/linux/mm.h b/include/linux/mm.h |
| index 699d3850871d84b483e8791410b625f06d30fd50..91ec4f39e7731a79ea90dc864000119a39080424 100644 |
| --- a/include/linux/mm.h |
| +++ b/include/linux/mm.h |
| @@ -3420,6 +3420,8 @@ unsigned long wp_shared_mapping_range(struct address_space *mapping, |
| |
| extern int sysctl_nr_trim_pages; |
| extern int min_filelist_kbytes; |
| +extern int min_filelist_kbytes_handler(struct ctl_table *table, int write, |
| + void *buf, size_t *len, loff_t *pos); |
| |
| #ifdef CONFIG_PRINTK |
| void mem_dump_obj(void *object); |
| diff --git a/kernel/sysctl.c b/kernel/sysctl.c |
| index bb7f6a2928960d66674f598e36a6e9a0e1dd095e..b17af43424d7d3b93cbb9be57a05795d22b84673 100644 |
| --- a/kernel/sysctl.c |
| +++ b/kernel/sysctl.c |
| @@ -2458,7 +2458,7 @@ static struct ctl_table vm_table[] = { |
| .data = &min_filelist_kbytes, |
| .maxlen = sizeof(min_filelist_kbytes), |
| .mode = 0644, |
| - .proc_handler = proc_dointvec, |
| + .proc_handler = min_filelist_kbytes_handler, |
| }, |
| #ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS |
| { |
| diff --git a/mm/low-mem-notify.c b/mm/low-mem-notify.c |
| index 3583dc43221d9fa09a900442ef73fc7d32a1dd76..23aa30cf2a6fd1a67369f18d4839c7dfd30a701b 100644 |
| --- a/mm/low-mem-notify.c |
| +++ b/mm/low-mem-notify.c |
| @@ -33,6 +33,7 @@ |
| #include <linux/stddef.h> |
| #include <linux/swap.h> |
| #include <linux/low-mem-notify.h> |
| +#include <linux/mm_inline.h> |
| |
| #define MB (1 << 20) |
| |
| @@ -66,7 +67,8 @@ static unsigned long get_available_file_mem(void) |
| global_node_page_state(NR_ACTIVE_FILE) + |
| global_node_page_state(NR_INACTIVE_FILE); |
| unsigned long dirty_mem = global_node_page_state(NR_FILE_DIRTY); |
| - unsigned long min_file_mem = min_filelist_kbytes >> (PAGE_SHIFT - 10); |
| + unsigned long min_file_mem = lru_gen_enabled() ? |
| + 0 : min_filelist_kbytes >> (PAGE_SHIFT - 10); |
| unsigned long clean_file_mem = file_mem > dirty_mem ? |
| file_mem - dirty_mem : 0; |
| /* Conservatively estimate the amount of available_file_mem */ |
| diff --git a/mm/vmscan.c b/mm/vmscan.c |
| index 5c2430679548ac25f35567dedb027f004742b53a..796a730c1ca27c762e610a6165dc4d14c57de3b6 100644 |
| --- a/mm/vmscan.c |
| +++ b/mm/vmscan.c |
| @@ -203,6 +203,28 @@ static void set_task_reclaim_state(struct task_struct *task, |
| task->reclaim_state = rs; |
| } |
| |
| +int min_filelist_kbytes_handler(struct ctl_table *table, int write, |
| + void *buf, size_t *len, loff_t *pos) |
| +{ |
| + size_t written; |
| + |
| + if (!lru_gen_enabled() || write) |
| + return proc_dointvec(table, write, buf, len, pos); |
| + |
| + if (!*len || *pos) { |
| + *len = 0; |
| + return 0; |
| + } |
| + |
| + written = min_t(size_t, 2, *len); |
| + memcpy(buf, "0\n", written); |
| + |
| + *len = written; |
| + *pos = written; |
| + |
| + return 0; |
| +} |
| + |
| LIST_HEAD(shrinker_list); |
| DECLARE_RWSEM(shrinker_rwsem); |
| |
| -- |
| 2.38.1.584.g0f3c55d4c2-goog |
| |