Commit 4e950f6f0189f65f8bf069cf2272649ef418f5e4
Committed by
Linus Torvalds
1 parent
673d5b43da
Exists in
master
and in
39 other branches
Remove fs.h from mm.h
Remove fs.h from mm.h. For this, 1) Uninline vma_wants_writenotify(). It's pretty huge anyway. 2) Add back fs.h or less bloated headers (err.h) to files that need it. As result, on x86_64 allyesconfig, fs.h dependencies cut down from 3929 files rebuilt down to 3444 (-12.3%). Cross-compile tested without regressions on my two usual configs and (sigh): alpha arm-mx1ads mips-bigsur powerpc-ebony alpha-allnoconfig arm-neponset mips-capcella powerpc-g5 alpha-defconfig arm-netwinder mips-cobalt powerpc-holly alpha-up arm-netx mips-db1000 powerpc-iseries arm arm-ns9xxx mips-db1100 powerpc-linkstation arm-assabet arm-omap_h2_1610 mips-db1200 powerpc-lite5200 arm-at91rm9200dk arm-onearm mips-db1500 powerpc-maple arm-at91rm9200ek arm-picotux200 mips-db1550 powerpc-mpc7448_hpc2 arm-at91sam9260ek arm-pleb mips-ddb5477 powerpc-mpc8272_ads arm-at91sam9261ek arm-pnx4008 mips-decstation powerpc-mpc8313_rdb arm-at91sam9263ek arm-pxa255-idp mips-e55 powerpc-mpc832x_mds arm-at91sam9rlek arm-realview mips-emma2rh powerpc-mpc832x_rdb arm-ateb9200 arm-realview-smp mips-excite powerpc-mpc834x_itx arm-badge4 arm-rpc mips-fulong powerpc-mpc834x_itxgp arm-carmeva arm-s3c2410 mips-ip22 powerpc-mpc834x_mds arm-cerfcube arm-shannon mips-ip27 powerpc-mpc836x_mds arm-clps7500 arm-shark mips-ip32 powerpc-mpc8540_ads arm-collie arm-simpad mips-jazz powerpc-mpc8544_ds arm-corgi arm-spitz mips-jmr3927 powerpc-mpc8560_ads arm-csb337 arm-trizeps4 mips-malta powerpc-mpc8568mds arm-csb637 arm-versatile mips-mipssim powerpc-mpc85xx_cds arm-ebsa110 i386 mips-mpc30x powerpc-mpc8641_hpcn arm-edb7211 i386-allnoconfig mips-msp71xx powerpc-mpc866_ads arm-em_x270 i386-defconfig mips-ocelot powerpc-mpc885_ads arm-ep93xx i386-up mips-pb1100 powerpc-pasemi arm-footbridge ia64 mips-pb1500 powerpc-pmac32 arm-fortunet ia64-allnoconfig mips-pb1550 powerpc-ppc64 arm-h3600 ia64-bigsur mips-pnx8550-jbs powerpc-prpmc2800 arm-h7201 ia64-defconfig mips-pnx8550-stb810 powerpc-ps3 arm-h7202 ia64-gensparse mips-qemu powerpc-pseries arm-hackkit ia64-sim mips-rbhma4200 powerpc-up arm-integrator ia64-sn2 mips-rbhma4500 s390 arm-iop13xx ia64-tiger mips-rm200 s390-allnoconfig arm-iop32x ia64-up mips-sb1250-swarm s390-defconfig arm-iop33x ia64-zx1 mips-sead s390-up arm-ixp2000 m68k mips-tb0219 sparc arm-ixp23xx m68k-amiga mips-tb0226 sparc-allnoconfig arm-ixp4xx m68k-apollo mips-tb0287 sparc-defconfig arm-jornada720 m68k-atari mips-workpad sparc-up arm-kafa m68k-bvme6000 mips-wrppmc sparc64 arm-kb9202 m68k-hp300 mips-yosemite sparc64-allnoconfig arm-ks8695 m68k-mac parisc sparc64-defconfig arm-lart m68k-mvme147 parisc-allnoconfig sparc64-up arm-lpd270 m68k-mvme16x parisc-defconfig um-x86_64 arm-lpd7a400 m68k-q40 parisc-up x86_64 arm-lpd7a404 m68k-sun3 powerpc x86_64-allnoconfig arm-lubbock m68k-sun3x powerpc-cell x86_64-defconfig arm-lusl7200 mips powerpc-celleb x86_64-up arm-mainstone mips-atlas powerpc-chrp32 Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 45 changed files with 81 additions and 33 deletions Side-by-side Diff
- arch/alpha/kernel/smp.c
- arch/arm/kernel/setup.c
- arch/arm/kernel/smp.c
- arch/frv/kernel/sys_frv.c
- arch/i386/kernel/microcode.c
- arch/i386/kernel/sys_i386.c
- arch/i386/kernel/sysenter.c
- arch/ia64/kernel/init_task.c
- arch/m68k/kernel/process.c
- arch/m68k/kernel/sys_m68k.c
- arch/mips/kernel/smp.c
- arch/mips/kernel/syscall.c
- arch/parisc/hpux/fs.c
- arch/parisc/kernel/init_task.c
- arch/parisc/kernel/process.c
- arch/parisc/kernel/smp.c
- arch/powerpc/kernel/syscalls.c
- arch/powerpc/lib/rheap.c
- arch/powerpc/oprofile/cell/spu_task_sync.c
- arch/s390/kernel/init_task.c
- arch/s390/kernel/process.c
- arch/s390/kernel/smp.c
- arch/s390/kernel/sys_s390.c
- arch/sparc/kernel/init_task.c
- arch/sparc64/kernel/init_task.c
- arch/sparc64/kernel/process.c
- arch/um/drivers/mmapper_kern.c
- arch/um/kernel/exec.c
- arch/um/kernel/init_task.c
- arch/um/kernel/syscall.c
- arch/x86_64/ia32/ptrace32.c
- arch/x86_64/kernel/process.c
- arch/x86_64/kernel/sys_x86_64.c
- arch/x86_64/vdso/vma.c
- drivers/char/agp/compat_ioctl.c
- drivers/char/agp/frontend.c
- drivers/char/mmtimer.c
- drivers/char/mspec.c
- drivers/infiniband/hw/ipath/ipath_diag.c
- fs/dcookies.c
- include/linux/hugetlb.h
- include/linux/mm.h
- mm/mmap.c
- mm/oom_kill.c
- mm/vmstat.c
arch/alpha/kernel/smp.c
arch/arm/kernel/setup.c
arch/arm/kernel/smp.c
arch/frv/kernel/sys_frv.c
arch/i386/kernel/microcode.c
arch/i386/kernel/sys_i386.c
arch/i386/kernel/sysenter.c
arch/ia64/kernel/init_task.c
arch/m68k/kernel/process.c
arch/m68k/kernel/sys_m68k.c
arch/mips/kernel/smp.c
arch/mips/kernel/syscall.c
arch/parisc/hpux/fs.c
arch/parisc/kernel/init_task.c
arch/parisc/kernel/process.c
arch/parisc/kernel/smp.c
arch/powerpc/kernel/syscalls.c
arch/powerpc/lib/rheap.c
arch/powerpc/oprofile/cell/spu_task_sync.c
arch/s390/kernel/init_task.c
arch/s390/kernel/process.c
arch/s390/kernel/smp.c
arch/s390/kernel/sys_s390.c
arch/sparc/kernel/init_task.c
arch/sparc64/kernel/init_task.c
arch/sparc64/kernel/process.c
arch/um/drivers/mmapper_kern.c
arch/um/kernel/exec.c
arch/um/kernel/init_task.c
arch/um/kernel/syscall.c
arch/x86_64/ia32/ptrace32.c
arch/x86_64/kernel/process.c
arch/x86_64/kernel/sys_x86_64.c
arch/x86_64/vdso/vma.c
drivers/char/agp/compat_ioctl.c
drivers/char/agp/frontend.c
drivers/char/mmtimer.c
drivers/char/mspec.c
drivers/infiniband/hw/ipath/ipath_diag.c
fs/dcookies.c
include/linux/hugetlb.h
include/linux/mm.h
... | ... | @@ -10,7 +10,6 @@ |
10 | 10 | #include <linux/mmzone.h> |
11 | 11 | #include <linux/rbtree.h> |
12 | 12 | #include <linux/prio_tree.h> |
13 | -#include <linux/fs.h> | |
14 | 13 | #include <linux/mutex.h> |
15 | 14 | #include <linux/debug_locks.h> |
16 | 15 | #include <linux/backing-dev.h> |
17 | 16 | |
... | ... | @@ -18,7 +17,9 @@ |
18 | 17 | |
19 | 18 | struct mempolicy; |
20 | 19 | struct anon_vma; |
20 | +struct file_ra_state; | |
21 | 21 | struct user_struct; |
22 | +struct writeback_control; | |
22 | 23 | |
23 | 24 | #ifndef CONFIG_DISCONTIGMEM /* Don't use mapnrs, do it properly */ |
24 | 25 | extern unsigned long max_mapnr; |
... | ... | @@ -861,38 +862,7 @@ |
861 | 862 | extern void register_shrinker(struct shrinker *); |
862 | 863 | extern void unregister_shrinker(struct shrinker *); |
863 | 864 | |
864 | -/* | |
865 | - * Some shared mappigns will want the pages marked read-only | |
866 | - * to track write events. If so, we'll downgrade vm_page_prot | |
867 | - * to the private version (using protection_map[] without the | |
868 | - * VM_SHARED bit). | |
869 | - */ | |
870 | -static inline int vma_wants_writenotify(struct vm_area_struct *vma) | |
871 | -{ | |
872 | - unsigned int vm_flags = vma->vm_flags; | |
873 | - | |
874 | - /* If it was private or non-writable, the write bit is already clear */ | |
875 | - if ((vm_flags & (VM_WRITE|VM_SHARED)) != ((VM_WRITE|VM_SHARED))) | |
876 | - return 0; | |
877 | - | |
878 | - /* The backer wishes to know when pages are first written to? */ | |
879 | - if (vma->vm_ops && vma->vm_ops->page_mkwrite) | |
880 | - return 1; | |
881 | - | |
882 | - /* The open routine did something to the protections already? */ | |
883 | - if (pgprot_val(vma->vm_page_prot) != | |
884 | - pgprot_val(protection_map[vm_flags & | |
885 | - (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)])) | |
886 | - return 0; | |
887 | - | |
888 | - /* Specialty mapping? */ | |
889 | - if (vm_flags & (VM_PFNMAP|VM_INSERTPAGE)) | |
890 | - return 0; | |
891 | - | |
892 | - /* Can the mapping track the dirty pages? */ | |
893 | - return vma->vm_file && vma->vm_file->f_mapping && | |
894 | - mapping_cap_account_dirty(vma->vm_file->f_mapping); | |
895 | -} | |
865 | +int vma_wants_writenotify(struct vm_area_struct *vma); | |
896 | 866 | |
897 | 867 | extern pte_t *FASTCALL(get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl)); |
898 | 868 |
mm/mmap.c
... | ... | @@ -1029,6 +1029,40 @@ |
1029 | 1029 | } |
1030 | 1030 | EXPORT_SYMBOL(do_mmap_pgoff); |
1031 | 1031 | |
1032 | +/* | |
1033 | + * Some shared mappigns will want the pages marked read-only | |
1034 | + * to track write events. If so, we'll downgrade vm_page_prot | |
1035 | + * to the private version (using protection_map[] without the | |
1036 | + * VM_SHARED bit). | |
1037 | + */ | |
1038 | +int vma_wants_writenotify(struct vm_area_struct *vma) | |
1039 | +{ | |
1040 | + unsigned int vm_flags = vma->vm_flags; | |
1041 | + | |
1042 | + /* If it was private or non-writable, the write bit is already clear */ | |
1043 | + if ((vm_flags & (VM_WRITE|VM_SHARED)) != ((VM_WRITE|VM_SHARED))) | |
1044 | + return 0; | |
1045 | + | |
1046 | + /* The backer wishes to know when pages are first written to? */ | |
1047 | + if (vma->vm_ops && vma->vm_ops->page_mkwrite) | |
1048 | + return 1; | |
1049 | + | |
1050 | + /* The open routine did something to the protections already? */ | |
1051 | + if (pgprot_val(vma->vm_page_prot) != | |
1052 | + pgprot_val(protection_map[vm_flags & | |
1053 | + (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)])) | |
1054 | + return 0; | |
1055 | + | |
1056 | + /* Specialty mapping? */ | |
1057 | + if (vm_flags & (VM_PFNMAP|VM_INSERTPAGE)) | |
1058 | + return 0; | |
1059 | + | |
1060 | + /* Can the mapping track the dirty pages? */ | |
1061 | + return vma->vm_file && vma->vm_file->f_mapping && | |
1062 | + mapping_cap_account_dirty(vma->vm_file->f_mapping); | |
1063 | +} | |
1064 | + | |
1065 | + | |
1032 | 1066 | unsigned long mmap_region(struct file *file, unsigned long addr, |
1033 | 1067 | unsigned long len, unsigned long flags, |
1034 | 1068 | unsigned int vm_flags, unsigned long pgoff, |
mm/oom_kill.c