mm: migrate_device: unify migrate folio for MIGRATE_SYNC_NO_COPY
The __migrate_device_pages() won't copy page so MIGRATE_SYNC_NO_COPY passed into migrate_folio()/migrate_folio_extra(), actually a easy way is just to call folio_migrate_mapping()/folio_migrate_flags(), converting it to unify and simplify the migrate device pages, which also remove the only call for MIGRATE_SYNC_NO_COPY. Link: https://lkml.kernel.org/r/20240524052843.182275-4-wangkefeng.wang@huawei.com Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> Reviewed-by: Jane Chu <jane.chu@oracle.com> Cc: Alistair Popple <apopple@nvidia.com> Cc: Benjamin LaHaise <bcrl@kvack.org> Cc: David Hildenbrand <david@redhat.com> Cc: Hugh Dickins <hughd@google.com> Cc: Jérôme Glisse <jglisse@redhat.com> Cc: Jiaqi Yan <jiaqiyan@google.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Miaohe Lin <linmiaohe@huawei.com> Cc: Muchun Song <muchun.song@linux.dev> Cc: Naoya Horiguchi <nao.horiguchi@gmail.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
6aaaef5b6f
commit
15b0c79cfa
@ -693,7 +693,7 @@ static void __migrate_device_pages(unsigned long *src_pfns,
|
|||||||
struct page *page = migrate_pfn_to_page(src_pfns[i]);
|
struct page *page = migrate_pfn_to_page(src_pfns[i]);
|
||||||
struct address_space *mapping;
|
struct address_space *mapping;
|
||||||
struct folio *newfolio, *folio;
|
struct folio *newfolio, *folio;
|
||||||
int r;
|
int r, extra_cnt = 0;
|
||||||
|
|
||||||
if (!newpage) {
|
if (!newpage) {
|
||||||
src_pfns[i] &= ~MIGRATE_PFN_MIGRATE;
|
src_pfns[i] &= ~MIGRATE_PFN_MIGRATE;
|
||||||
@ -754,14 +754,15 @@ static void __migrate_device_pages(unsigned long *src_pfns,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BUG_ON(folio_test_writeback(folio));
|
||||||
|
|
||||||
if (migrate && migrate->fault_page == page)
|
if (migrate && migrate->fault_page == page)
|
||||||
r = migrate_folio_extra(mapping, newfolio, folio,
|
extra_cnt = 1;
|
||||||
MIGRATE_SYNC_NO_COPY, 1);
|
r = folio_migrate_mapping(mapping, newfolio, folio, extra_cnt);
|
||||||
else
|
|
||||||
r = migrate_folio(mapping, newfolio, folio,
|
|
||||||
MIGRATE_SYNC_NO_COPY);
|
|
||||||
if (r != MIGRATEPAGE_SUCCESS)
|
if (r != MIGRATEPAGE_SUCCESS)
|
||||||
src_pfns[i] &= ~MIGRATE_PFN_MIGRATE;
|
src_pfns[i] &= ~MIGRATE_PFN_MIGRATE;
|
||||||
|
else
|
||||||
|
folio_migrate_flags(newfolio, folio);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notified)
|
if (notified)
|
||||||
|
Loading…
Reference in New Issue
Block a user