forked from Minki/linux
Document ->page_mkwrite() locking
There seems to be very little documentation about this callback in general. The locking in particular is a bit tricky, so it's worth having this in writing. Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Cc: David Howells <dhowells@redhat.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
6967614761
commit
ed2f2f9b3f
@ -512,13 +512,22 @@ prototypes:
|
||||
void (*close)(struct vm_area_struct*);
|
||||
struct page *(*fault)(struct vm_area_struct*, struct fault_data *);
|
||||
struct page *(*nopage)(struct vm_area_struct*, unsigned long, int *);
|
||||
int (*page_mkwrite)(struct vm_area_struct *, struct page *);
|
||||
|
||||
locking rules:
|
||||
BKL mmap_sem
|
||||
BKL mmap_sem PageLocked(page)
|
||||
open: no yes
|
||||
close: no yes
|
||||
fault: no yes
|
||||
nopage: no yes
|
||||
page_mkwrite: no yes no
|
||||
|
||||
->page_mkwrite() is called when a previously read-only page is
|
||||
about to become writeable. The file system is responsible for
|
||||
protecting against truncate races. Once appropriate action has been
|
||||
taking to lock out truncate, the page range should be verified to be
|
||||
within i_size. The page mapping should also be checked that it is not
|
||||
NULL.
|
||||
|
||||
================================================================================
|
||||
Dubious stuff
|
||||
|
Loading…
Reference in New Issue
Block a user