Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dcache_{readdir,dir_lseek}() users: switch to ->iterate_shared

no need to lock directory in dcache_dir_lseek(), while we are
at it - per-struct file exclusion is enough.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 4e82901c 3125d265

+4 -7
+1 -1
arch/powerpc/platforms/cell/spufs/inode.c
··· 238 238 .release = spufs_dir_close, 239 239 .llseek = dcache_dir_lseek, 240 240 .read = generic_read_dir, 241 - .iterate = dcache_readdir, 241 + .iterate_shared = dcache_readdir, 242 242 .fsync = noop_fsync, 243 243 }; 244 244 EXPORT_SYMBOL_GPL(spufs_context_fops);
+2 -2
fs/autofs4/root.c
··· 39 39 .open = dcache_dir_open, 40 40 .release = dcache_dir_close, 41 41 .read = generic_read_dir, 42 - .iterate = dcache_readdir, 42 + .iterate_shared = dcache_readdir, 43 43 .llseek = dcache_dir_lseek, 44 44 .unlocked_ioctl = autofs4_root_ioctl, 45 45 #ifdef CONFIG_COMPAT ··· 51 51 .open = autofs4_dir_open, 52 52 .release = dcache_dir_close, 53 53 .read = generic_read_dir, 54 - .iterate = dcache_readdir, 54 + .iterate_shared = dcache_readdir, 55 55 .llseek = dcache_dir_lseek, 56 56 }; 57 57
+1 -4
fs/libfs.c
··· 89 89 loff_t dcache_dir_lseek(struct file *file, loff_t offset, int whence) 90 90 { 91 91 struct dentry *dentry = file->f_path.dentry; 92 - inode_lock(d_inode(dentry)); 93 92 switch (whence) { 94 93 case 1: 95 94 offset += file->f_pos; ··· 96 97 if (offset >= 0) 97 98 break; 98 99 default: 99 - inode_unlock(d_inode(dentry)); 100 100 return -EINVAL; 101 101 } 102 102 if (offset != file->f_pos) { ··· 122 124 spin_unlock(&dentry->d_lock); 123 125 } 124 126 } 125 - inode_unlock(d_inode(dentry)); 126 127 return offset; 127 128 } 128 129 EXPORT_SYMBOL(dcache_dir_lseek); ··· 187 190 .release = dcache_dir_close, 188 191 .llseek = dcache_dir_lseek, 189 192 .read = generic_read_dir, 190 - .iterate = dcache_readdir, 193 + .iterate_shared = dcache_readdir, 191 194 .fsync = noop_fsync, 192 195 }; 193 196 EXPORT_SYMBOL(simple_dir_operations);