> @@ -1627,8 +1627,18 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes, > start = i; > } else if (node != current_node) { > err = do_move_pages_to_node(mm, &pagelist, current_node); > - if (err) > + if (err) { > + /* > + * Possitive err means the number of failed "positive" > + * pages to migrate. Since we are going to > + * abort and return the number of non-migrated > + * pages, so need incude the rest of the "need to include" > + * nr_pages that have not attempted as well. "have not been attempted" > @@ -1674,6 +1687,13 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes, > > /* Make sure we do not overwrite the existing error */ > err1 = do_move_pages_to_node(mm, &pagelist, current_node); > + /* > + * Don't have to report non-attempted pages here since: > + * - If the above loop is done gracefully there is not non-attempted "all pages have been attempted" > + * page. > + * - If the above loop is aborted to it means more fatal error s/to// s/more/a/ > + * happened, should return err. > + */ I'd also be tempted to rename "err" to "ret" since it has meanings beyond "error" now.