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