From 98844616f65bee09eda791353a09b2d195f71270 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Wed, 31 Mar 2021 12:50:09 -0400 Subject: If we failed to read /proc/meminfo, just run the shrinkers. --- linux/shrinker.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'linux') diff --git a/linux/shrinker.c b/linux/shrinker.c index 7926be06..f6c979aa 100644 --- a/linux/shrinker.c +++ b/linux/shrinker.c @@ -28,7 +28,6 @@ void unregister_shrinker(struct shrinker *shrinker) struct meminfo { u64 total; u64 available; - }; static u64 parse_meminfo_line(const char *line) @@ -50,7 +49,7 @@ static struct meminfo read_meminfo(void) f = fopen("/proc/meminfo", "r"); if (!f) - die("error opening /proc/meminfo: %m"); + return ret; while ((len = getline(&line, &n, f)) != -1) { if ((v = strcmp_prefix(line, "MemTotal:"))) @@ -77,10 +76,18 @@ void run_shrinkers(void) return; info = read_meminfo(); - want_shrink = (info.total >> 2) - info.available; - if (want_shrink <= 0) - return; + if (info.total && info.available) { + want_shrink = (info.total >> 2) - info.available; + + if (want_shrink <= 0) + return; + } else { + /* If we weren't able to read /proc/meminfo, we must be pretty + * low: */ + + want_shrink = 8 << 20; + } mutex_lock(&shrinker_lock); list_for_each_entry(shrinker, &shrinker_list, list) { -- cgit v1.2.3