提交 5a9dbb3c 编写于 作者: Z zhong jiang 提交者: Xie XiuQi

pagecache: use the correct cache_reclaim_s immediately

euler inclusion
category: bugfix
CVE: NA
Bugzilla: 13084

---------------------------

when we set a large number in cache_reclaim_s to background thread
to reclaim free pagecache, And then set a minimum number to it.

It will trigger an unexpected result. we must drain the time slice
of cache_reclaim_s. hence we will wait too long time for that.
Signed-off-by: Nzhong jiang <zhongjiang@huawei.com>
Reviewed-by: NJing Xiangfeng <jingxiangfeng@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 08b9edc9
...@@ -389,6 +389,8 @@ extern int cache_limit_mbytes_sysctl_handler(struct ctl_table *table, int write, ...@@ -389,6 +389,8 @@ extern int cache_limit_mbytes_sysctl_handler(struct ctl_table *table, int write,
void __user *buffer, size_t *length, loff_t *ppos); void __user *buffer, size_t *length, loff_t *ppos);
extern int cache_reclaim_enable_handler(struct ctl_table *table, int write, extern int cache_reclaim_enable_handler(struct ctl_table *table, int write,
void __user *buffer, size_t *length, loff_t *ppos); void __user *buffer, size_t *length, loff_t *ppos);
extern int cache_reclaim_sysctl_handler(struct ctl_table *table, int write,
void __user *buffer, size_t *length, loff_t *ppos);
#endif #endif
#ifdef CONFIG_NUMA #ifdef CONFIG_NUMA
......
...@@ -1382,7 +1382,7 @@ static struct ctl_table vm_table[] = { ...@@ -1382,7 +1382,7 @@ static struct ctl_table vm_table[] = {
.data = &vm_cache_reclaim_s, .data = &vm_cache_reclaim_s,
.maxlen = sizeof(vm_cache_reclaim_s), .maxlen = sizeof(vm_cache_reclaim_s),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = cache_reclaim_sysctl_handler,
.extra1 = &vm_cache_reclaim_s_min, .extra1 = &vm_cache_reclaim_s_min,
.extra2 = &vm_cache_reclaim_s_max, .extra2 = &vm_cache_reclaim_s_max,
}, },
......
...@@ -4045,6 +4045,23 @@ int cache_reclaim_enable_handler(struct ctl_table *table, int write, ...@@ -4045,6 +4045,23 @@ int cache_reclaim_enable_handler(struct ctl_table *table, int write,
return 0; return 0;
} }
int cache_reclaim_sysctl_handler(struct ctl_table *table, int write,
void __user *buffer, size_t *length, loff_t *ppos)
{
int ret, cpu;
ret = proc_dointvec_minmax(table, write, buffer, length, ppos);
if (ret)
return ret;
if (write)
mod_delayed_work_on(cpu, system_wq, &shepherd,
round_jiffies_relative(
(unsigned long)vm_cache_reclaim_s * HZ));
return ret;
}
#endif #endif
/* It's optimal to keep kswapds on the same CPUs as their memory, but /* It's optimal to keep kswapds on the same CPUs as their memory, but
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册