mm, page_alloc: simplify list handling in rmqueue_bulk()
authorVlastimil Babka <[email protected]>
Thu, 16 Nov 2017 01:38:07 +0000 (17:38 -0800)
committerLinus Torvalds <[email protected]>
Thu, 16 Nov 2017 02:21:06 +0000 (18:21 -0800)
commit0fac3ba527f23219678c7c10c767e37d40127b51
tree27d85443834ff56bb12fbb7097afa8481e0e6b96
parent453f85d43fa9ee243f0fc3ac4e1be45615301e3f
mm, page_alloc: simplify list handling in rmqueue_bulk()

rmqueue_bulk() fills an empty pcplist with pages from the free list.  It
tries to preserve increasing order by pfn to the caller, because it
leads to better performance with some I/O controllers, as explained in
commit e084b2d95e48 ("page-allocator: preserve PFN ordering when
__GFP_COLD is set").

To preserve the order, it's sufficient to add pages to the tail of the
list as they are retrieved.  The current code instead adds to the head
of the list, but then updates the list head pointer to the last added
page, in each step.  This does result in the same order, but is
needlessly confusing and potentially wasteful, with no apparent benefit.
This patch simplifies the code and adjusts comment accordingly.

Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Vlastimil Babka <[email protected]>
Acked-by: Mel Gorman <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Dave Chinner <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Jan Kara <[email protected]>
Cc: Johannes Weiner <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/page_alloc.c