[RFC PATCH 3/8] mm, compaction: pass valid_page to isolate_migratepages_block

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The valid_page pointer is needed to operate on pageblock bits. The next
patches will need it sooner in isolate_migratepages_block() than currently
estabilished. Since isolate_migratepages() has the pointer already, pass it
down. CMA's isolate_migratepages_range() doesn't, but we will use it only
for compaction so that's ok.

Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx>
---
 mm/compaction.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index 95b8b5ae59c5..00dc46343093 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -674,6 +674,8 @@ static bool too_many_isolated(struct zone *zone)
  *				  a single pageblock
  * @cc:		Compaction control structure.
  * @low_pfn:	The first PFN to isolate
+ * @valid_page: Page belonging to same pageblock as low_pfn (for pageblock
+ *              flag operations). May be NULL.
  * @end_pfn:	The one-past-the-last PFN to isolate, within same pageblock
  * @isolate_mode: Isolation mode to be used.
  *
@@ -689,14 +691,15 @@ static bool too_many_isolated(struct zone *zone)
  */
 static unsigned long
 isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
-			unsigned long end_pfn, isolate_mode_t isolate_mode)
+		struct page *valid_page, unsigned long end_pfn,
+		isolate_mode_t isolate_mode)
 {
 	struct zone *zone = cc->zone;
 	unsigned long nr_scanned = 0, nr_isolated = 0;
 	struct lruvec *lruvec;
 	unsigned long flags = 0;
 	bool locked = false;
-	struct page *page = NULL, *valid_page = NULL;
+	struct page *page = NULL;
 	unsigned long start_pfn = low_pfn;
 	bool skip_on_failure = false, skipped_pages = false;
 	unsigned long next_skip_pfn = 0;
@@ -992,7 +995,7 @@ isolate_migratepages_range(struct compact_control *cc, unsigned long start_pfn,
 					block_end_pfn, cc->zone))
 			continue;
 
-		pfn = isolate_migratepages_block(cc, pfn, block_end_pfn,
+		pfn = isolate_migratepages_block(cc, pfn, NULL, block_end_pfn,
 							ISOLATE_UNEVICTABLE);
 
 		if (!pfn)
@@ -1282,7 +1285,7 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
 			continue;
 
 		/* Perform the isolation */
-		low_pfn = isolate_migratepages_block(cc, low_pfn,
+		low_pfn = isolate_migratepages_block(cc, low_pfn, page,
 						block_end_pfn, isolate_mode);
 
 		if (!low_pfn || cc->contended)
-- 
2.15.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]
  Powered by Linux