--- mm/shmem.c.old Sun Mar 30 00:51:39 2003 +++ mm/shmem.c Thu Apr 3 20:33:04 2003 @@ -34,6 +34,7 @@ #include #include #include +#include /* This magic number is used in glibc for posix shared memory */ #define TMPFS_MAGIC 0x01021994 @@ -1630,6 +1631,25 @@ if (!strcmp(this_char,"size")) { unsigned long long size; size = memparse(value,&rest); + if (*rest == '%') { + size <<= PAGE_SHIFT; + size *= totalram_pages; + do_div(size, 100); + rest++; + if(*rest == '+') { + unsigned long long swpsize; + rest++; + value = rest; + swpsize = memparse(value,&rest); + if (*rest == '%') { + swpsize <<= PAGE_SHIFT; + swpsize *= nr_swap_pages; + do_div(swpsize, 100); + rest++; + } + size+=swpsize; + } + } if (*rest) goto bad_val; *blocks = size >> PAGE_CACHE_SHIFT; @@ -1695,7 +1715,6 @@ uid_t uid = current->fsuid; gid_t gid = current->fsgid; struct shmem_sb_info *sbinfo; - struct sysinfo si; int err = -ENOMEM; sbinfo = kmalloc(sizeof(struct shmem_sb_info), GFP_KERNEL); @@ -1708,8 +1727,7 @@ * Per default we only allow half of the physical ram per * tmpfs instance */ - si_meminfo(&si); - blocks = inodes = si.totalram / 2; + blocks = inodes = totalram_pages / 2; #ifdef CONFIG_TMPFS if (shmem_parse_options(data, &mode, &uid, &gid, &blocks, &inodes)) {