| From e07f25d85d7e2e5dda1e6e06866a31762af7bd73 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 30 Nov 2019 17:56:08 -0800 |
| Subject: kernel: sysctl: make drop_caches write-only |
| |
| From: Johannes Weiner <hannes@cmpxchg.org> |
| |
| [ Upstream commit 204cb79ad42f015312a5bbd7012d09c93d9b46fb ] |
| |
| Currently, the drop_caches proc file and sysctl read back the last value |
| written, suggesting this is somehow a stateful setting instead of a |
| one-time command. Make it write-only, like e.g. compact_memory. |
| |
| While mitigating a VM problem at scale in our fleet, there was confusion |
| about whether writing to this file will permanently switch the kernel into |
| a non-caching mode. This influences the decision making in a tense |
| situation, where tens of people are trying to fix tens of thousands of |
| affected machines: Do we need a rollback strategy? What are the |
| performance implications of operating in a non-caching state for several |
| days? It also caused confusion when the kernel team said we may need to |
| write the file several times to make sure it's effective ("But it already |
| reads back 3?"). |
| |
| Link: http://lkml.kernel.org/r/20191031221602.9375-1-hannes@cmpxchg.org |
| Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> |
| Acked-by: Chris Down <chris@chrisdown.name> |
| Acked-by: Vlastimil Babka <vbabka@suse.cz> |
| Acked-by: David Hildenbrand <david@redhat.com> |
| Acked-by: Michal Hocko <mhocko@suse.com> |
| Acked-by: Alexey Dobriyan <adobriyan@gmail.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| kernel/sysctl.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/kernel/sysctl.c b/kernel/sysctl.c |
| index f8576509c7be..4c4fd4339d33 100644 |
| --- a/kernel/sysctl.c |
| +++ b/kernel/sysctl.c |
| @@ -1411,7 +1411,7 @@ static struct ctl_table vm_table[] = { |
| .procname = "drop_caches", |
| .data = &sysctl_drop_caches, |
| .maxlen = sizeof(int), |
| - .mode = 0644, |
| + .mode = 0200, |
| .proc_handler = drop_caches_sysctl_handler, |
| .extra1 = &one, |
| .extra2 = &four, |
| -- |
| 2.20.1 |
| |