|
@@ -178,6 +178,8 @@ static void set_pageblock_migratetype(struct page *page, int migratetype)
|
|
PB_migrate, PB_migrate_end);
|
|
PB_migrate, PB_migrate_end);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+bool oom_killer_disabled __read_mostly;
|
|
|
|
+
|
|
#ifdef CONFIG_DEBUG_VM
|
|
#ifdef CONFIG_DEBUG_VM
|
|
static int page_outside_zone_boundaries(struct zone *zone, struct page *page)
|
|
static int page_outside_zone_boundaries(struct zone *zone, struct page *page)
|
|
{
|
|
{
|
|
@@ -1769,6 +1771,8 @@ rebalance:
|
|
*/
|
|
*/
|
|
if (!did_some_progress) {
|
|
if (!did_some_progress) {
|
|
if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) {
|
|
if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) {
|
|
|
|
+ if (oom_killer_disabled)
|
|
|
|
+ goto nopage;
|
|
page = __alloc_pages_may_oom(gfp_mask, order,
|
|
page = __alloc_pages_may_oom(gfp_mask, order,
|
|
zonelist, high_zoneidx,
|
|
zonelist, high_zoneidx,
|
|
nodemask, preferred_zone,
|
|
nodemask, preferred_zone,
|