mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 14:41:27 +00:00
mm: Convert i_mmap_lock to a mutex
Straightforward conversion of i_mmap_lock to a mutex. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Acked-by: Hugh Dickins <hughd@google.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: David Miller <davem@davemloft.net> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Russell King <rmk@arm.linux.org.uk> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Jeff Dike <jdike@addtoit.com> Cc: Richard Weinberger <richard@nod.at> Cc: Tony Luck <tony.luck@intel.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Mel Gorman <mel@csn.ul.ie> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Nick Piggin <npiggin@kernel.dk> Cc: Namhyung Kim <namhyung@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
97a894136f
commit
3d48ae45e7
17 changed files with 58 additions and 58 deletions
28
mm/rmap.c
28
mm/rmap.c
|
@ -24,7 +24,7 @@
|
|||
* inode->i_alloc_sem (vmtruncate_range)
|
||||
* mm->mmap_sem
|
||||
* page->flags PG_locked (lock_page)
|
||||
* mapping->i_mmap_lock
|
||||
* mapping->i_mmap_mutex
|
||||
* anon_vma->lock
|
||||
* mm->page_table_lock or pte_lock
|
||||
* zone->lru_lock (in mark_page_accessed, isolate_lru_page)
|
||||
|
@ -646,14 +646,14 @@ static int page_referenced_file(struct page *page,
|
|||
* The page lock not only makes sure that page->mapping cannot
|
||||
* suddenly be NULLified by truncation, it makes sure that the
|
||||
* structure at mapping cannot be freed and reused yet,
|
||||
* so we can safely take mapping->i_mmap_lock.
|
||||
* so we can safely take mapping->i_mmap_mutex.
|
||||
*/
|
||||
BUG_ON(!PageLocked(page));
|
||||
|
||||
spin_lock(&mapping->i_mmap_lock);
|
||||
mutex_lock(&mapping->i_mmap_mutex);
|
||||
|
||||
/*
|
||||
* i_mmap_lock does not stabilize mapcount at all, but mapcount
|
||||
* i_mmap_mutex does not stabilize mapcount at all, but mapcount
|
||||
* is more likely to be accurate if we note it after spinning.
|
||||
*/
|
||||
mapcount = page_mapcount(page);
|
||||
|
@ -675,7 +675,7 @@ static int page_referenced_file(struct page *page,
|
|||
break;
|
||||
}
|
||||
|
||||
spin_unlock(&mapping->i_mmap_lock);
|
||||
mutex_unlock(&mapping->i_mmap_mutex);
|
||||
return referenced;
|
||||
}
|
||||
|
||||
|
@ -762,7 +762,7 @@ static int page_mkclean_file(struct address_space *mapping, struct page *page)
|
|||
|
||||
BUG_ON(PageAnon(page));
|
||||
|
||||
spin_lock(&mapping->i_mmap_lock);
|
||||
mutex_lock(&mapping->i_mmap_mutex);
|
||||
vma_prio_tree_foreach(vma, &iter, &mapping->i_mmap, pgoff, pgoff) {
|
||||
if (vma->vm_flags & VM_SHARED) {
|
||||
unsigned long address = vma_address(page, vma);
|
||||
|
@ -771,7 +771,7 @@ static int page_mkclean_file(struct address_space *mapping, struct page *page)
|
|||
ret += page_mkclean_one(page, vma, address);
|
||||
}
|
||||
}
|
||||
spin_unlock(&mapping->i_mmap_lock);
|
||||
mutex_unlock(&mapping->i_mmap_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1119,7 +1119,7 @@ out_mlock:
|
|||
/*
|
||||
* We need mmap_sem locking, Otherwise VM_LOCKED check makes
|
||||
* unstable result and race. Plus, We can't wait here because
|
||||
* we now hold anon_vma->lock or mapping->i_mmap_lock.
|
||||
* we now hold anon_vma->lock or mapping->i_mmap_mutex.
|
||||
* if trylock failed, the page remain in evictable lru and later
|
||||
* vmscan could retry to move the page to unevictable lru if the
|
||||
* page is actually mlocked.
|
||||
|
@ -1345,7 +1345,7 @@ static int try_to_unmap_file(struct page *page, enum ttu_flags flags)
|
|||
unsigned long max_nl_size = 0;
|
||||
unsigned int mapcount;
|
||||
|
||||
spin_lock(&mapping->i_mmap_lock);
|
||||
mutex_lock(&mapping->i_mmap_mutex);
|
||||
vma_prio_tree_foreach(vma, &iter, &mapping->i_mmap, pgoff, pgoff) {
|
||||
unsigned long address = vma_address(page, vma);
|
||||
if (address == -EFAULT)
|
||||
|
@ -1391,7 +1391,7 @@ static int try_to_unmap_file(struct page *page, enum ttu_flags flags)
|
|||
mapcount = page_mapcount(page);
|
||||
if (!mapcount)
|
||||
goto out;
|
||||
cond_resched_lock(&mapping->i_mmap_lock);
|
||||
cond_resched();
|
||||
|
||||
max_nl_size = (max_nl_size + CLUSTER_SIZE - 1) & CLUSTER_MASK;
|
||||
if (max_nl_cursor == 0)
|
||||
|
@ -1413,7 +1413,7 @@ static int try_to_unmap_file(struct page *page, enum ttu_flags flags)
|
|||
}
|
||||
vma->vm_private_data = (void *) max_nl_cursor;
|
||||
}
|
||||
cond_resched_lock(&mapping->i_mmap_lock);
|
||||
cond_resched();
|
||||
max_nl_cursor += CLUSTER_SIZE;
|
||||
} while (max_nl_cursor <= max_nl_size);
|
||||
|
||||
|
@ -1425,7 +1425,7 @@ static int try_to_unmap_file(struct page *page, enum ttu_flags flags)
|
|||
list_for_each_entry(vma, &mapping->i_mmap_nonlinear, shared.vm_set.list)
|
||||
vma->vm_private_data = NULL;
|
||||
out:
|
||||
spin_unlock(&mapping->i_mmap_lock);
|
||||
mutex_unlock(&mapping->i_mmap_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1544,7 +1544,7 @@ static int rmap_walk_file(struct page *page, int (*rmap_one)(struct page *,
|
|||
|
||||
if (!mapping)
|
||||
return ret;
|
||||
spin_lock(&mapping->i_mmap_lock);
|
||||
mutex_lock(&mapping->i_mmap_mutex);
|
||||
vma_prio_tree_foreach(vma, &iter, &mapping->i_mmap, pgoff, pgoff) {
|
||||
unsigned long address = vma_address(page, vma);
|
||||
if (address == -EFAULT)
|
||||
|
@ -1558,7 +1558,7 @@ static int rmap_walk_file(struct page *page, int (*rmap_one)(struct page *,
|
|||
* never contain migration ptes. Decide what to do about this
|
||||
* limitation to linear when we need rmap_walk() on nonlinear.
|
||||
*/
|
||||
spin_unlock(&mapping->i_mmap_lock);
|
||||
mutex_unlock(&mapping->i_mmap_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue