Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d9f7839 authored by Hideo AOKI's avatar Hideo AOKI Committed by Linus Torvalds
Browse files

[PATCH] overcommit: use totalreserve_pages



This patch is an enhancement of OVERCOMMIT_GUESS algorithm in
__vm_enough_memory() in mm/mmap.c.

When the OVERCOMMIT_GUESS algorithm calculates the number of free pages,
the algorithm subtracts the number of reserved pages from the result
nr_free_pages().

Signed-off-by: default avatarHideo Aoki <haoki@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent cb45b0e9
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -121,14 +121,26 @@ int __vm_enough_memory(long pages, int cap_sys_admin)
		 * only call if we're about to fail.
		 */
		n = nr_free_pages();

		/*
		 * Leave reserved pages. The pages are not for anonymous pages.
		 */
		if (n <= totalreserve_pages)
			goto error;
		else
			n -= totalreserve_pages;

		/*
		 * Leave the last 3% for root
		 */
		if (!cap_sys_admin)
			n -= n / 32;
		free += n;

		if (free > pages)
			return 0;
		vm_unacct_memory(pages);
		return -ENOMEM;

		goto error;
	}

	allowed = (totalram_pages - hugetlb_total_pages())
@@ -150,7 +162,7 @@ int __vm_enough_memory(long pages, int cap_sys_admin)
	 */
	if (atomic_read(&vm_committed_space) < (long)allowed)
		return 0;

error:
	vm_unacct_memory(pages);

	return -ENOMEM;