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*);
|
void (*close)(struct vm_area_struct*);
|
||||||
struct page *(*fault)(struct vm_area_struct*, struct fault_data *);
|
struct page *(*fault)(struct vm_area_struct*, struct fault_data *);
|
||||||
struct page *(*nopage)(struct vm_area_struct*, unsigned long, int *);
|
struct page *(*nopage)(struct vm_area_struct*, unsigned long, int *);
|
||||||
|
int (*page_mkwrite)(struct vm_area_struct *, struct page *);
|
||||||
|
|
||||||
locking rules:
|
locking rules:
|
||||||
BKL mmap_sem
|
BKL mmap_sem PageLocked(page)
|
||||||
open: no yes
|
open: no yes
|
||||||
close: no yes
|
close: no yes
|
||||||
fault: no yes
|
fault: no yes
|
||||||
nopage: 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
|
Dubious stuff
|
||||||
|
Loading…
Reference in New Issue
Block a user