@@ -1413,6 +1413,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page,
1413
1413
int thp_retry = 1 ;
1414
1414
int nr_failed = 0 ;
1415
1415
int nr_failed_pages = 0 ;
1416
+ int nr_retry_pages = 0 ;
1416
1417
int nr_succeeded = 0 ;
1417
1418
int nr_thp_succeeded = 0 ;
1418
1419
int nr_thp_failed = 0 ;
@@ -1433,6 +1434,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page,
1433
1434
for (pass = 0 ; pass < 10 && (retry || thp_retry ); pass ++ ) {
1434
1435
retry = 0 ;
1435
1436
thp_retry = 0 ;
1437
+ nr_retry_pages = 0 ;
1436
1438
1437
1439
list_for_each_entry_safe (page , page2 , from , lru ) {
1438
1440
/*
@@ -1506,7 +1508,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page,
1506
1508
nr_failed ++ ;
1507
1509
}
1508
1510
1509
- nr_failed_pages += nr_subpages ;
1511
+ nr_failed_pages += nr_subpages + nr_retry_pages ;
1510
1512
/*
1511
1513
* There might be some subpages of fail-to-migrate THPs
1512
1514
* left in thp_split_pages list. Move them back to migration
@@ -1522,6 +1524,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page,
1522
1524
thp_retry ++ ;
1523
1525
else
1524
1526
retry ++ ;
1527
+ nr_retry_pages += nr_subpages ;
1525
1528
break ;
1526
1529
case MIGRATEPAGE_SUCCESS :
1527
1530
nr_succeeded += nr_subpages ;
@@ -1548,6 +1551,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page,
1548
1551
if (!no_subpage_counting )
1549
1552
nr_failed += retry ;
1550
1553
nr_thp_failed += thp_retry ;
1554
+ nr_failed_pages += nr_retry_pages ;
1551
1555
/*
1552
1556
* Try to migrate subpages of fail-to-migrate THPs, no nr_failed
1553
1557
* counting in this round, since all subpages of a THP is counted
0 commit comments