--- linux/mm/shmem.c.old Sun Mar 30 00:51:39 2003 +++ linux/mm/shmem.c Sun Mar 30 03:23:47 2003 @@ -1630,6 +1630,12 @@ if (!strcmp(this_char,"size")) { unsigned long long size; size = memparse(value,&rest); + if (*rest == '%') { + struct sysinfo si; + si_meminfo(&si); + size = (si.totalram << PAGE_CACHE_SHIFT) / 100 * size; + rest++; + } if (*rest) goto bad_val; *blocks = size >> PAGE_CACHE_SHIFT;