Message ID | 20130107122516.GC3885@suse.de |
---|---|
State | Not Applicable, archived |
Delegated to: | David Miller |
Headers | show |
Mel Gorman <mgorman@suse.de> wrote: > Right now it's difficult to see how the capture could be the source of > this bug but I'm not ruling it out either so try the following (untested > but should be ok) patch. It's not a proper revert, it just disables the > capture page logic to see if it's at fault. Things look good so far with your change. It's been running 2 hours on a VM and 1 hour on my regular machine. Will update again in a few hours (or sooner if it's stuck again). -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Eric Wong <normalperson@yhbt.net> wrote: > Mel Gorman <mgorman@suse.de> wrote: > > Right now it's difficult to see how the capture could be the source of > > this bug but I'm not ruling it out either so try the following (untested > > but should be ok) patch. It's not a proper revert, it just disables the > > capture page logic to see if it's at fault. > > Things look good so far with your change. > It's been running 2 hours on a VM and 1 hour on my regular machine. > Will update again in a few hours (or sooner if it's stuck again). Things still seem good on my regular machine. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/mm/compaction.c b/mm/compaction.c index 6b807e4..81a637d 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -1054,9 +1054,6 @@ static int compact_zone(struct zone *zone, struct compact_control *cc) goto out; } } - - /* Capture a page now if it is a suitable size */ - compact_capture_page(cc); } out: diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 4ba5e37..85d3f9d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2179,11 +2179,8 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order, contended_compaction, &page); current->flags &= ~PF_MEMALLOC; - /* If compaction captured a page, prep and use it */ - if (page) { - prep_new_page(page, order, gfp_mask); - goto got_page; - } + /* capture page is disabled, this should be impossible */ + BUG_ON(page); if (*did_some_progress != COMPACT_SKIPPED) { /* Page migration frees to the PCP lists but we want merging */ @@ -2195,7 +2192,6 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order, alloc_flags & ~ALLOC_NO_WATERMARKS, preferred_zone, migratetype); if (page) { -got_page: preferred_zone->compact_blockskip_flush = false; preferred_zone->compact_considered = 0; preferred_zone->compact_defer_shift = 0;