On 07.05.21 15:31, Matthew Wilcox wrote:
A survey: include/linux/page_owner.h:static inline void copy_page_owner(struct page *oldpage, struct page *newpage) mm/migration.c: void remove_migration_ptes(struct page *old, struct page *new, bool locked) int migrate_page_move_mapping(struct address_space *mapping, struct page *newpage, struct page *page, int extra_count) int migrate_huge_page_move_mapping(struct address_space *mapping, struct page *newpage, struct page *page) void migrate_page_states(struct page *newpage, struct page *page) void migrate_page_copy(struct page *newpage, struct page *page) int migrate_page(struct address_space *mapping, struct page *newpage, struct page *page, enum migrate_mode mode) int buffer_migrate_page(struct address_space *mapping, struct page *newpage, struct page *page, enum migrate_mode mode) int buffer_migrate_page_norefs(struct address_space *mapping, struct page *newpage, struct page *page, enum migrate_mode mode) rc = mapping->a_ops->migratepage(mapping, newpage, page, mode); That's a pretty clear preference for (to, from), so I'm going to change copy_page_owner() when I convert it to folio_copy_owner(). And I'll fix remove_migration_ptes() when i convert that to folios.
IMHO, memcpy() semantics make most sense. So I agree. -- Thanks, David / dhildenb