Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ed2f2f9b authored by Mark Fasheh's avatar Mark Fasheh Committed by Linus Torvalds
Browse files

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: default avatarMark Fasheh <mark.fasheh@oracle.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: David Howells <dhowells@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 69676147
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -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