提交 82591e6e 编写于 作者: N Nick Piggin 提交者: Linus Torvalds

[PATCH] mm: more commenting on lock ordering

Clarify lockorder comments now that sys_msync dropps mmap_sem before
calling do_fsync.
Signed-off-by: NNick Piggin <npiggin@suse.de>
Signed-off-by: NHugh Dickins <hugh@veritas.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 b95936cb
...@@ -75,8 +75,8 @@ generic_file_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, ...@@ -75,8 +75,8 @@ generic_file_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
* ->mmap_sem * ->mmap_sem
* ->lock_page (access_process_vm) * ->lock_page (access_process_vm)
* *
* ->mmap_sem * ->i_mutex (generic_file_buffered_write)
* ->i_mutex (msync) * ->mmap_sem (fault_in_pages_readable->do_page_fault)
* *
* ->i_mutex * ->i_mutex
* ->i_alloc_sem (various) * ->i_alloc_sem (various)
......
...@@ -21,27 +21,21 @@ ...@@ -21,27 +21,21 @@
* Lock ordering in mm: * Lock ordering in mm:
* *
* inode->i_mutex (while writing or truncating, not reading or faulting) * inode->i_mutex (while writing or truncating, not reading or faulting)
* inode->i_alloc_sem * inode->i_alloc_sem (vmtruncate_range)
* * mm->mmap_sem
* When a page fault occurs in writing from user to file, down_read * page->flags PG_locked (lock_page)
* of mmap_sem nests within i_mutex; in sys_msync, i_mutex nests within * mapping->i_mmap_lock
* down_read of mmap_sem; i_mutex and down_write of mmap_sem are never * anon_vma->lock
* taken together; in truncation, i_mutex is taken outermost. * mm->page_table_lock or pte_lock
* * zone->lru_lock (in mark_page_accessed, isolate_lru_page)
* mm->mmap_sem * swap_lock (in swap_duplicate, swap_info_get)
* page->flags PG_locked (lock_page) * mmlist_lock (in mmput, drain_mmlist and others)
* mapping->i_mmap_lock * mapping->private_lock (in __set_page_dirty_buffers)
* anon_vma->lock * inode_lock (in set_page_dirty's __mark_inode_dirty)
* mm->page_table_lock or pte_lock * sb_lock (within inode_lock in fs/fs-writeback.c)
* zone->lru_lock (in mark_page_accessed, isolate_lru_page) * mapping->tree_lock (widely used, in set_page_dirty,
* swap_lock (in swap_duplicate, swap_info_get) * in arch-dependent flush_dcache_mmap_lock,
* mmlist_lock (in mmput, drain_mmlist and others) * within inode_lock in __sync_single_inode)
* mapping->private_lock (in __set_page_dirty_buffers)
* inode_lock (in set_page_dirty's __mark_inode_dirty)
* sb_lock (within inode_lock in fs/fs-writeback.c)
* mapping->tree_lock (widely used, in set_page_dirty,
* in arch-dependent flush_dcache_mmap_lock,
* within inode_lock in __sync_single_inode)
*/ */
#include <linux/mm.h> #include <linux/mm.h>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册