mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 03:35:32 -04:00
mm/rmap: rename vma_interval_tree_*() to mapping_rmap_tree_*()
The family of vma_interval_tree_() functions manipulate the address_space (which, of course, is generally referred to as 'mapping') reverse mapping, but are named the 'VMA' interval tree. VMAs may be mapped by an anon_vma, an address_space, or both. Therefore calling the mapping interval tree a 'VMA' interval tree is rather confusing. This is also inconsistent with the anon_vma_interval_tree_*() functions which explicitly reference the rmap object to which they pertain. Rename the vma_interval_tree_*() functions to mapping_rmap_tree_*() to correct this. We will rename the anon rmap functions similarly in a subsequent patch. No functional change intended. Link: https://lore.kernel.org/20260710-b4-pre-scalable-cow-v2-8-2a5aa403d977@kernel.org Signed-off-by: Lorenzo Stoakes <ljs@kernel.org> Reviewed-by: Gregory Price <gourry@gourry.net> Reviewed-by: Vlastimil Babka (SUSE) <vbabka@kernel.org> Reviewed-by: Zi Yan <ziy@nvidia.com> Cc: Ackerley Tng <ackerleytng@google.com> Cc: David Hildenbrand (Arm) <david@kernel.org> Cc: Kai Huang <kai.huang@intel.com> Cc: Marek Szyprowski <m.szyprowski@samsung.com> Cc: Pedro Falcato <pfalcato@suse.de> Cc: SJ Park <sj@kernel.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Liam R. Howlett (Oracle) <liam@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
5ec02309d7
commit
4b7a90a48b
@@ -140,7 +140,7 @@ make_coherent(struct address_space *mapping, struct vm_area_struct *vma,
|
||||
* cache coherency.
|
||||
*/
|
||||
flush_dcache_mmap_lock(mapping);
|
||||
vma_interval_tree_foreach(mpnt, mapping, pgoff, pgoff) {
|
||||
mapping_rmap_tree_foreach(mpnt, mapping, pgoff, pgoff) {
|
||||
/*
|
||||
* If we are using split PTE locks, then we need to take the pte
|
||||
* lock. Otherwise we are using shared mm->page_table_lock which
|
||||
|
||||
@@ -251,7 +251,7 @@ static void __flush_dcache_aliases(struct address_space *mapping, struct folio *
|
||||
pgoff_end = pgoff + folio_nr_pages(folio) - 1;
|
||||
|
||||
flush_dcache_mmap_lock(mapping);
|
||||
vma_interval_tree_foreach(vma, mapping, pgoff, pgoff_end) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, pgoff, pgoff_end) {
|
||||
unsigned long start, offset, pfn;
|
||||
unsigned int nr;
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ static void flush_aliases(struct address_space *mapping, struct folio *folio)
|
||||
pgoff = folio->index;
|
||||
|
||||
flush_dcache_mmap_lock_irqsave(mapping, flags);
|
||||
vma_interval_tree_foreach(vma, mapping, pgoff, pgoff + nr - 1) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, pgoff, pgoff + nr - 1) {
|
||||
unsigned long start;
|
||||
|
||||
if (vma->vm_mm != mm)
|
||||
|
||||
@@ -503,7 +503,7 @@ void flush_dcache_folio(struct folio *folio)
|
||||
* on machines that support equivalent aliasing
|
||||
*/
|
||||
flush_dcache_mmap_lock_irqsave(mapping, flags);
|
||||
vma_interval_tree_foreach(vma, mapping, pgoff, pgoff + nr - 1) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, pgoff, pgoff + nr - 1) {
|
||||
unsigned long offset = pgoff - vma->vm_pgoff;
|
||||
unsigned long pfn = folio_pfn(folio);
|
||||
|
||||
|
||||
2
fs/dax.c
2
fs/dax.c
@@ -1201,7 +1201,7 @@ static int dax_writeback_one(struct xa_state *xas, struct dax_device *dax_dev,
|
||||
|
||||
/* Walk all mappings of a given index of a file and writeprotect them */
|
||||
i_mmap_lock_read(mapping);
|
||||
vma_interval_tree_foreach(vma, mapping, index, end) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, index, end) {
|
||||
pfn_mkclean_range(pfn, count, index, vma);
|
||||
cond_resched();
|
||||
}
|
||||
|
||||
@@ -393,7 +393,7 @@ static void hugetlb_unmap_file_folio(struct hstate *h,
|
||||
i_mmap_lock_write(mapping);
|
||||
retry:
|
||||
vma_lock = NULL;
|
||||
vma_interval_tree_foreach(vma, mapping, start, end - 1) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, start, end - 1) {
|
||||
v_start = vma_offset_start(vma, start);
|
||||
v_end = vma_offset_end(vma, end);
|
||||
|
||||
@@ -469,7 +469,7 @@ hugetlb_vmdelete_list(struct address_space *mapping, pgoff_t start,
|
||||
* unmapped. Note, end is exclusive, whereas the interval tree takes
|
||||
* an inclusive "last".
|
||||
*/
|
||||
vma_interval_tree_foreach(vma, mapping, start,
|
||||
mapping_rmap_tree_foreach(vma, mapping, start,
|
||||
end ? end - 1 : ULONG_MAX) {
|
||||
unsigned long v_start;
|
||||
unsigned long v_end;
|
||||
|
||||
@@ -4094,24 +4094,24 @@ extern atomic_long_t mmap_pages_allocated;
|
||||
extern int nommu_shrink_inode_mappings(struct inode *, size_t, size_t);
|
||||
|
||||
/* interval_tree.c */
|
||||
void vma_interval_tree_insert(struct vm_area_struct *vma,
|
||||
void mapping_rmap_tree_insert(struct vm_area_struct *vma,
|
||||
struct address_space *mapping);
|
||||
void vma_interval_tree_insert_after(struct vm_area_struct *vma,
|
||||
void mapping_rmap_tree_insert_after(struct vm_area_struct *vma,
|
||||
struct vm_area_struct *prev,
|
||||
struct address_space *mapping);
|
||||
void vma_interval_tree_remove(struct vm_area_struct *vma,
|
||||
void mapping_rmap_tree_remove(struct vm_area_struct *vma,
|
||||
struct address_space *mapping);
|
||||
struct vm_area_struct *
|
||||
vma_interval_tree_iter_first(struct address_space *mapping,
|
||||
mapping_rmap_tree_iter_first(struct address_space *mapping,
|
||||
pgoff_t pgoff_start, pgoff_t pgoff_last);
|
||||
struct vm_area_struct *
|
||||
vma_interval_tree_iter_next(struct vm_area_struct *vma,
|
||||
mapping_rmap_tree_iter_next(struct vm_area_struct *vma,
|
||||
pgoff_t pgoff_start, pgoff_t pgoff_last);
|
||||
|
||||
#define vma_interval_tree_foreach(vma, mapping, pgoff_start, pgoff_last) \
|
||||
for (vma = vma_interval_tree_iter_first(mapping, pgoff_start, \
|
||||
#define mapping_rmap_tree_foreach(vma, mapping, pgoff_start, pgoff_last) \
|
||||
for (vma = mapping_rmap_tree_iter_first(mapping, pgoff_start, \
|
||||
pgoff_last); \
|
||||
vma; vma = vma_interval_tree_iter_next(vma, pgoff_start, \
|
||||
vma; vma = mapping_rmap_tree_iter_next(vma, pgoff_start, \
|
||||
pgoff_last))
|
||||
|
||||
void anon_vma_interval_tree_insert(struct anon_vma_chain *node,
|
||||
|
||||
@@ -1210,7 +1210,7 @@ build_map_info(struct address_space *mapping, loff_t offset, bool is_register)
|
||||
|
||||
again:
|
||||
i_mmap_lock_read(mapping);
|
||||
vma_interval_tree_foreach(vma, mapping, pgoff, pgoff) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, pgoff, pgoff) {
|
||||
if (!valid_vma(vma, is_register))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -5443,7 +5443,7 @@ static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
* __unmap_hugepage_range() is called as the lock is already held
|
||||
*/
|
||||
i_mmap_lock_write(mapping);
|
||||
vma_interval_tree_foreach(iter_vma, mapping, pgoff, pgoff) {
|
||||
mapping_rmap_tree_foreach(iter_vma, mapping, pgoff, pgoff) {
|
||||
/* Do not unmap the current VMA */
|
||||
if (iter_vma == vma)
|
||||
continue;
|
||||
@@ -6986,7 +6986,7 @@ pte_t *huge_pmd_share(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
pte_t *pte;
|
||||
|
||||
i_mmap_lock_read(mapping);
|
||||
vma_interval_tree_foreach(svma, mapping, idx, idx) {
|
||||
mapping_rmap_tree_foreach(svma, mapping, idx, idx) {
|
||||
if (svma == vma)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -16,16 +16,16 @@
|
||||
INTERVAL_TREE_DEFINE(struct vm_area_struct, shared.rb,
|
||||
pgoff_t, shared.rb_subtree_last,
|
||||
vma_start_pgoff, vma_last_pgoff, static,
|
||||
__vma_interval_tree)
|
||||
__mapping_rmap_tree)
|
||||
|
||||
void vma_interval_tree_insert(struct vm_area_struct *vma,
|
||||
void mapping_rmap_tree_insert(struct vm_area_struct *vma,
|
||||
struct address_space *mapping)
|
||||
{
|
||||
__vma_interval_tree_insert(vma, &mapping->i_mmap);
|
||||
__mapping_rmap_tree_insert(vma, &mapping->i_mmap);
|
||||
}
|
||||
|
||||
/* Insert vma immediately after prev in the interval tree */
|
||||
void vma_interval_tree_insert_after(struct vm_area_struct *vma,
|
||||
void mapping_rmap_tree_insert_after(struct vm_area_struct *vma,
|
||||
struct vm_area_struct *prev,
|
||||
struct address_space *mapping)
|
||||
{
|
||||
@@ -55,28 +55,28 @@ void vma_interval_tree_insert_after(struct vm_area_struct *vma,
|
||||
vma->shared.rb_subtree_last = pgoff_last;
|
||||
rb_link_node(&vma->shared.rb, &parent->shared.rb, link);
|
||||
rb_insert_augmented(&vma->shared.rb, &mapping->i_mmap.rb_root,
|
||||
&__vma_interval_tree_augment);
|
||||
&__mapping_rmap_tree_augment);
|
||||
}
|
||||
|
||||
void vma_interval_tree_remove(struct vm_area_struct *vma,
|
||||
void mapping_rmap_tree_remove(struct vm_area_struct *vma,
|
||||
struct address_space *mapping)
|
||||
{
|
||||
__vma_interval_tree_remove(vma, &mapping->i_mmap);
|
||||
__mapping_rmap_tree_remove(vma, &mapping->i_mmap);
|
||||
}
|
||||
|
||||
struct vm_area_struct *
|
||||
vma_interval_tree_iter_first(struct address_space *mapping,
|
||||
mapping_rmap_tree_iter_first(struct address_space *mapping,
|
||||
pgoff_t pgoff_start, pgoff_t pgoff_last)
|
||||
{
|
||||
return __vma_interval_tree_iter_first(&mapping->i_mmap,
|
||||
return __mapping_rmap_tree_iter_first(&mapping->i_mmap,
|
||||
pgoff_start, pgoff_last);
|
||||
}
|
||||
|
||||
struct vm_area_struct *
|
||||
vma_interval_tree_iter_next(struct vm_area_struct *vma,
|
||||
mapping_rmap_tree_iter_next(struct vm_area_struct *vma,
|
||||
pgoff_t pgoff_start, pgoff_t pgoff_last)
|
||||
{
|
||||
return __vma_interval_tree_iter_next(vma, pgoff_start, pgoff_last);
|
||||
return __mapping_rmap_tree_iter_next(vma, pgoff_start, pgoff_last);
|
||||
}
|
||||
|
||||
/* Anonymous interval tree (anon_vma->rb_root) */
|
||||
|
||||
@@ -2141,7 +2141,7 @@ static void retract_page_tables(struct address_space *mapping, pgoff_t pgoff)
|
||||
struct vm_area_struct *vma;
|
||||
|
||||
i_mmap_lock_read(mapping);
|
||||
vma_interval_tree_foreach(vma, mapping, pgoff, pgoff) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, pgoff, pgoff) {
|
||||
struct mmu_notifier_range range;
|
||||
struct mm_struct *mm;
|
||||
unsigned long addr;
|
||||
@@ -2573,7 +2573,7 @@ static enum scan_result collapse_file(struct mm_struct *mm, unsigned long addr,
|
||||
* not be able to observe any missing pages due to the
|
||||
* previously inserted retry entries.
|
||||
*/
|
||||
vma_interval_tree_foreach(vma, mapping, start, end) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, start, end) {
|
||||
if (userfaultfd_missing(vma)) {
|
||||
result = SCAN_EXCEED_NONE_PTE;
|
||||
goto immap_locked;
|
||||
|
||||
@@ -598,7 +598,7 @@ static void collect_procs_file(const struct folio *folio,
|
||||
|
||||
if (!t)
|
||||
continue;
|
||||
vma_interval_tree_foreach(vma, mapping, pgoff, pgoff) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, pgoff, pgoff) {
|
||||
/*
|
||||
* Send early kill signal to tasks where a vma covers
|
||||
* the page but the corrupted page is not necessarily
|
||||
@@ -649,7 +649,7 @@ static void collect_procs_fsdax(const struct page *page,
|
||||
t = task_early_kill(tsk, true);
|
||||
if (!t)
|
||||
continue;
|
||||
vma_interval_tree_foreach(vma, mapping, pgoff, pgoff) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, pgoff, pgoff) {
|
||||
if (vma->vm_mm == t->mm)
|
||||
add_to_kill_fsdax(t, page, vma, to_kill, pgoff);
|
||||
}
|
||||
@@ -2296,7 +2296,7 @@ static void collect_procs_pfn(struct pfn_address_space *pfn_space,
|
||||
t = task_early_kill(tsk, true);
|
||||
if (!t)
|
||||
continue;
|
||||
vma_interval_tree_foreach(vma, mapping, 0, ULONG_MAX) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, 0, ULONG_MAX) {
|
||||
pgoff_t pgoff;
|
||||
|
||||
if (vma->vm_mm == t->mm &&
|
||||
|
||||
@@ -4369,7 +4369,7 @@ static inline void unmap_mapping_range_tree(struct address_space *mapping,
|
||||
unsigned long start, size;
|
||||
struct mmu_gather tlb;
|
||||
|
||||
vma_interval_tree_foreach(vma, mapping, first_index, last_index) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, first_index, last_index) {
|
||||
const pgoff_t start_idx = max(first_index, vma->vm_pgoff);
|
||||
const pgoff_t end_idx = min(last_index, vma_last_pgoff(vma)) + 1;
|
||||
|
||||
|
||||
@@ -1830,7 +1830,7 @@ __latent_entropy int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
|
||||
mapping_allow_writable(mapping);
|
||||
flush_dcache_mmap_lock(mapping);
|
||||
/* insert tmp into the share list, just after mpnt */
|
||||
vma_interval_tree_insert_after(tmp, mpnt, mapping);
|
||||
mapping_rmap_tree_insert_after(tmp, mpnt, mapping);
|
||||
flush_dcache_mmap_unlock(mapping);
|
||||
i_mmap_unlock_write(mapping);
|
||||
}
|
||||
|
||||
@@ -569,7 +569,7 @@ static void setup_vma_to_mm(struct vm_area_struct *vma, struct mm_struct *mm)
|
||||
|
||||
i_mmap_lock_write(mapping);
|
||||
flush_dcache_mmap_lock(mapping);
|
||||
vma_interval_tree_insert(vma, mapping);
|
||||
mapping_rmap_tree_insert(vma, mapping);
|
||||
flush_dcache_mmap_unlock(mapping);
|
||||
i_mmap_unlock_write(mapping);
|
||||
}
|
||||
@@ -585,7 +585,7 @@ static void cleanup_vma_from_mm(struct vm_area_struct *vma)
|
||||
|
||||
i_mmap_lock_write(mapping);
|
||||
flush_dcache_mmap_lock(mapping);
|
||||
vma_interval_tree_remove(vma, mapping);
|
||||
mapping_rmap_tree_remove(vma, mapping);
|
||||
flush_dcache_mmap_unlock(mapping);
|
||||
i_mmap_unlock_write(mapping);
|
||||
}
|
||||
@@ -1839,7 +1839,7 @@ int nommu_shrink_inode_mappings(struct inode *inode, size_t size,
|
||||
i_mmap_lock_read(inode->i_mapping);
|
||||
|
||||
/* search for VMAs that fall within the dead zone */
|
||||
vma_interval_tree_foreach(vma, inode->i_mapping, low, high) {
|
||||
mapping_rmap_tree_foreach(vma, inode->i_mapping, low, high) {
|
||||
/* found one - only interested if it's shared out of the page
|
||||
* cache */
|
||||
if (vma->vm_flags & VM_SHARED) {
|
||||
@@ -1855,7 +1855,7 @@ int nommu_shrink_inode_mappings(struct inode *inode, size_t size,
|
||||
* we don't check for any regions that start beyond the EOF as there
|
||||
* shouldn't be any
|
||||
*/
|
||||
vma_interval_tree_foreach(vma, inode->i_mapping, 0, ULONG_MAX) {
|
||||
mapping_rmap_tree_foreach(vma, inode->i_mapping, 0, ULONG_MAX) {
|
||||
if (!(vma->vm_flags & VM_SHARED))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -810,7 +810,7 @@ int walk_page_mapping(struct address_space *mapping, pgoff_t first_index,
|
||||
return -EINVAL;
|
||||
|
||||
lockdep_assert_held(&mapping->i_mmap_rwsem);
|
||||
vma_interval_tree_foreach(vma, mapping, first_index,
|
||||
mapping_rmap_tree_foreach(vma, mapping, first_index,
|
||||
first_index + nr - 1) {
|
||||
/* Clip to the vma */
|
||||
vba = vma->vm_pgoff;
|
||||
|
||||
@@ -3053,7 +3053,7 @@ static void __rmap_walk_file(struct folio *folio, struct address_space *mapping,
|
||||
i_mmap_lock_read(mapping);
|
||||
}
|
||||
lookup:
|
||||
vma_interval_tree_foreach(vma, mapping, pgoff_start, pgoff_end) {
|
||||
mapping_rmap_tree_foreach(vma, mapping, pgoff_start, pgoff_end) {
|
||||
unsigned long address = vma_address(vma, pgoff_start, nr_pages);
|
||||
|
||||
VM_BUG_ON_VMA(address == -EFAULT, vma);
|
||||
|
||||
12
mm/vma.c
12
mm/vma.c
@@ -234,7 +234,7 @@ static void __vma_link_file(struct vm_area_struct *vma,
|
||||
mapping_allow_writable(mapping);
|
||||
|
||||
flush_dcache_mmap_lock(mapping);
|
||||
vma_interval_tree_insert(vma, mapping);
|
||||
mapping_rmap_tree_insert(vma, mapping);
|
||||
flush_dcache_mmap_unlock(mapping);
|
||||
}
|
||||
|
||||
@@ -248,7 +248,7 @@ static void __remove_shared_vm_struct(struct vm_area_struct *vma,
|
||||
mapping_unmap_writable(mapping);
|
||||
|
||||
flush_dcache_mmap_lock(mapping);
|
||||
vma_interval_tree_remove(vma, mapping);
|
||||
mapping_rmap_tree_remove(vma, mapping);
|
||||
flush_dcache_mmap_unlock(mapping);
|
||||
}
|
||||
|
||||
@@ -319,9 +319,9 @@ static void vma_prepare(struct vma_prepare *vp)
|
||||
|
||||
if (vp->file) {
|
||||
flush_dcache_mmap_lock(vp->mapping);
|
||||
vma_interval_tree_remove(vp->vma, vp->mapping);
|
||||
mapping_rmap_tree_remove(vp->vma, vp->mapping);
|
||||
if (vp->adj_next)
|
||||
vma_interval_tree_remove(vp->adj_next, vp->mapping);
|
||||
mapping_rmap_tree_remove(vp->adj_next, vp->mapping);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -339,8 +339,8 @@ static void vma_complete(struct vma_prepare *vp, struct vma_iterator *vmi,
|
||||
{
|
||||
if (vp->file) {
|
||||
if (vp->adj_next)
|
||||
vma_interval_tree_insert(vp->adj_next, vp->mapping);
|
||||
vma_interval_tree_insert(vp->vma, vp->mapping);
|
||||
mapping_rmap_tree_insert(vp->adj_next, vp->mapping);
|
||||
mapping_rmap_tree_insert(vp->vma, vp->mapping);
|
||||
flush_dcache_mmap_unlock(vp->mapping);
|
||||
}
|
||||
|
||||
|
||||
@@ -257,12 +257,12 @@ static inline void vm_acct_memory(long pages)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void vma_interval_tree_insert(struct vm_area_struct *vma,
|
||||
static inline void mapping_rmap_tree_insert(struct vm_area_struct *vma,
|
||||
struct address_space *mapping)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void vma_interval_tree_remove(struct vm_area_struct *vma,
|
||||
static inline void mapping_rmap_tree_remove(struct vm_area_struct *vma,
|
||||
struct address_space *mapping)
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user