mm/rmap: introduce folio_remove_rmap_[pte|ptes|pmd]()
Let's mimic what we did with folio_add_file_rmap_*() and folio_add_anon_rmap_*() so we can similarly replace page_remove_rmap() next. Make the compiler always special-case on the granularity by using __always_inline. We're adding folio_remove_rmap_ptes() handling right away, as we want to use that soon for batching rmap operations when unmapping PTE-mapped large folios. Link: https://lkml.kernel.org/r/20231220224504.646757-24-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Cc: Hugh Dickins <hughd@google.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Muchun Song <muchun.song@linux.dev> Cc: Muchun Song <songmuchun@bytedance.com> Cc: Peter Xu <peterx@redhat.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Yin Fengwei <fengwei.yin@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
0cae959e3a
commit
b06dc281aa
@@ -243,6 +243,12 @@ void folio_add_file_rmap_pmd(struct folio *, struct page *,
|
||||
struct vm_area_struct *);
|
||||
void page_remove_rmap(struct page *, struct vm_area_struct *,
|
||||
bool compound);
|
||||
void folio_remove_rmap_ptes(struct folio *, struct page *, int nr_pages,
|
||||
struct vm_area_struct *);
|
||||
#define folio_remove_rmap_pte(folio, page, vma) \
|
||||
folio_remove_rmap_ptes(folio, page, 1, vma)
|
||||
void folio_remove_rmap_pmd(struct folio *, struct page *,
|
||||
struct vm_area_struct *);
|
||||
|
||||
void hugetlb_add_anon_rmap(struct folio *, struct vm_area_struct *,
|
||||
unsigned long address, rmap_t flags);
|
||||
|
||||
Reference in New Issue
Block a user