The patch titled Subject: mm/rmap: share the i_mmap_rwsem has been added to the -mm tree. Its filename is mm-rmap-share-the-i_mmap_rwsem.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-rmap-share-the-i_mmap_rwsem.patch echo and later at echo http://ozlabs.org/~akpm/mmotm/broken-out/mm-rmap-share-the-i_mmap_rwsem.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Davidlohr Bueso <dave@xxxxxxxxxxxx> Subject: 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 <dbueso@xxxxxxx> Acked-by: Rik van Riel <riel@xxxxxxxxxx> Acked-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> Acked-by: Hugh Dickins <hughd@xxxxxxxxxx> Cc: Oleg Nesterov <oleg@xxxxxxxxxx> Acked-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> Cc: Srikar Dronamraju <srikar@xxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/fs.h | 10 ++++++++++ mm/rmap.c | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff -puN include/linux/fs.h~mm-rmap-share-the-i_mmap_rwsem include/linux/fs.h --- a/include/linux/fs.h~mm-rmap-share-the-i_mmap_rwsem +++ a/include/linux/fs.h @@ -478,6 +478,16 @@ static inline void i_mmap_unlock_write(s up_write(&mapping->i_mmap_rwsem); } +static inline void i_mmap_lock_read(struct address_space *mapping) +{ + down_read(&mapping->i_mmap_rwsem); +} + +static inline void i_mmap_unlock_read(struct address_space *mapping) +{ + up_read(&mapping->i_mmap_rwsem); +} + /* * Might pages of this file be mapped into userspace? */ diff -puN mm/rmap.c~mm-rmap-share-the-i_mmap_rwsem mm/rmap.c --- a/mm/rmap.c~mm-rmap-share-the-i_mmap_rwsem +++ a/mm/rmap.c @@ -1688,7 +1688,8 @@ static int rmap_walk_file(struct page *p 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); @@ -1709,9 +1710,8 @@ static int rmap_walk_file(struct page *p goto done; ret = rwc->file_nonlinear(page, mapping, rwc->arg); - done: - i_mmap_unlock_write(mapping); + i_mmap_unlock_read(mapping); return ret; } _ Patches currently in -mm which might be from dave@xxxxxxxxxxxx are mmfs-introduce-helpers-around-the-i_mmap_mutex.patch mm-use-new-helper-functions-around-the-i_mmap_mutex.patch mm-convert-i_mmap_mutex-to-rwsem.patch mm-rmap-share-the-i_mmap_rwsem.patch uprobes-share-the-i_mmap_rwsem.patch mm-xip-share-the-i_mmap_rwsem.patch mm-memory-failure-share-the-i_mmap_rwsem.patch mm-nommu-share-the-i_mmap_rwsem.patch ipc-semc-chance-memory-barrier-in-sem_lock-to-smp_rmb.patch ipc-semc-chance-memory-barrier-in-sem_lock-to-smp_rmb-fix.patch ipc-semc-chance-memory-barrier-in-sem_lock-to-smp_rmb-fix-fix.patch ipc-semc-increase-semmsl-semmni-semopm.patch ipc-msg-increase-msgmni-remove-scaling.patch ipc-msg-increase-msgmni-remove-scaling-checkpatch-fixes.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html