chiark / gitweb /
readahead-common: fix total memory size detection
authorMichal Schmidt <mschmidt@redhat.com>
Fri, 10 Jun 2011 12:37:21 +0000 (14:37 +0200)
committerKay Sievers <kay.sievers@vrfy.org>
Fri, 10 Jun 2011 12:57:12 +0000 (14:57 +0200)
sysinfo returns the total memory size in multiples of mem_unit bytes.
As long as the size in bytes fits into unsigned long, the kernel uses
mem_unit = 1, but this is not true on i386 with more than 4 GB RAM.

https://bugzilla.redhat.com/show_bug.cgi?id=712341

src/readahead-common.c

index 8a75b2e135263315ff5721802186b1ca6094905b..f0d57b4c6e49c1192dfe50b6fc57014ab893bbd5 100644 (file)
@@ -154,9 +154,8 @@ bool enough_ram(void) {
 
         assert_se(sysinfo(&si) >= 0);
 
-        return si.totalram > 127 * 1024*1024; /* Enable readahead only
-                                               * with at least 128MB
-                                               * memory */
+        /* Enable readahead only with at least 128MB memory */
+        return si.totalram > 127 * 1024*1024 / si.mem_unit;
 }
 
 int open_inotify(void) {