|
@@ -10,7 +10,6 @@
|
|
#include <linux/mmzone.h>
|
|
#include <linux/mmzone.h>
|
|
#include <linux/rbtree.h>
|
|
#include <linux/rbtree.h>
|
|
#include <linux/prio_tree.h>
|
|
#include <linux/prio_tree.h>
|
|
-#include <linux/fs.h>
|
|
|
|
#include <linux/mutex.h>
|
|
#include <linux/mutex.h>
|
|
#include <linux/debug_locks.h>
|
|
#include <linux/debug_locks.h>
|
|
#include <linux/backing-dev.h>
|
|
#include <linux/backing-dev.h>
|
|
@@ -18,7 +17,9 @@
|
|
|
|
|
|
struct mempolicy;
|
|
struct mempolicy;
|
|
struct anon_vma;
|
|
struct anon_vma;
|
|
|
|
+struct file_ra_state;
|
|
struct user_struct;
|
|
struct user_struct;
|
|
|
|
+struct writeback_control;
|
|
|
|
|
|
#ifndef CONFIG_DISCONTIGMEM /* Don't use mapnrs, do it properly */
|
|
#ifndef CONFIG_DISCONTIGMEM /* Don't use mapnrs, do it properly */
|
|
extern unsigned long max_mapnr;
|
|
extern unsigned long max_mapnr;
|
|
@@ -861,38 +862,7 @@ struct shrinker {
|
|
extern void register_shrinker(struct shrinker *);
|
|
extern void register_shrinker(struct shrinker *);
|
|
extern void unregister_shrinker(struct shrinker *);
|
|
extern void unregister_shrinker(struct shrinker *);
|
|
|
|
|
|
-/*
|
|
|
|
- * Some shared mappigns will want the pages marked read-only
|
|
|
|
- * to track write events. If so, we'll downgrade vm_page_prot
|
|
|
|
- * to the private version (using protection_map[] without the
|
|
|
|
- * VM_SHARED bit).
|
|
|
|
- */
|
|
|
|
-static inline int vma_wants_writenotify(struct vm_area_struct *vma)
|
|
|
|
-{
|
|
|
|
- unsigned int vm_flags = vma->vm_flags;
|
|
|
|
-
|
|
|
|
- /* If it was private or non-writable, the write bit is already clear */
|
|
|
|
- if ((vm_flags & (VM_WRITE|VM_SHARED)) != ((VM_WRITE|VM_SHARED)))
|
|
|
|
- return 0;
|
|
|
|
-
|
|
|
|
- /* The backer wishes to know when pages are first written to? */
|
|
|
|
- if (vma->vm_ops && vma->vm_ops->page_mkwrite)
|
|
|
|
- return 1;
|
|
|
|
-
|
|
|
|
- /* The open routine did something to the protections already? */
|
|
|
|
- if (pgprot_val(vma->vm_page_prot) !=
|
|
|
|
- pgprot_val(protection_map[vm_flags &
|
|
|
|
- (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]))
|
|
|
|
- return 0;
|
|
|
|
-
|
|
|
|
- /* Specialty mapping? */
|
|
|
|
- if (vm_flags & (VM_PFNMAP|VM_INSERTPAGE))
|
|
|
|
- return 0;
|
|
|
|
-
|
|
|
|
- /* Can the mapping track the dirty pages? */
|
|
|
|
- return vma->vm_file && vma->vm_file->f_mapping &&
|
|
|
|
- mapping_cap_account_dirty(vma->vm_file->f_mapping);
|
|
|
|
-}
|
|
|
|
|
|
+int vma_wants_writenotify(struct vm_area_struct *vma);
|
|
|
|
|
|
extern pte_t *FASTCALL(get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl));
|
|
extern pte_t *FASTCALL(get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl));
|
|
|
|
|