mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
mm: khugepaged: support shmem mTHP copy
Iterate each subpage in the large folio to copy, as preparation for supporting shmem mTHP collapse. Link: https://lkml.kernel.org/r/222d615b7c837eabb47a238126c5fdeff8aa5283.1724140601.git.baolin.wang@linux.alibaba.com Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Barry Song <21cnbao@gmail.com> Cc: David Hildenbrand <david@redhat.com> Cc: Hugh Dickins <hughd@google.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Yang Shi <shy828301@gmail.com> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
d6b8f296e8
commit
dfa98f56d9
@ -2056,17 +2056,22 @@ xa_unlocked:
|
||||
index = start;
|
||||
dst = folio_page(new_folio, 0);
|
||||
list_for_each_entry(folio, &pagelist, lru) {
|
||||
int i, nr_pages = folio_nr_pages(folio);
|
||||
|
||||
while (index < folio->index) {
|
||||
clear_highpage(dst);
|
||||
index++;
|
||||
dst++;
|
||||
}
|
||||
if (copy_mc_highpage(dst, folio_page(folio, 0)) > 0) {
|
||||
result = SCAN_COPY_MC;
|
||||
goto rollback;
|
||||
|
||||
for (i = 0; i < nr_pages; i++) {
|
||||
if (copy_mc_highpage(dst, folio_page(folio, i)) > 0) {
|
||||
result = SCAN_COPY_MC;
|
||||
goto rollback;
|
||||
}
|
||||
index++;
|
||||
dst++;
|
||||
}
|
||||
index++;
|
||||
dst++;
|
||||
}
|
||||
while (index < end) {
|
||||
clear_highpage(dst);
|
||||
|
Loading…
Reference in New Issue
Block a user