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:
Mark Fasheh 2007-07-19 01:47:01 -07:00 committed by Linus Torvalds
parent 6967614761
commit ed2f2f9b3f

View File

@ -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