Loading Documentation/filesystems/Locking +4 −11 Original line number Original line Diff line number Diff line Loading @@ -144,8 +144,8 @@ prototypes: void (*kill_sb) (struct super_block *); void (*kill_sb) (struct super_block *); locking rules: locking rules: may block BKL may block BKL get_sb yes yes get_sb yes no kill_sb yes yes kill_sb yes no ->get_sb() returns error or 0 with locked superblock attached to the vfsmount ->get_sb() returns error or 0 with locked superblock attached to the vfsmount (exclusive on ->s_umount). (exclusive on ->s_umount). Loading Loading @@ -409,12 +409,12 @@ ioctl: yes (see below) unlocked_ioctl: no (see below) unlocked_ioctl: no (see below) compat_ioctl: no compat_ioctl: no mmap: no mmap: no open: maybe (see below) open: no flush: no flush: no release: no release: no fsync: no (see below) fsync: no (see below) aio_fsync: no aio_fsync: no fasync: yes (see below) fasync: no lock: yes lock: yes readv: no readv: no writev: no writev: no Loading @@ -431,13 +431,6 @@ For many filesystems, it is probably safe to acquire the inode semaphore. Note some filesystems (i.e. remote ones) provide no semaphore. Note some filesystems (i.e. remote ones) provide no protection for i_size so you will need to use the BKL. protection for i_size so you will need to use the BKL. ->open() locking is in-transit: big lock partially moved into the methods. The only exception is ->open() in the instances of file_operations that never end up in ->i_fop/->proc_fops, i.e. ones that belong to character devices (chrdev_open() takes lock before replacing ->f_op and calling the secondary method. As soon as we fix the handling of module reference counters all instances of ->open() will be called without the BKL. Note: ext2_release() was *the* source of contention on fs-intensive Note: ext2_release() was *the* source of contention on fs-intensive loads and dropping BKL on ->release() helps to get rid of that (we still loads and dropping BKL on ->release() helps to get rid of that (we still grab BKL for cases when we close a file that had been opened r/w, but that grab BKL for cases when we close a file that had been opened r/w, but that Loading MAINTAINERS +4 −2 Original line number Original line Diff line number Diff line Loading @@ -750,11 +750,13 @@ P: Ville Syrjala M: syrjala@sci.fi M: syrjala@sci.fi S: Maintained S: Maintained ATL1 ETHERNET DRIVER ATLX ETHERNET DRIVERS P: Jay Cliburn P: Jay Cliburn M: jcliburn@gmail.com M: jcliburn@gmail.com P: Chris Snook P: Chris Snook M: csnook@redhat.com M: csnook@redhat.com P: Jie Yang M: jie.yang@atheros.com L: atl1-devel@lists.sourceforge.net L: atl1-devel@lists.sourceforge.net W: http://sourceforge.net/projects/atl1 W: http://sourceforge.net/projects/atl1 W: http://atl1.sourceforge.net W: http://atl1.sourceforge.net Loading Loading @@ -1593,7 +1595,7 @@ S: Supported EMBEDDED LINUX EMBEDDED LINUX P: Paul Gortmaker P: Paul Gortmaker M: paul.gortmaker@windriver.com M: paul.gortmaker@windriver.com P David Woodhouse P: David Woodhouse M: dwmw2@infradead.org M: dwmw2@infradead.org L: linux-embedded@vger.kernel.org L: linux-embedded@vger.kernel.org S: Maintained S: Maintained Loading Makefile +1 −1 Original line number Original line Diff line number Diff line VERSION = 2 VERSION = 2 PATCHLEVEL = 6 PATCHLEVEL = 6 SUBLEVEL = 27 SUBLEVEL = 27 EXTRAVERSION = -rc5 EXTRAVERSION = -rc6 NAME = Rotary Wombat NAME = Rotary Wombat # *DOCUMENTATION* # *DOCUMENTATION* Loading arch/arm/include/asm/io.h +4 −1 Original line number Original line Diff line number Diff line Loading @@ -61,8 +61,9 @@ extern void __raw_readsl(const void __iomem *addr, void *data, int longlen); #define MT_DEVICE_NONSHARED 1 #define MT_DEVICE_NONSHARED 1 #define MT_DEVICE_CACHED 2 #define MT_DEVICE_CACHED 2 #define MT_DEVICE_IXP2000 3 #define MT_DEVICE_IXP2000 3 #define MT_DEVICE_WC 4 /* /* * types 4 onwards can be found in asm/mach/map.h and are undefined * types 5 onwards can be found in asm/mach/map.h and are undefined * for ioremap * for ioremap */ */ Loading Loading @@ -215,11 +216,13 @@ extern void _memset_io(volatile void __iomem *, int, size_t); #define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) #define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) #define ioremap_nocache(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) #define ioremap_nocache(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) #define ioremap_cached(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_CACHED) #define ioremap_cached(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_CACHED) #define ioremap_wc(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_WC) #define iounmap(cookie) __iounmap(cookie) #define iounmap(cookie) __iounmap(cookie) #else #else #define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) #define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) #define ioremap_nocache(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) #define ioremap_nocache(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) #define ioremap_cached(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_CACHED) #define ioremap_cached(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_CACHED) #define ioremap_wc(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_WC) #define iounmap(cookie) __arch_iounmap(cookie) #define iounmap(cookie) __arch_iounmap(cookie) #endif #endif Loading arch/arm/include/asm/mach/map.h +7 −7 Original line number Original line Diff line number Diff line Loading @@ -18,13 +18,13 @@ struct map_desc { unsigned int type; unsigned int type; }; }; /* types 0-3 are defined in asm/io.h */ /* types 0-4 are defined in asm/io.h */ #define MT_CACHECLEAN 4 #define MT_CACHECLEAN 5 #define MT_MINICLEAN 5 #define MT_MINICLEAN 6 #define MT_LOW_VECTORS 6 #define MT_LOW_VECTORS 7 #define MT_HIGH_VECTORS 7 #define MT_HIGH_VECTORS 8 #define MT_MEMORY 8 #define MT_MEMORY 9 #define MT_ROM 9 #define MT_ROM 10 #define MT_NONSHARED_DEVICE MT_DEVICE_NONSHARED #define MT_NONSHARED_DEVICE MT_DEVICE_NONSHARED #define MT_IXP2000_DEVICE MT_DEVICE_IXP2000 #define MT_IXP2000_DEVICE MT_DEVICE_IXP2000 Loading Loading
Documentation/filesystems/Locking +4 −11 Original line number Original line Diff line number Diff line Loading @@ -144,8 +144,8 @@ prototypes: void (*kill_sb) (struct super_block *); void (*kill_sb) (struct super_block *); locking rules: locking rules: may block BKL may block BKL get_sb yes yes get_sb yes no kill_sb yes yes kill_sb yes no ->get_sb() returns error or 0 with locked superblock attached to the vfsmount ->get_sb() returns error or 0 with locked superblock attached to the vfsmount (exclusive on ->s_umount). (exclusive on ->s_umount). Loading Loading @@ -409,12 +409,12 @@ ioctl: yes (see below) unlocked_ioctl: no (see below) unlocked_ioctl: no (see below) compat_ioctl: no compat_ioctl: no mmap: no mmap: no open: maybe (see below) open: no flush: no flush: no release: no release: no fsync: no (see below) fsync: no (see below) aio_fsync: no aio_fsync: no fasync: yes (see below) fasync: no lock: yes lock: yes readv: no readv: no writev: no writev: no Loading @@ -431,13 +431,6 @@ For many filesystems, it is probably safe to acquire the inode semaphore. Note some filesystems (i.e. remote ones) provide no semaphore. Note some filesystems (i.e. remote ones) provide no protection for i_size so you will need to use the BKL. protection for i_size so you will need to use the BKL. ->open() locking is in-transit: big lock partially moved into the methods. The only exception is ->open() in the instances of file_operations that never end up in ->i_fop/->proc_fops, i.e. ones that belong to character devices (chrdev_open() takes lock before replacing ->f_op and calling the secondary method. As soon as we fix the handling of module reference counters all instances of ->open() will be called without the BKL. Note: ext2_release() was *the* source of contention on fs-intensive Note: ext2_release() was *the* source of contention on fs-intensive loads and dropping BKL on ->release() helps to get rid of that (we still loads and dropping BKL on ->release() helps to get rid of that (we still grab BKL for cases when we close a file that had been opened r/w, but that grab BKL for cases when we close a file that had been opened r/w, but that Loading
MAINTAINERS +4 −2 Original line number Original line Diff line number Diff line Loading @@ -750,11 +750,13 @@ P: Ville Syrjala M: syrjala@sci.fi M: syrjala@sci.fi S: Maintained S: Maintained ATL1 ETHERNET DRIVER ATLX ETHERNET DRIVERS P: Jay Cliburn P: Jay Cliburn M: jcliburn@gmail.com M: jcliburn@gmail.com P: Chris Snook P: Chris Snook M: csnook@redhat.com M: csnook@redhat.com P: Jie Yang M: jie.yang@atheros.com L: atl1-devel@lists.sourceforge.net L: atl1-devel@lists.sourceforge.net W: http://sourceforge.net/projects/atl1 W: http://sourceforge.net/projects/atl1 W: http://atl1.sourceforge.net W: http://atl1.sourceforge.net Loading Loading @@ -1593,7 +1595,7 @@ S: Supported EMBEDDED LINUX EMBEDDED LINUX P: Paul Gortmaker P: Paul Gortmaker M: paul.gortmaker@windriver.com M: paul.gortmaker@windriver.com P David Woodhouse P: David Woodhouse M: dwmw2@infradead.org M: dwmw2@infradead.org L: linux-embedded@vger.kernel.org L: linux-embedded@vger.kernel.org S: Maintained S: Maintained Loading
Makefile +1 −1 Original line number Original line Diff line number Diff line VERSION = 2 VERSION = 2 PATCHLEVEL = 6 PATCHLEVEL = 6 SUBLEVEL = 27 SUBLEVEL = 27 EXTRAVERSION = -rc5 EXTRAVERSION = -rc6 NAME = Rotary Wombat NAME = Rotary Wombat # *DOCUMENTATION* # *DOCUMENTATION* Loading
arch/arm/include/asm/io.h +4 −1 Original line number Original line Diff line number Diff line Loading @@ -61,8 +61,9 @@ extern void __raw_readsl(const void __iomem *addr, void *data, int longlen); #define MT_DEVICE_NONSHARED 1 #define MT_DEVICE_NONSHARED 1 #define MT_DEVICE_CACHED 2 #define MT_DEVICE_CACHED 2 #define MT_DEVICE_IXP2000 3 #define MT_DEVICE_IXP2000 3 #define MT_DEVICE_WC 4 /* /* * types 4 onwards can be found in asm/mach/map.h and are undefined * types 5 onwards can be found in asm/mach/map.h and are undefined * for ioremap * for ioremap */ */ Loading Loading @@ -215,11 +216,13 @@ extern void _memset_io(volatile void __iomem *, int, size_t); #define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) #define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) #define ioremap_nocache(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) #define ioremap_nocache(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) #define ioremap_cached(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_CACHED) #define ioremap_cached(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_CACHED) #define ioremap_wc(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_WC) #define iounmap(cookie) __iounmap(cookie) #define iounmap(cookie) __iounmap(cookie) #else #else #define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) #define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) #define ioremap_nocache(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) #define ioremap_nocache(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) #define ioremap_cached(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_CACHED) #define ioremap_cached(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_CACHED) #define ioremap_wc(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_WC) #define iounmap(cookie) __arch_iounmap(cookie) #define iounmap(cookie) __arch_iounmap(cookie) #endif #endif Loading
arch/arm/include/asm/mach/map.h +7 −7 Original line number Original line Diff line number Diff line Loading @@ -18,13 +18,13 @@ struct map_desc { unsigned int type; unsigned int type; }; }; /* types 0-3 are defined in asm/io.h */ /* types 0-4 are defined in asm/io.h */ #define MT_CACHECLEAN 4 #define MT_CACHECLEAN 5 #define MT_MINICLEAN 5 #define MT_MINICLEAN 6 #define MT_LOW_VECTORS 6 #define MT_LOW_VECTORS 7 #define MT_HIGH_VECTORS 7 #define MT_HIGH_VECTORS 8 #define MT_MEMORY 8 #define MT_MEMORY 9 #define MT_ROM 9 #define MT_ROM 10 #define MT_NONSHARED_DEVICE MT_DEVICE_NONSHARED #define MT_NONSHARED_DEVICE MT_DEVICE_NONSHARED #define MT_IXP2000_DEVICE MT_DEVICE_IXP2000 #define MT_IXP2000_DEVICE MT_DEVICE_IXP2000 Loading