aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Fasheh <mark.fasheh@oracle.com>2007-07-19 04:47:01 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-19 13:04:41 -0400
commited2f2f9b3ff8debdf512f7687b232c3c1d7d60d7 (patch)
treef935333e6d233ba0f119d4642b15063ba544fddf
parent6967614761fd305b3414d9485d89dc2e0a407410 (diff)
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>
-rw-r--r--Documentation/filesystems/Locking11
1 files changed, 10 insertions, 1 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index 970c8ec1a05b..91ec4b40ebfe 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -512,13 +512,22 @@ prototypes:
512 void (*close)(struct vm_area_struct*); 512 void (*close)(struct vm_area_struct*);
513 struct page *(*fault)(struct vm_area_struct*, struct fault_data *); 513 struct page *(*fault)(struct vm_area_struct*, struct fault_data *);
514 struct page *(*nopage)(struct vm_area_struct*, unsigned long, int *); 514 struct page *(*nopage)(struct vm_area_struct*, unsigned long, int *);
515 int (*page_mkwrite)(struct vm_area_struct *, struct page *);
515 516
516locking rules: 517locking rules:
517 BKL mmap_sem 518 BKL mmap_sem PageLocked(page)
518open: no yes 519open: no yes
519close: no yes 520close: no yes
520fault: no yes 521fault: no yes
521nopage: no yes 522nopage: no yes
523page_mkwrite: no yes no
524
525 ->page_mkwrite() is called when a previously read-only page is
526about to become writeable. The file system is responsible for
527protecting against truncate races. Once appropriate action has been
528taking to lock out truncate, the page range should be verified to be
529within i_size. The page mapping should also be checked that it is not
530NULL.
522 531
523================================================================================ 532================================================================================
524 Dubious stuff 533 Dubious stuff