mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
mm/rmap: share the i_mmap_rwsem
Similarly to the anon memory counterpart, we can share the mapping's lock ownership as the interval tree is not modified when doing doing the walk, only the file page. Signed-off-by: Davidlohr Bueso <[email protected]> Acked-by: Rik van Riel <[email protected]> Acked-by: "Kirill A. Shutemov" <[email protected]> Acked-by: Hugh Dickins <[email protected]> Cc: Oleg Nesterov <[email protected]> Acked-by: Peter Zijlstra (Intel) <[email protected]> Cc: Srikar Dronamraju <[email protected]> Acked-by: Mel Gorman <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
c8c06efa8b
commit
3dec0ba0be
2 changed files with 13 additions and 3 deletions
|
|
@ -1690,7 +1690,8 @@ static int rmap_walk_file(struct page *page, struct rmap_walk_control *rwc)
|
|||
|
||||
if (!mapping)
|
||||
return ret;
|
||||
i_mmap_lock_write(mapping);
|
||||
|
||||
i_mmap_lock_read(mapping);
|
||||
vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) {
|
||||
unsigned long address = vma_address(page, vma);
|
||||
|
||||
|
|
@ -1711,9 +1712,8 @@ static int rmap_walk_file(struct page *page, struct rmap_walk_control *rwc)
|
|||
goto done;
|
||||
|
||||
ret = rwc->file_nonlinear(page, mapping, rwc->arg);
|
||||
|
||||
done:
|
||||
i_mmap_unlock_write(mapping);
|
||||
i_mmap_unlock_read(mapping);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue