[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1330957105-3595-1-git-send-email-consul.kautuk@gmail.com>
Date: Mon, 5 Mar 2012 09:18:25 -0500
From: Kautuk Consul <consul.kautuk@...il.com>
To: Andrew Morton <akpm@...ux-foundation.org>,
Mel Gorman <mgorman@...e.de>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>,
Tejun Heo <tj@...nel.org>, Minchan Kim <minchan.kim@...il.com>
Cc: linux-mm@...ck.org, linux-kernel@...r.kernel.org,
Kautuk Consul <consul.kautuk@...il.com>
Subject: [PATCH 1/1] page_alloc.c: Slightly improve the logic in __alloc_pages_high_priority
The loop in __alloc_pages_high_priority() seems to be checking for
(!page) and (gfp_mask & __GFP_NOFAIL) multiple times.
In fact, we don't really need to check (gfp_mask & __GFP_NOFAIL)
for every iteration of the loop as the gfp_mask remains constant.
Slightly improve the logic in __alloc_pages_high_priority() to
eliminate these multiple condition checks.
Signed-off-by: Kautuk Consul <consul.kautuk@...il.com>
---
mm/page_alloc.c | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index a13ded1..6bb8b6d 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2114,14 +2114,19 @@ __alloc_pages_high_priority(gfp_t gfp_mask, unsigned int order,
{
struct page *page;
- do {
- page = get_page_from_freelist(gfp_mask, nodemask, order,
+ page = get_page_from_freelist(gfp_mask, nodemask, order,
zonelist, high_zoneidx, ALLOC_NO_WATERMARKS,
preferred_zone, migratetype);
- if (!page && gfp_mask & __GFP_NOFAIL)
+ if (gfp_mask & __GFP_NOFAIL) {
+ while (!page) {
wait_iff_congested(preferred_zone, BLK_RW_ASYNC, HZ/50);
- } while (!page && (gfp_mask & __GFP_NOFAIL));
+
+ page = get_page_from_freelist(gfp_mask, nodemask, order,
+ zonelist, high_zoneidx, ALLOC_NO_WATERMARKS,
+ preferred_zone, migratetype);
+ }
+ }
return page;
}
--
1.7.5.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists