Messages in this thread Patch in this message | | | Date | Thu, 13 Dec 2007 17:11:03 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH] fix page_alloc for larger I/O segments (improved) |
| |
On Thu, 13 Dec 2007 19:57:29 -0500 James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
> > On Thu, 2007-12-13 at 19:46 -0500, Mark Lord wrote: > > "Improved version", more similar to the 2.6.23 code: > > > > Fix page allocator to give better chance of larger contiguous segments (again). > > > > Signed-off-by: Mark Lord <mlord@pobox.com > > --- > > > > --- old/mm/page_alloc.c 2007-12-13 19:25:15.000000000 -0500 > > +++ linux-2.6/mm/page_alloc.c 2007-12-13 19:43:07.000000000 -0500 > > @@ -760,7 +760,7 @@ > > struct page *page = __rmqueue(zone, order, migratetype); > > if (unlikely(page == NULL)) > > break; > > - list_add(&page->lru, list); > > + list_add_tail(&page->lru, list); > > Could we put a big comment above this explaining to the would be vm > tweakers why this has to be a list_add_tail, so we don't end up back in > this position after another two years? >
Already done ;)
--- a/mm/page_alloc.c~fix-page_alloc-for-larger-i-o-segments-fix +++ a/mm/page_alloc.c @@ -847,6 +847,10 @@ static int rmqueue_bulk(struct zone *zon struct page *page = __rmqueue(zone, order, migratetype); if (unlikely(page == NULL)) break; + /* + * Doing a list_add_tail() here helps us to hand out pages in + * ascending physical-address order. + */ list_add_tail(&page->lru, list); set_page_private(page, migratetype); } _
| |