Message ID | 20220627022515.1067946-1-ying.huang@intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/7] migrate: fix syscall move_pages() return value for failure | expand |
On 6/27/2022 10:25 AM, Huang Ying wrote: > After 10 retries, we will give up and the remaining pages will be > counted as failure in nr_failed and nr_thp_failed. We should count > the failure in nr_failed_pages too. This is done in this patch. > > Signed-off-by: "Huang, Ying" <ying.huang@intel.com> > Fixes: 5984fabb6e82 ("mm: move_pages: report the number of non-attempted pages") > Cc: Baolin Wang <baolin.wang@linux.alibaba.com> > Cc: Zi Yan <ziy@nvidia.com> > Cc: Yang Shi <shy828301@gmail.com> > --- > mm/migrate.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/mm/migrate.c b/mm/migrate.c > index 70a0e1f34c03..e42bd409d3aa 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -1344,6 +1344,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, > int thp_retry = 1; > int nr_failed = 0; > int nr_failed_pages = 0; > + int nr_retry_pages = 0; > int nr_succeeded = 0; > int nr_thp_succeeded = 0; > int nr_thp_failed = 0; > @@ -1364,6 +1365,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, > for (pass = 0; pass < 10 && (retry || thp_retry); pass++) { > retry = 0; > thp_retry = 0; > + nr_retry_pages = 0; > > list_for_each_entry_safe(page, page2, from, lru) { > /* > @@ -1449,12 +1451,14 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, > nr_thp_failed += thp_retry; > if (!no_subpage_counting) > nr_failed += retry; > + nr_failed_pages += nr_retry_pages; Can you move this a little forward to update 'nr_failed_pages' in one place, which seems more readable? nr_failed_pages += nr_subpages + nr_retry_pages; Otherwise, Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> > goto out; > case -EAGAIN: > if (is_thp) > thp_retry++; > else > retry++; > + nr_retry_pages += nr_subpages; > break; > case MIGRATEPAGE_SUCCESS: > nr_succeeded += nr_subpages; > @@ -1481,6 +1485,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, > if (!no_subpage_counting) > nr_failed += retry; > nr_thp_failed += thp_retry; > + nr_failed_pages += nr_retry_pages; > /* > * Try to migrate subpages of fail-to-migrate THPs, no nr_failed > * counting in this round, since all subpages of a THP is counted
Baolin Wang <baolin.wang@linux.alibaba.com> writes: > On 6/27/2022 10:25 AM, Huang Ying wrote: >> After 10 retries, we will give up and the remaining pages will be >> counted as failure in nr_failed and nr_thp_failed. We should count >> the failure in nr_failed_pages too. This is done in this patch. >> Signed-off-by: "Huang, Ying" <ying.huang@intel.com> >> Fixes: 5984fabb6e82 ("mm: move_pages: report the number of non-attempted pages") >> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> >> Cc: Zi Yan <ziy@nvidia.com> >> Cc: Yang Shi <shy828301@gmail.com> >> --- >> mm/migrate.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> diff --git a/mm/migrate.c b/mm/migrate.c >> index 70a0e1f34c03..e42bd409d3aa 100644 >> --- a/mm/migrate.c >> +++ b/mm/migrate.c >> @@ -1344,6 +1344,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, >> int thp_retry = 1; >> int nr_failed = 0; >> int nr_failed_pages = 0; >> + int nr_retry_pages = 0; >> int nr_succeeded = 0; >> int nr_thp_succeeded = 0; >> int nr_thp_failed = 0; >> @@ -1364,6 +1365,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, >> for (pass = 0; pass < 10 && (retry || thp_retry); pass++) { >> retry = 0; >> thp_retry = 0; >> + nr_retry_pages = 0; >> list_for_each_entry_safe(page, page2, from, lru) { >> /* >> @@ -1449,12 +1451,14 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, >> nr_thp_failed += thp_retry; >> if (!no_subpage_counting) >> nr_failed += retry; >> + nr_failed_pages += nr_retry_pages; > > Can you move this a little forward to update 'nr_failed_pages' in one > place, which seems more readable? > nr_failed_pages += nr_subpages + nr_retry_pages; Sure. Will do this in the next version! > Otherwise, > Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> Thanks! Best Regards, Huang, Ying > >> goto out; >> case -EAGAIN: >> if (is_thp) >> thp_retry++; >> else >> retry++; >> + nr_retry_pages += nr_subpages; >> break; >> case MIGRATEPAGE_SUCCESS: >> nr_succeeded += nr_subpages; >> @@ -1481,6 +1485,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, >> if (!no_subpage_counting) >> nr_failed += retry; >> nr_thp_failed += thp_retry; >> + nr_failed_pages += nr_retry_pages; >> /* >> * Try to migrate subpages of fail-to-migrate THPs, no nr_failed >> * counting in this round, since all subpages of a THP is counted
diff --git a/mm/migrate.c b/mm/migrate.c index 70a0e1f34c03..e42bd409d3aa 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1344,6 +1344,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, int thp_retry = 1; int nr_failed = 0; int nr_failed_pages = 0; + int nr_retry_pages = 0; int nr_succeeded = 0; int nr_thp_succeeded = 0; int nr_thp_failed = 0; @@ -1364,6 +1365,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, for (pass = 0; pass < 10 && (retry || thp_retry); pass++) { retry = 0; thp_retry = 0; + nr_retry_pages = 0; list_for_each_entry_safe(page, page2, from, lru) { /* @@ -1449,12 +1451,14 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, nr_thp_failed += thp_retry; if (!no_subpage_counting) nr_failed += retry; + nr_failed_pages += nr_retry_pages; goto out; case -EAGAIN: if (is_thp) thp_retry++; else retry++; + nr_retry_pages += nr_subpages; break; case MIGRATEPAGE_SUCCESS: nr_succeeded += nr_subpages; @@ -1481,6 +1485,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, if (!no_subpage_counting) nr_failed += retry; nr_thp_failed += thp_retry; + nr_failed_pages += nr_retry_pages; /* * Try to migrate subpages of fail-to-migrate THPs, no nr_failed * counting in this round, since all subpages of a THP is counted
After 10 retries, we will give up and the remaining pages will be counted as failure in nr_failed and nr_thp_failed. We should count the failure in nr_failed_pages too. This is done in this patch. Signed-off-by: "Huang, Ying" <ying.huang@intel.com> Fixes: 5984fabb6e82 ("mm: move_pages: report the number of non-attempted pages") Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Zi Yan <ziy@nvidia.com> Cc: Yang Shi <shy828301@gmail.com> --- mm/migrate.c | 5 +++++ 1 file changed, 5 insertions(+)