aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-06-10 17:13:09 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-07-14 08:34:32 -0400
commit00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b (patch)
treed44be476ced0317ae79f28853734ebe2210ad38e
parent201f956e43d4542723514e024d948011dd766d43 (diff)
stop passing nameidata to ->lookup()
Just the flags; only NFS cares even about that, but there are legitimate uses for such argument. And getting rid of that completely would require splitting ->lookup() into a couple of methods (at least), so let's leave that alone for now... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--Documentation/filesystems/Locking3
-rw-r--r--Documentation/filesystems/porting4
-rw-r--r--Documentation/filesystems/vfs.txt2
-rw-r--r--fs/9p/v9fs.h2
-rw-r--r--fs/9p/vfs_inode.c8
-rw-r--r--fs/9p/vfs_inode_dotl.c2
-rw-r--r--fs/adfs/dir.c2
-rw-r--r--fs/affs/affs.h2
-rw-r--r--fs/affs/namei.c2
-rw-r--r--fs/afs/dir.c4
-rw-r--r--fs/afs/mntpt.c4
-rw-r--r--fs/autofs4/root.c4
-rw-r--r--fs/bad_inode.c2
-rw-r--r--fs/befs/linuxvfs.c4
-rw-r--r--fs/bfs/dir.c2
-rw-r--r--fs/btrfs/inode.c2
-rw-r--r--fs/ceph/dir.c6
-rw-r--r--fs/cifs/cifsfs.h2
-rw-r--r--fs/cifs/dir.c4
-rw-r--r--fs/coda/dir.c4
-rw-r--r--fs/configfs/dir.c2
-rw-r--r--fs/cramfs/inode.c2
-rw-r--r--fs/ecryptfs/inode.c2
-rw-r--r--fs/efs/efs.h2
-rw-r--r--fs/efs/namei.c3
-rw-r--r--fs/exofs/namei.c2
-rw-r--r--fs/ext2/namei.c2
-rw-r--r--fs/ext3/namei.c2
-rw-r--r--fs/ext4/namei.c2
-rw-r--r--fs/fat/namei_msdos.c2
-rw-r--r--fs/fat/namei_vfat.c2
-rw-r--r--fs/freevxfs/vxfs_lookup.c4
-rw-r--r--fs/fuse/dir.c4
-rw-r--r--fs/gfs2/inode.c2
-rw-r--r--fs/hfs/dir.c2
-rw-r--r--fs/hfs/inode.c2
-rw-r--r--fs/hfsplus/dir.c2
-rw-r--r--fs/hfsplus/inode.c2
-rw-r--r--fs/hostfs/hostfs_kern.c2
-rw-r--r--fs/hpfs/dir.c2
-rw-r--r--fs/hpfs/hpfs_fn.h2
-rw-r--r--fs/hppfs/hppfs.c2
-rw-r--r--fs/isofs/isofs.h2
-rw-r--r--fs/isofs/namei.c2
-rw-r--r--fs/jffs2/dir.c4
-rw-r--r--fs/jfs/namei.c2
-rw-r--r--fs/libfs.c2
-rw-r--r--fs/logfs/dir.c2
-rw-r--r--fs/minix/namei.c2
-rw-r--r--fs/namei.c2
-rw-r--r--fs/ncpfs/dir.c4
-rw-r--r--fs/nfs/dir.c8
-rw-r--r--fs/nilfs2/namei.c2
-rw-r--r--fs/ntfs/namei.c2
-rw-r--r--fs/ocfs2/namei.c2
-rw-r--r--fs/omfs/dir.c2
-rw-r--r--fs/openpromfs/inode.c4
-rw-r--r--fs/proc/base.c18
-rw-r--r--fs/proc/generic.c2
-rw-r--r--fs/proc/internal.h4
-rw-r--r--fs/proc/namespaces.c2
-rw-r--r--fs/proc/proc_net.c2
-rw-r--r--fs/proc/proc_sysctl.c2
-rw-r--r--fs/proc/root.c7
-rw-r--r--fs/qnx4/namei.c2
-rw-r--r--fs/qnx4/qnx4.h2
-rw-r--r--fs/qnx6/namei.c2
-rw-r--r--fs/qnx6/qnx6.h2
-rw-r--r--fs/reiserfs/namei.c2
-rw-r--r--fs/romfs/super.c2
-rw-r--r--fs/squashfs/namei.c2
-rw-r--r--fs/sysfs/dir.c2
-rw-r--r--fs/sysv/namei.c2
-rw-r--r--fs/ubifs/dir.c2
-rw-r--r--fs/udf/namei.c2
-rw-r--r--fs/ufs/namei.c2
-rw-r--r--fs/xfs/xfs_iops.c4
-rw-r--r--include/linux/fs.h4
-rw-r--r--kernel/cgroup.c4
79 files changed, 115 insertions, 114 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index 52a057367f6f..33f2c8f1db81 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -38,8 +38,7 @@ d_manage: no no yes (ref-walk) maybe
38--------------------------- inode_operations --------------------------- 38--------------------------- inode_operations ---------------------------
39prototypes: 39prototypes:
40 int (*create) (struct inode *,struct dentry *,umode_t, struct nameidata *); 40 int (*create) (struct inode *,struct dentry *,umode_t, struct nameidata *);
41 struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameid 41 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
42ata *);
43 int (*link) (struct dentry *,struct inode *,struct dentry *); 42 int (*link) (struct dentry *,struct inode *,struct dentry *);
44 int (*unlink) (struct inode *,struct dentry *); 43 int (*unlink) (struct inode *,struct dentry *);
45 int (*symlink) (struct inode *,struct dentry *,const char *); 44 int (*symlink) (struct inode *,struct dentry *,const char *);
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting
index 56750b714d1e..690f573928b9 100644
--- a/Documentation/filesystems/porting
+++ b/Documentation/filesystems/porting
@@ -434,5 +434,5 @@ d_make_root() drops the reference to inode if dentry allocation fails.
434 434
435-- 435--
436[mandatory] 436[mandatory]
437 The witch is dead! Well, 1/3 of it, anyway. ->d_revalidate() does *not* 437 The witch is dead! Well, 2/3 of it, anyway. ->d_revalidate() and
438take struct nameidata anymore; just the flags. 438->lookup() do *not* take struct nameidata anymore; just the flags.
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index b9a406b2ed0f..ee786354946c 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -342,7 +342,7 @@ filesystem. As of kernel 2.6.22, the following members are defined:
342 342
343struct inode_operations { 343struct inode_operations {
344 int (*create) (struct inode *,struct dentry *, umode_t, struct nameidata *); 344 int (*create) (struct inode *,struct dentry *, umode_t, struct nameidata *);
345 struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *); 345 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
346 int (*link) (struct dentry *,struct inode *,struct dentry *); 346 int (*link) (struct dentry *,struct inode *,struct dentry *);
347 int (*unlink) (struct inode *,struct dentry *); 347 int (*unlink) (struct inode *,struct dentry *);
348 int (*symlink) (struct inode *,struct dentry *,const char *); 348 int (*symlink) (struct inode *,struct dentry *,const char *);
diff --git a/fs/9p/v9fs.h b/fs/9p/v9fs.h
index e78956cbd702..34c59f14a1c9 100644
--- a/fs/9p/v9fs.h
+++ b/fs/9p/v9fs.h
@@ -144,7 +144,7 @@ extern void v9fs_session_close(struct v9fs_session_info *v9ses);
144extern void v9fs_session_cancel(struct v9fs_session_info *v9ses); 144extern void v9fs_session_cancel(struct v9fs_session_info *v9ses);
145extern void v9fs_session_begin_cancel(struct v9fs_session_info *v9ses); 145extern void v9fs_session_begin_cancel(struct v9fs_session_info *v9ses);
146extern struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry, 146extern struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
147 struct nameidata *nameidata); 147 unsigned int flags);
148extern int v9fs_vfs_unlink(struct inode *i, struct dentry *d); 148extern int v9fs_vfs_unlink(struct inode *i, struct dentry *d);
149extern int v9fs_vfs_rmdir(struct inode *i, struct dentry *d); 149extern int v9fs_vfs_rmdir(struct inode *i, struct dentry *d);
150extern int v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry, 150extern int v9fs_vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index eae476fb401c..bb0d7627f95b 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -785,7 +785,7 @@ static int v9fs_vfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode
785 */ 785 */
786 786
787struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry, 787struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
788 struct nameidata *nameidata) 788 unsigned int flags)
789{ 789{
790 struct dentry *res; 790 struct dentry *res;
791 struct super_block *sb; 791 struct super_block *sb;
@@ -795,8 +795,8 @@ struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
795 char *name; 795 char *name;
796 int result = 0; 796 int result = 0;
797 797
798 p9_debug(P9_DEBUG_VFS, "dir: %p dentry: (%s) %p nameidata: %p\n", 798 p9_debug(P9_DEBUG_VFS, "dir: %p dentry: (%s) %p flags: %x\n",
799 dir, dentry->d_name.name, dentry, nameidata); 799 dir, dentry->d_name.name, dentry, flags);
800 800
801 if (dentry->d_name.len > NAME_MAX) 801 if (dentry->d_name.len > NAME_MAX)
802 return ERR_PTR(-ENAMETOOLONG); 802 return ERR_PTR(-ENAMETOOLONG);
@@ -869,7 +869,7 @@ v9fs_vfs_atomic_open(struct inode *dir, struct dentry *dentry,
869 struct dentry *res = NULL; 869 struct dentry *res = NULL;
870 870
871 if (d_unhashed(dentry)) { 871 if (d_unhashed(dentry)) {
872 res = v9fs_vfs_lookup(dir, dentry, NULL); 872 res = v9fs_vfs_lookup(dir, dentry, 0);
873 if (IS_ERR(res)) 873 if (IS_ERR(res))
874 return PTR_ERR(res); 874 return PTR_ERR(res);
875 875
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c
index 1ee10c89df97..b97619fed196 100644
--- a/fs/9p/vfs_inode_dotl.c
+++ b/fs/9p/vfs_inode_dotl.c
@@ -259,7 +259,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry,
259 struct dentry *res = NULL; 259 struct dentry *res = NULL;
260 260
261 if (d_unhashed(dentry)) { 261 if (d_unhashed(dentry)) {
262 res = v9fs_vfs_lookup(dir, dentry, NULL); 262 res = v9fs_vfs_lookup(dir, dentry, 0);
263 if (IS_ERR(res)) 263 if (IS_ERR(res))
264 return PTR_ERR(res); 264 return PTR_ERR(res);
265 265
diff --git a/fs/adfs/dir.c b/fs/adfs/dir.c
index 3d83075aaa2e..b3be2e7c5643 100644
--- a/fs/adfs/dir.c
+++ b/fs/adfs/dir.c
@@ -266,7 +266,7 @@ const struct dentry_operations adfs_dentry_operations = {
266}; 266};
267 267
268static struct dentry * 268static struct dentry *
269adfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 269adfs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
270{ 270{
271 struct inode *inode = NULL; 271 struct inode *inode = NULL;
272 struct object_info obj; 272 struct object_info obj;
diff --git a/fs/affs/affs.h b/fs/affs/affs.h
index 3a130e27eb15..49e4e3457bfd 100644
--- a/fs/affs/affs.h
+++ b/fs/affs/affs.h
@@ -153,7 +153,7 @@ extern void affs_free_bitmap(struct super_block *sb);
153/* namei.c */ 153/* namei.c */
154 154
155extern int affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len); 155extern int affs_hash_name(struct super_block *sb, const u8 *name, unsigned int len);
156extern struct dentry *affs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *); 156extern struct dentry *affs_lookup(struct inode *dir, struct dentry *dentry, unsigned int);
157extern int affs_unlink(struct inode *dir, struct dentry *dentry); 157extern int affs_unlink(struct inode *dir, struct dentry *dentry);
158extern int affs_create(struct inode *dir, struct dentry *dentry, umode_t mode, struct nameidata *); 158extern int affs_create(struct inode *dir, struct dentry *dentry, umode_t mode, struct nameidata *);
159extern int affs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); 159extern int affs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode);
diff --git a/fs/affs/namei.c b/fs/affs/namei.c
index 47806940aac0..7f9721be709f 100644
--- a/fs/affs/namei.c
+++ b/fs/affs/namei.c
@@ -211,7 +211,7 @@ affs_find_entry(struct inode *dir, struct dentry *dentry)
211} 211}
212 212
213struct dentry * 213struct dentry *
214affs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 214affs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
215{ 215{
216 struct super_block *sb = dir->i_sb; 216 struct super_block *sb = dir->i_sb;
217 struct buffer_head *bh; 217 struct buffer_head *bh;
diff --git a/fs/afs/dir.c b/fs/afs/dir.c
index 65c54ab04733..ffb33e36ea72 100644
--- a/fs/afs/dir.c
+++ b/fs/afs/dir.c
@@ -20,7 +20,7 @@
20#include "internal.h" 20#include "internal.h"
21 21
22static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry, 22static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry,
23 struct nameidata *nd); 23 unsigned int flags);
24static int afs_dir_open(struct inode *inode, struct file *file); 24static int afs_dir_open(struct inode *inode, struct file *file);
25static int afs_readdir(struct file *file, void *dirent, filldir_t filldir); 25static int afs_readdir(struct file *file, void *dirent, filldir_t filldir);
26static int afs_d_revalidate(struct dentry *dentry, unsigned int flags); 26static int afs_d_revalidate(struct dentry *dentry, unsigned int flags);
@@ -516,7 +516,7 @@ out:
516 * look up an entry in a directory 516 * look up an entry in a directory
517 */ 517 */
518static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry, 518static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry,
519 struct nameidata *nd) 519 unsigned int flags)
520{ 520{
521 struct afs_vnode *vnode; 521 struct afs_vnode *vnode;
522 struct afs_fid fid; 522 struct afs_fid fid;
diff --git a/fs/afs/mntpt.c b/fs/afs/mntpt.c
index 298cf8919ec7..9682c33d5daf 100644
--- a/fs/afs/mntpt.c
+++ b/fs/afs/mntpt.c
@@ -22,7 +22,7 @@
22 22
23static struct dentry *afs_mntpt_lookup(struct inode *dir, 23static struct dentry *afs_mntpt_lookup(struct inode *dir,
24 struct dentry *dentry, 24 struct dentry *dentry,
25 struct nameidata *nd); 25 unsigned int flags);
26static int afs_mntpt_open(struct inode *inode, struct file *file); 26static int afs_mntpt_open(struct inode *inode, struct file *file);
27static void afs_mntpt_expiry_timed_out(struct work_struct *work); 27static void afs_mntpt_expiry_timed_out(struct work_struct *work);
28 28
@@ -104,7 +104,7 @@ out:
104 */ 104 */
105static struct dentry *afs_mntpt_lookup(struct inode *dir, 105static struct dentry *afs_mntpt_lookup(struct inode *dir,
106 struct dentry *dentry, 106 struct dentry *dentry,
107 struct nameidata *nd) 107 unsigned int flags)
108{ 108{
109 _enter("%p,%p{%p{%s},%s}", 109 _enter("%p,%p{%p{%s},%s}",
110 dir, 110 dir,
diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c
index 75e5f1c8e028..e7396cfdb109 100644
--- a/fs/autofs4/root.c
+++ b/fs/autofs4/root.c
@@ -32,7 +32,7 @@ static long autofs4_root_ioctl(struct file *,unsigned int,unsigned long);
32static long autofs4_root_compat_ioctl(struct file *,unsigned int,unsigned long); 32static long autofs4_root_compat_ioctl(struct file *,unsigned int,unsigned long);
33#endif 33#endif
34static int autofs4_dir_open(struct inode *inode, struct file *file); 34static int autofs4_dir_open(struct inode *inode, struct file *file);
35static struct dentry *autofs4_lookup(struct inode *,struct dentry *, struct nameidata *); 35static struct dentry *autofs4_lookup(struct inode *,struct dentry *, unsigned int);
36static struct vfsmount *autofs4_d_automount(struct path *); 36static struct vfsmount *autofs4_d_automount(struct path *);
37static int autofs4_d_manage(struct dentry *, bool); 37static int autofs4_d_manage(struct dentry *, bool);
38static void autofs4_dentry_release(struct dentry *); 38static void autofs4_dentry_release(struct dentry *);
@@ -458,7 +458,7 @@ int autofs4_d_manage(struct dentry *dentry, bool rcu_walk)
458} 458}
459 459
460/* Lookups in the root directory */ 460/* Lookups in the root directory */
461static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 461static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
462{ 462{
463 struct autofs_sb_info *sbi; 463 struct autofs_sb_info *sbi;
464 struct autofs_info *ino; 464 struct autofs_info *ino;
diff --git a/fs/bad_inode.c b/fs/bad_inode.c
index 1b35d6bd06b0..d27e73c69ba4 100644
--- a/fs/bad_inode.c
+++ b/fs/bad_inode.c
@@ -179,7 +179,7 @@ static int bad_inode_create (struct inode *dir, struct dentry *dentry,
179} 179}
180 180
181static struct dentry *bad_inode_lookup(struct inode *dir, 181static struct dentry *bad_inode_lookup(struct inode *dir,
182 struct dentry *dentry, struct nameidata *nd) 182 struct dentry *dentry, unsigned int flags)
183{ 183{
184 return ERR_PTR(-EIO); 184 return ERR_PTR(-EIO);
185} 185}
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
index e18da23d42b5..cf7f3c67c8b7 100644
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -34,7 +34,7 @@ static int befs_readdir(struct file *, void *, filldir_t);
34static int befs_get_block(struct inode *, sector_t, struct buffer_head *, int); 34static int befs_get_block(struct inode *, sector_t, struct buffer_head *, int);
35static int befs_readpage(struct file *file, struct page *page); 35static int befs_readpage(struct file *file, struct page *page);
36static sector_t befs_bmap(struct address_space *mapping, sector_t block); 36static sector_t befs_bmap(struct address_space *mapping, sector_t block);
37static struct dentry *befs_lookup(struct inode *, struct dentry *, struct nameidata *); 37static struct dentry *befs_lookup(struct inode *, struct dentry *, unsigned int);
38static struct inode *befs_iget(struct super_block *, unsigned long); 38static struct inode *befs_iget(struct super_block *, unsigned long);
39static struct inode *befs_alloc_inode(struct super_block *sb); 39static struct inode *befs_alloc_inode(struct super_block *sb);
40static void befs_destroy_inode(struct inode *inode); 40static void befs_destroy_inode(struct inode *inode);
@@ -159,7 +159,7 @@ befs_get_block(struct inode *inode, sector_t block,
159} 159}
160 160
161static struct dentry * 161static struct dentry *
162befs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 162befs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
163{ 163{
164 struct inode *inode = NULL; 164 struct inode *inode = NULL;
165 struct super_block *sb = dir->i_sb; 165 struct super_block *sb = dir->i_sb;
diff --git a/fs/bfs/dir.c b/fs/bfs/dir.c
index d12c7966db27..3f1cd3b71681 100644
--- a/fs/bfs/dir.c
+++ b/fs/bfs/dir.c
@@ -133,7 +133,7 @@ static int bfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
133} 133}
134 134
135static struct dentry *bfs_lookup(struct inode *dir, struct dentry *dentry, 135static struct dentry *bfs_lookup(struct inode *dir, struct dentry *dentry,
136 struct nameidata *nd) 136 unsigned int flags)
137{ 137{
138 struct inode *inode = NULL; 138 struct inode *inode = NULL;
139 struct buffer_head *bh; 139 struct buffer_head *bh;
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index a101572f1cea..e5f1f81b2d65 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4247,7 +4247,7 @@ static void btrfs_dentry_release(struct dentry *dentry)
4247} 4247}
4248 4248
4249static struct dentry *btrfs_lookup(struct inode *dir, struct dentry *dentry, 4249static struct dentry *btrfs_lookup(struct inode *dir, struct dentry *dentry,
4250 struct nameidata *nd) 4250 unsigned int flags)
4251{ 4251{
4252 struct dentry *ret; 4252 struct dentry *ret;
4253 4253
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index 8898eef8bca9..74b2f3c54fe7 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -576,7 +576,7 @@ static int is_root_ceph_dentry(struct inode *inode, struct dentry *dentry)
576 * the MDS so that it gets our 'caps wanted' value in a single op. 576 * the MDS so that it gets our 'caps wanted' value in a single op.
577 */ 577 */
578static struct dentry *ceph_lookup(struct inode *dir, struct dentry *dentry, 578static struct dentry *ceph_lookup(struct inode *dir, struct dentry *dentry,
579 struct nameidata *nd) 579 unsigned int flags)
580{ 580{
581 struct ceph_fs_client *fsc = ceph_sb_to_client(dir->i_sb); 581 struct ceph_fs_client *fsc = ceph_sb_to_client(dir->i_sb);
582 struct ceph_mds_client *mdsc = fsc->mdsc; 582 struct ceph_mds_client *mdsc = fsc->mdsc;
@@ -653,7 +653,7 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry,
653 } 653 }
654 654
655 if (d_unhashed(dentry)) { 655 if (d_unhashed(dentry)) {
656 res = ceph_lookup(dir, dentry, NULL); 656 res = ceph_lookup(dir, dentry, 0);
657 if (IS_ERR(res)) 657 if (IS_ERR(res))
658 return PTR_ERR(res); 658 return PTR_ERR(res);
659 659
@@ -678,7 +678,7 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry,
678 */ 678 */
679int ceph_handle_notrace_create(struct inode *dir, struct dentry *dentry) 679int ceph_handle_notrace_create(struct inode *dir, struct dentry *dentry)
680{ 680{
681 struct dentry *result = ceph_lookup(dir, dentry, NULL); 681 struct dentry *result = ceph_lookup(dir, dentry, 0);
682 682
683 if (result && !IS_ERR(result)) { 683 if (result && !IS_ERR(result)) {
684 /* 684 /*
diff --git a/fs/cifs/cifsfs.h b/fs/cifs/cifsfs.h
index 48bb474ce294..1abd31fd5bf0 100644
--- a/fs/cifs/cifsfs.h
+++ b/fs/cifs/cifsfs.h
@@ -50,7 +50,7 @@ extern int cifs_atomic_open(struct inode *, struct dentry *,
50 struct file *, unsigned, umode_t, 50 struct file *, unsigned, umode_t,
51 int *); 51 int *);
52extern struct dentry *cifs_lookup(struct inode *, struct dentry *, 52extern struct dentry *cifs_lookup(struct inode *, struct dentry *,
53 struct nameidata *); 53 unsigned int);
54extern int cifs_unlink(struct inode *dir, struct dentry *dentry); 54extern int cifs_unlink(struct inode *dir, struct dentry *dentry);
55extern int cifs_hardlink(struct dentry *, struct inode *, struct dentry *); 55extern int cifs_hardlink(struct dentry *, struct inode *, struct dentry *);
56extern int cifs_mknod(struct inode *, struct dentry *, umode_t, dev_t); 56extern int cifs_mknod(struct inode *, struct dentry *, umode_t, dev_t);
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
index b97ff48b7df6..2d732b9276ee 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -401,7 +401,7 @@ cifs_atomic_open(struct inode *inode, struct dentry *direntry,
401 * in network traffic in the other paths. 401 * in network traffic in the other paths.
402 */ 402 */
403 if (!(oflags & O_CREAT)) { 403 if (!(oflags & O_CREAT)) {
404 struct dentry *res = cifs_lookup(inode, direntry, NULL); 404 struct dentry *res = cifs_lookup(inode, direntry, 0);
405 if (IS_ERR(res)) 405 if (IS_ERR(res))
406 return PTR_ERR(res); 406 return PTR_ERR(res);
407 407
@@ -621,7 +621,7 @@ mknod_out:
621 621
622struct dentry * 622struct dentry *
623cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry, 623cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
624 struct nameidata *nd) 624 unsigned int flags)
625{ 625{
626 int xid; 626 int xid;
627 int rc = 0; /* to get around spurious gcc warning, set to zero here */ 627 int rc = 0; /* to get around spurious gcc warning, set to zero here */
diff --git a/fs/coda/dir.c b/fs/coda/dir.c
index 7f8f1a7c6d87..da35e965861d 100644
--- a/fs/coda/dir.c
+++ b/fs/coda/dir.c
@@ -31,7 +31,7 @@
31 31
32/* dir inode-ops */ 32/* dir inode-ops */
33static int coda_create(struct inode *dir, struct dentry *new, umode_t mode, struct nameidata *nd); 33static int coda_create(struct inode *dir, struct dentry *new, umode_t mode, struct nameidata *nd);
34static struct dentry *coda_lookup(struct inode *dir, struct dentry *target, struct nameidata *nd); 34static struct dentry *coda_lookup(struct inode *dir, struct dentry *target, unsigned int flags);
35static int coda_link(struct dentry *old_dentry, struct inode *dir_inode, 35static int coda_link(struct dentry *old_dentry, struct inode *dir_inode,
36 struct dentry *entry); 36 struct dentry *entry);
37static int coda_unlink(struct inode *dir_inode, struct dentry *entry); 37static int coda_unlink(struct inode *dir_inode, struct dentry *entry);
@@ -94,7 +94,7 @@ const struct file_operations coda_dir_operations = {
94 94
95/* inode operations for directories */ 95/* inode operations for directories */
96/* access routines: lookup, readlink, permission */ 96/* access routines: lookup, readlink, permission */
97static struct dentry *coda_lookup(struct inode *dir, struct dentry *entry, struct nameidata *nd) 97static struct dentry *coda_lookup(struct inode *dir, struct dentry *entry, unsigned int flags)
98{ 98{
99 struct super_block *sb = dir->i_sb; 99 struct super_block *sb = dir->i_sb;
100 const char *name = entry->d_name.name; 100 const char *name = entry->d_name.name;
diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
index 7e6c52d8a207..7414ae24a79b 100644
--- a/fs/configfs/dir.c
+++ b/fs/configfs/dir.c
@@ -442,7 +442,7 @@ static int configfs_attach_attr(struct configfs_dirent * sd, struct dentry * den
442 442
443static struct dentry * configfs_lookup(struct inode *dir, 443static struct dentry * configfs_lookup(struct inode *dir,
444 struct dentry *dentry, 444 struct dentry *dentry,
445 struct nameidata *nd) 445 unsigned int flags)
446{ 446{
447 struct configfs_dirent * parent_sd = dentry->d_parent->d_fsdata; 447 struct configfs_dirent * parent_sd = dentry->d_parent->d_fsdata;
448 struct configfs_dirent * sd; 448 struct configfs_dirent * sd;
diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c
index d013c46402ed..28cca01ca9c9 100644
--- a/fs/cramfs/inode.c
+++ b/fs/cramfs/inode.c
@@ -417,7 +417,7 @@ static int cramfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
417/* 417/*
418 * Lookup and fill in the inode data.. 418 * Lookup and fill in the inode data..
419 */ 419 */
420static struct dentry * cramfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 420static struct dentry * cramfs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
421{ 421{
422 unsigned int offset = 0; 422 unsigned int offset = 0;
423 struct inode *inode = NULL; 423 struct inode *inode = NULL;
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index a07441a0a878..4ab50c3f5ab2 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -374,7 +374,7 @@ static int ecryptfs_lookup_interpose(struct dentry *dentry,
374 */ 374 */
375static struct dentry *ecryptfs_lookup(struct inode *ecryptfs_dir_inode, 375static struct dentry *ecryptfs_lookup(struct inode *ecryptfs_dir_inode,
376 struct dentry *ecryptfs_dentry, 376 struct dentry *ecryptfs_dentry,
377 struct nameidata *ecryptfs_nd) 377 unsigned int flags)
378{ 378{
379 char *encrypted_and_encoded_name = NULL; 379 char *encrypted_and_encoded_name = NULL;
380 size_t encrypted_and_encoded_name_size; 380 size_t encrypted_and_encoded_name_size;
diff --git a/fs/efs/efs.h b/fs/efs/efs.h
index d8305b582ab0..5528926ac7f6 100644
--- a/fs/efs/efs.h
+++ b/fs/efs/efs.h
@@ -129,7 +129,7 @@ extern struct inode *efs_iget(struct super_block *, unsigned long);
129extern efs_block_t efs_map_block(struct inode *, efs_block_t); 129extern efs_block_t efs_map_block(struct inode *, efs_block_t);
130extern int efs_get_block(struct inode *, sector_t, struct buffer_head *, int); 130extern int efs_get_block(struct inode *, sector_t, struct buffer_head *, int);
131 131
132extern struct dentry *efs_lookup(struct inode *, struct dentry *, struct nameidata *); 132extern struct dentry *efs_lookup(struct inode *, struct dentry *, unsigned int);
133extern struct dentry *efs_fh_to_dentry(struct super_block *sb, struct fid *fid, 133extern struct dentry *efs_fh_to_dentry(struct super_block *sb, struct fid *fid,
134 int fh_len, int fh_type); 134 int fh_len, int fh_type);
135extern struct dentry *efs_fh_to_parent(struct super_block *sb, struct fid *fid, 135extern struct dentry *efs_fh_to_parent(struct super_block *sb, struct fid *fid,
diff --git a/fs/efs/namei.c b/fs/efs/namei.c
index 832b10ded82f..96f66d213a19 100644
--- a/fs/efs/namei.c
+++ b/fs/efs/namei.c
@@ -58,7 +58,8 @@ static efs_ino_t efs_find_entry(struct inode *inode, const char *name, int len)
58 return(0); 58 return(0);
59} 59}
60 60
61struct dentry *efs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) { 61struct dentry *efs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
62{
62 efs_ino_t inodenum; 63 efs_ino_t inodenum;
63 struct inode *inode = NULL; 64 struct inode *inode = NULL;
64 65
diff --git a/fs/exofs/namei.c b/fs/exofs/namei.c
index fc7161d6bf6b..909ed6ea4cf6 100644
--- a/fs/exofs/namei.c
+++ b/fs/exofs/namei.c
@@ -46,7 +46,7 @@ static inline int exofs_add_nondir(struct dentry *dentry, struct inode *inode)
46} 46}
47 47
48static struct dentry *exofs_lookup(struct inode *dir, struct dentry *dentry, 48static struct dentry *exofs_lookup(struct inode *dir, struct dentry *dentry,
49 struct nameidata *nd) 49 unsigned int flags)
50{ 50{
51 struct inode *inode; 51 struct inode *inode;
52 ino_t ino; 52 ino_t ino;
diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c
index f663a67d7bf0..b3e6778cd1e7 100644
--- a/fs/ext2/namei.c
+++ b/fs/ext2/namei.c
@@ -55,7 +55,7 @@ static inline int ext2_add_nondir(struct dentry *dentry, struct inode *inode)
55 * Methods themselves. 55 * Methods themselves.
56 */ 56 */
57 57
58static struct dentry *ext2_lookup(struct inode * dir, struct dentry *dentry, struct nameidata *nd) 58static struct dentry *ext2_lookup(struct inode * dir, struct dentry *dentry, unsigned int flags)
59{ 59{
60 struct inode * inode; 60 struct inode * inode;
61 ino_t ino; 61 ino_t ino;
diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c
index eeb63dfc5d20..86d25f3f6043 100644
--- a/fs/ext3/namei.c
+++ b/fs/ext3/namei.c
@@ -1011,7 +1011,7 @@ errout:
1011 return NULL; 1011 return NULL;
1012} 1012}
1013 1013
1014static struct dentry *ext3_lookup(struct inode * dir, struct dentry *dentry, struct nameidata *nd) 1014static struct dentry *ext3_lookup(struct inode * dir, struct dentry *dentry, unsigned int flags)
1015{ 1015{
1016 struct inode * inode; 1016 struct inode * inode;
1017 struct ext3_dir_entry_2 * de; 1017 struct ext3_dir_entry_2 * de;
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 5845cd97bf8b..4fba3cd42e2b 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -1312,7 +1312,7 @@ errout:
1312 return NULL; 1312 return NULL;
1313} 1313}
1314 1314
1315static struct dentry *ext4_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 1315static struct dentry *ext4_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
1316{ 1316{
1317 struct inode *inode; 1317 struct inode *inode;
1318 struct ext4_dir_entry_2 *de; 1318 struct ext4_dir_entry_2 *de;
diff --git a/fs/fat/namei_msdos.c b/fs/fat/namei_msdos.c
index c5938c9084b9..47c608b05294 100644
--- a/fs/fat/namei_msdos.c
+++ b/fs/fat/namei_msdos.c
@@ -201,7 +201,7 @@ static const struct dentry_operations msdos_dentry_operations = {
201 201
202/***** Get inode using directory and name */ 202/***** Get inode using directory and name */
203static struct dentry *msdos_lookup(struct inode *dir, struct dentry *dentry, 203static struct dentry *msdos_lookup(struct inode *dir, struct dentry *dentry,
204 struct nameidata *nd) 204 unsigned int flags)
205{ 205{
206 struct super_block *sb = dir->i_sb; 206 struct super_block *sb = dir->i_sb;
207 struct fat_slot_info sinfo; 207 struct fat_slot_info sinfo;
diff --git a/fs/fat/namei_vfat.c b/fs/fat/namei_vfat.c
index 0bbdf3990060..44152571524e 100644
--- a/fs/fat/namei_vfat.c
+++ b/fs/fat/namei_vfat.c
@@ -714,7 +714,7 @@ static int vfat_d_anon_disconn(struct dentry *dentry)
714} 714}
715 715
716static struct dentry *vfat_lookup(struct inode *dir, struct dentry *dentry, 716static struct dentry *vfat_lookup(struct inode *dir, struct dentry *dentry,
717 struct nameidata *nd) 717 unsigned int flags)
718{ 718{
719 struct super_block *sb = dir->i_sb; 719 struct super_block *sb = dir->i_sb;
720 struct fat_slot_info sinfo; 720 struct fat_slot_info sinfo;
diff --git a/fs/freevxfs/vxfs_lookup.c b/fs/freevxfs/vxfs_lookup.c
index 3360f1e678ad..bd447e88f208 100644
--- a/fs/freevxfs/vxfs_lookup.c
+++ b/fs/freevxfs/vxfs_lookup.c
@@ -48,7 +48,7 @@
48#define VXFS_BLOCK_PER_PAGE(sbp) ((PAGE_CACHE_SIZE / (sbp)->s_blocksize)) 48#define VXFS_BLOCK_PER_PAGE(sbp) ((PAGE_CACHE_SIZE / (sbp)->s_blocksize))
49 49
50 50
51static struct dentry * vxfs_lookup(struct inode *, struct dentry *, struct nameidata *); 51static struct dentry * vxfs_lookup(struct inode *, struct dentry *, unsigned int);
52static int vxfs_readdir(struct file *, void *, filldir_t); 52static int vxfs_readdir(struct file *, void *, filldir_t);
53 53
54const struct inode_operations vxfs_dir_inode_ops = { 54const struct inode_operations vxfs_dir_inode_ops = {
@@ -203,7 +203,7 @@ vxfs_inode_by_name(struct inode *dip, struct dentry *dp)
203 * in the return pointer. 203 * in the return pointer.
204 */ 204 */
205static struct dentry * 205static struct dentry *
206vxfs_lookup(struct inode *dip, struct dentry *dp, struct nameidata *nd) 206vxfs_lookup(struct inode *dip, struct dentry *dp, unsigned int flags)
207{ 207{
208 struct inode *ip = NULL; 208 struct inode *ip = NULL;
209 ino_t ino; 209 ino_t ino;
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index eba30bd9ba2b..385235ac137d 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -316,7 +316,7 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, struct qstr *name,
316} 316}
317 317
318static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry, 318static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry,
319 struct nameidata *nd) 319 unsigned int flags)
320{ 320{
321 int err; 321 int err;
322 struct fuse_entry_out outarg; 322 struct fuse_entry_out outarg;
@@ -478,7 +478,7 @@ static int fuse_atomic_open(struct inode *dir, struct dentry *entry,
478 struct dentry *res = NULL; 478 struct dentry *res = NULL;
479 479
480 if (d_unhashed(entry)) { 480 if (d_unhashed(entry)) {
481 res = fuse_lookup(dir, entry, NULL); 481 res = fuse_lookup(dir, entry, 0);
482 if (IS_ERR(res)) 482 if (IS_ERR(res))
483 return PTR_ERR(res); 483 return PTR_ERR(res);
484 484
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index a9ba2444e077..19e443b73354 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -775,7 +775,7 @@ static int gfs2_create(struct inode *dir, struct dentry *dentry,
775 */ 775 */
776 776
777static struct dentry *gfs2_lookup(struct inode *dir, struct dentry *dentry, 777static struct dentry *gfs2_lookup(struct inode *dir, struct dentry *dentry,
778 struct nameidata *nd) 778 unsigned int flags)
779{ 779{
780 struct inode *inode = gfs2_lookupi(dir, &dentry->d_name, 0); 780 struct inode *inode = gfs2_lookupi(dir, &dentry->d_name, 0);
781 if (inode && !IS_ERR(inode)) { 781 if (inode && !IS_ERR(inode)) {
diff --git a/fs/hfs/dir.c b/fs/hfs/dir.c
index 62fc14ea4b73..617b1ed71f52 100644
--- a/fs/hfs/dir.c
+++ b/fs/hfs/dir.c
@@ -18,7 +18,7 @@
18 * hfs_lookup() 18 * hfs_lookup()
19 */ 19 */
20static struct dentry *hfs_lookup(struct inode *dir, struct dentry *dentry, 20static struct dentry *hfs_lookup(struct inode *dir, struct dentry *dentry,
21 struct nameidata *nd) 21 unsigned int flags)
22{ 22{
23 hfs_cat_rec rec; 23 hfs_cat_rec rec;
24 struct hfs_find_data fd; 24 struct hfs_find_data fd;
diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
index 761ec06354b4..451c97281b83 100644
--- a/fs/hfs/inode.c
+++ b/fs/hfs/inode.c
@@ -489,7 +489,7 @@ out:
489} 489}
490 490
491static struct dentry *hfs_file_lookup(struct inode *dir, struct dentry *dentry, 491static struct dentry *hfs_file_lookup(struct inode *dir, struct dentry *dentry,
492 struct nameidata *nd) 492 unsigned int flags)
493{ 493{
494 struct inode *inode = NULL; 494 struct inode *inode = NULL;
495 hfs_cat_rec rec; 495 hfs_cat_rec rec;
diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c
index 26b53fb09f68..90c2f78b2c79 100644
--- a/fs/hfsplus/dir.c
+++ b/fs/hfsplus/dir.c
@@ -25,7 +25,7 @@ static inline void hfsplus_instantiate(struct dentry *dentry,
25 25
26/* Find the entry inside dir named dentry->d_name */ 26/* Find the entry inside dir named dentry->d_name */
27static struct dentry *hfsplus_lookup(struct inode *dir, struct dentry *dentry, 27static struct dentry *hfsplus_lookup(struct inode *dir, struct dentry *dentry,
28 struct nameidata *nd) 28 unsigned int flags)
29{ 29{
30 struct inode *inode = NULL; 30 struct inode *inode = NULL;
31 struct hfs_find_data fd; 31 struct hfs_find_data fd;
diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c
index 82b69ee4dacc..7009265b746f 100644
--- a/fs/hfsplus/inode.c
+++ b/fs/hfsplus/inode.c
@@ -168,7 +168,7 @@ const struct dentry_operations hfsplus_dentry_operations = {
168}; 168};
169 169
170static struct dentry *hfsplus_file_lookup(struct inode *dir, 170static struct dentry *hfsplus_file_lookup(struct inode *dir,
171 struct dentry *dentry, struct nameidata *nd) 171 struct dentry *dentry, unsigned int flags)
172{ 172{
173 struct hfs_find_data fd; 173 struct hfs_find_data fd;
174 struct super_block *sb = dir->i_sb; 174 struct super_block *sb = dir->i_sb;
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index 2afa5bbccf9b..0ea005228e1b 100644
--- a/fs/hostfs/hostfs_kern.c
+++ b/fs/hostfs/hostfs_kern.c
@@ -595,7 +595,7 @@ int hostfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
595} 595}
596 596
597struct dentry *hostfs_lookup(struct inode *ino, struct dentry *dentry, 597struct dentry *hostfs_lookup(struct inode *ino, struct dentry *dentry,
598 struct nameidata *nd) 598 unsigned int flags)
599{ 599{
600 struct inode *inode; 600 struct inode *inode;
601 char *name; 601 char *name;
diff --git a/fs/hpfs/dir.c b/fs/hpfs/dir.c
index b8472f803f4e..78e12b2e0ea2 100644
--- a/fs/hpfs/dir.c
+++ b/fs/hpfs/dir.c
@@ -189,7 +189,7 @@ out:
189 * to tell read_inode to read fnode or not. 189 * to tell read_inode to read fnode or not.
190 */ 190 */
191 191
192struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 192struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
193{ 193{
194 const unsigned char *name = dentry->d_name.name; 194 const unsigned char *name = dentry->d_name.name;
195 unsigned len = dentry->d_name.len; 195 unsigned len = dentry->d_name.len;
diff --git a/fs/hpfs/hpfs_fn.h b/fs/hpfs/hpfs_fn.h
index c07ef1f1ced6..ac1ead194db5 100644
--- a/fs/hpfs/hpfs_fn.h
+++ b/fs/hpfs/hpfs_fn.h
@@ -220,7 +220,7 @@ extern const struct dentry_operations hpfs_dentry_operations;
220 220
221/* dir.c */ 221/* dir.c */
222 222
223struct dentry *hpfs_lookup(struct inode *, struct dentry *, struct nameidata *); 223struct dentry *hpfs_lookup(struct inode *, struct dentry *, unsigned int);
224extern const struct file_operations hpfs_dir_ops; 224extern const struct file_operations hpfs_dir_ops;
225 225
226/* dnode.c */ 226/* dnode.c */
diff --git a/fs/hppfs/hppfs.c b/fs/hppfs/hppfs.c
index d4f93b52cec5..e5c06531dcc4 100644
--- a/fs/hppfs/hppfs.c
+++ b/fs/hppfs/hppfs.c
@@ -138,7 +138,7 @@ static int file_removed(struct dentry *dentry, const char *file)
138} 138}
139 139
140static struct dentry *hppfs_lookup(struct inode *ino, struct dentry *dentry, 140static struct dentry *hppfs_lookup(struct inode *ino, struct dentry *dentry,
141 struct nameidata *nd) 141 unsigned int flags)
142{ 142{
143 struct dentry *proc_dentry, *parent; 143 struct dentry *proc_dentry, *parent;
144 struct qstr *name = &dentry->d_name; 144 struct qstr *name = &dentry->d_name;
diff --git a/fs/isofs/isofs.h b/fs/isofs/isofs.h
index 0e73f63d9274..3620ad1ea9bc 100644
--- a/fs/isofs/isofs.h
+++ b/fs/isofs/isofs.h
@@ -114,7 +114,7 @@ extern int isofs_name_translate(struct iso_directory_record *, char *, struct in
114int get_joliet_filename(struct iso_directory_record *, unsigned char *, struct inode *); 114int get_joliet_filename(struct iso_directory_record *, unsigned char *, struct inode *);
115int get_acorn_filename(struct iso_directory_record *, char *, struct inode *); 115int get_acorn_filename(struct iso_directory_record *, char *, struct inode *);
116 116
117extern struct dentry *isofs_lookup(struct inode *, struct dentry *, struct nameidata *); 117extern struct dentry *isofs_lookup(struct inode *, struct dentry *, unsigned int flags);
118extern struct buffer_head *isofs_bread(struct inode *, sector_t); 118extern struct buffer_head *isofs_bread(struct inode *, sector_t);
119extern int isofs_get_blocks(struct inode *, sector_t, struct buffer_head **, unsigned long); 119extern int isofs_get_blocks(struct inode *, sector_t, struct buffer_head **, unsigned long);
120 120
diff --git a/fs/isofs/namei.c b/fs/isofs/namei.c
index 1e2946f2a69e..c167028844ed 100644
--- a/fs/isofs/namei.c
+++ b/fs/isofs/namei.c
@@ -163,7 +163,7 @@ isofs_find_entry(struct inode *dir, struct dentry *dentry,
163 return 0; 163 return 0;
164} 164}
165 165
166struct dentry *isofs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 166struct dentry *isofs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
167{ 167{
168 int found; 168 int found;
169 unsigned long uninitialized_var(block); 169 unsigned long uninitialized_var(block);
diff --git a/fs/jffs2/dir.c b/fs/jffs2/dir.c
index b56018896d5e..6a601673f89f 100644
--- a/fs/jffs2/dir.c
+++ b/fs/jffs2/dir.c
@@ -27,7 +27,7 @@ static int jffs2_readdir (struct file *, void *, filldir_t);
27static int jffs2_create (struct inode *,struct dentry *,umode_t, 27static int jffs2_create (struct inode *,struct dentry *,umode_t,
28 struct nameidata *); 28 struct nameidata *);
29static struct dentry *jffs2_lookup (struct inode *,struct dentry *, 29static struct dentry *jffs2_lookup (struct inode *,struct dentry *,
30 struct nameidata *); 30 unsigned int);
31static int jffs2_link (struct dentry *,struct inode *,struct dentry *); 31static int jffs2_link (struct dentry *,struct inode *,struct dentry *);
32static int jffs2_unlink (struct inode *,struct dentry *); 32static int jffs2_unlink (struct inode *,struct dentry *);
33static int jffs2_symlink (struct inode *,struct dentry *,const char *); 33static int jffs2_symlink (struct inode *,struct dentry *,const char *);
@@ -74,7 +74,7 @@ const struct inode_operations jffs2_dir_inode_operations =
74 nice and simple 74 nice and simple
75*/ 75*/
76static struct dentry *jffs2_lookup(struct inode *dir_i, struct dentry *target, 76static struct dentry *jffs2_lookup(struct inode *dir_i, struct dentry *target,
77 struct nameidata *nd) 77 unsigned int flags)
78{ 78{
79 struct jffs2_inode_info *dir_f; 79 struct jffs2_inode_info *dir_f;
80 struct jffs2_full_dirent *fd = NULL, *fd_list; 80 struct jffs2_full_dirent *fd = NULL, *fd_list;
diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c
index f37977fb0871..34fe85555caf 100644
--- a/fs/jfs/namei.c
+++ b/fs/jfs/namei.c
@@ -1436,7 +1436,7 @@ static int jfs_mknod(struct inode *dir, struct dentry *dentry,
1436 return rc; 1436 return rc;
1437} 1437}
1438 1438
1439static struct dentry *jfs_lookup(struct inode *dip, struct dentry *dentry, struct nameidata *nd) 1439static struct dentry *jfs_lookup(struct inode *dip, struct dentry *dentry, unsigned int flags)
1440{ 1440{
1441 struct btstack btstack; 1441 struct btstack btstack;
1442 ino_t inum; 1442 ino_t inum;
diff --git a/fs/libfs.c b/fs/libfs.c
index f86ec27a4230..ebd03f6910d5 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -53,7 +53,7 @@ static int simple_delete_dentry(const struct dentry *dentry)
53 * Lookup the data. This is trivial - if the dentry didn't already 53 * Lookup the data. This is trivial - if the dentry didn't already
54 * exist, we know it is negative. Set d_op to delete negative dentries. 54 * exist, we know it is negative. Set d_op to delete negative dentries.
55 */ 55 */
56struct dentry *simple_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 56struct dentry *simple_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
57{ 57{
58 static const struct dentry_operations simple_dentry_operations = { 58 static const struct dentry_operations simple_dentry_operations = {
59 .d_delete = simple_delete_dentry, 59 .d_delete = simple_delete_dentry,
diff --git a/fs/logfs/dir.c b/fs/logfs/dir.c
index bea5d1b9954b..8a3dcc615b39 100644
--- a/fs/logfs/dir.c
+++ b/fs/logfs/dir.c
@@ -349,7 +349,7 @@ static void logfs_set_name(struct logfs_disk_dentry *dd, struct qstr *name)
349} 349}
350 350
351static struct dentry *logfs_lookup(struct inode *dir, struct dentry *dentry, 351static struct dentry *logfs_lookup(struct inode *dir, struct dentry *dentry,
352 struct nameidata *nd) 352 unsigned int flags)
353{ 353{
354 struct page *page; 354 struct page *page;
355 struct logfs_disk_dentry *dd; 355 struct logfs_disk_dentry *dd;
diff --git a/fs/minix/namei.c b/fs/minix/namei.c
index 2d0ee1786305..1f245240ea08 100644
--- a/fs/minix/namei.c
+++ b/fs/minix/namei.c
@@ -18,7 +18,7 @@ static int add_nondir(struct dentry *dentry, struct inode *inode)
18 return err; 18 return err;
19} 19}
20 20
21static struct dentry *minix_lookup(struct inode * dir, struct dentry *dentry, struct nameidata *nd) 21static struct dentry *minix_lookup(struct inode * dir, struct dentry *dentry, unsigned int flags)
22{ 22{
23 struct inode * inode = NULL; 23 struct inode * inode = NULL;
24 ino_t ino; 24 ino_t ino;
diff --git a/fs/namei.c b/fs/namei.c
index 2e943ab04f32..175e81b8f261 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1090,7 +1090,7 @@ static struct dentry *lookup_real(struct inode *dir, struct dentry *dentry,
1090 return ERR_PTR(-ENOENT); 1090 return ERR_PTR(-ENOENT);
1091 } 1091 }
1092 1092
1093 old = dir->i_op->lookup(dir, dentry, nd); 1093 old = dir->i_op->lookup(dir, dentry, nd ? nd->flags : 0);
1094 if (unlikely(old)) { 1094 if (unlikely(old)) {
1095 dput(dentry); 1095 dput(dentry);
1096 dentry = old; 1096 dentry = old;
diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c
index 32607f749588..a0cff22bfc9b 100644
--- a/fs/ncpfs/dir.c
+++ b/fs/ncpfs/dir.c
@@ -31,7 +31,7 @@ static void ncp_do_readdir(struct file *, void *, filldir_t,
31static int ncp_readdir(struct file *, void *, filldir_t); 31static int ncp_readdir(struct file *, void *, filldir_t);
32 32
33static int ncp_create(struct inode *, struct dentry *, umode_t, struct nameidata *); 33static int ncp_create(struct inode *, struct dentry *, umode_t, struct nameidata *);
34static struct dentry *ncp_lookup(struct inode *, struct dentry *, struct nameidata *); 34static struct dentry *ncp_lookup(struct inode *, struct dentry *, unsigned int);
35static int ncp_unlink(struct inode *, struct dentry *); 35static int ncp_unlink(struct inode *, struct dentry *);
36static int ncp_mkdir(struct inode *, struct dentry *, umode_t); 36static int ncp_mkdir(struct inode *, struct dentry *, umode_t);
37static int ncp_rmdir(struct inode *, struct dentry *); 37static int ncp_rmdir(struct inode *, struct dentry *);
@@ -836,7 +836,7 @@ out:
836 return result; 836 return result;
837} 837}
838 838
839static struct dentry *ncp_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 839static struct dentry *ncp_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
840{ 840{
841 struct ncp_server *server = NCP_SERVER(dir); 841 struct ncp_server *server = NCP_SERVER(dir);
842 struct inode *inode = NULL; 842 struct inode *inode = NULL;
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 656f52e9aa2e..8f21205c5896 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -46,7 +46,7 @@
46static int nfs_opendir(struct inode *, struct file *); 46static int nfs_opendir(struct inode *, struct file *);
47static int nfs_closedir(struct inode *, struct file *); 47static int nfs_closedir(struct inode *, struct file *);
48static int nfs_readdir(struct file *, void *, filldir_t); 48static int nfs_readdir(struct file *, void *, filldir_t);
49static struct dentry *nfs_lookup(struct inode *, struct dentry *, struct nameidata *); 49static struct dentry *nfs_lookup(struct inode *, struct dentry *, unsigned int);
50static int nfs_create(struct inode *, struct dentry *, umode_t, struct nameidata *); 50static int nfs_create(struct inode *, struct dentry *, umode_t, struct nameidata *);
51static int nfs_mkdir(struct inode *, struct dentry *, umode_t); 51static int nfs_mkdir(struct inode *, struct dentry *, umode_t);
52static int nfs_rmdir(struct inode *, struct dentry *); 52static int nfs_rmdir(struct inode *, struct dentry *);
@@ -1270,7 +1270,7 @@ const struct dentry_operations nfs_dentry_operations = {
1270 .d_release = nfs_d_release, 1270 .d_release = nfs_d_release,
1271}; 1271};
1272 1272
1273static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd) 1273static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned int flags)
1274{ 1274{
1275 struct dentry *res; 1275 struct dentry *res;
1276 struct dentry *parent; 1276 struct dentry *parent;
@@ -1291,7 +1291,7 @@ static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, stru
1291 * If we're doing an exclusive create, optimize away the lookup 1291 * If we're doing an exclusive create, optimize away the lookup
1292 * but don't hash the dentry. 1292 * but don't hash the dentry.
1293 */ 1293 */
1294 if (nd && nfs_is_exclusive_create(dir, nd->flags)) { 1294 if (nfs_is_exclusive_create(dir, flags)) {
1295 d_instantiate(dentry, NULL); 1295 d_instantiate(dentry, NULL);
1296 res = NULL; 1296 res = NULL;
1297 goto out; 1297 goto out;
@@ -1482,7 +1482,7 @@ out:
1482 return err; 1482 return err;
1483 1483
1484no_open: 1484no_open:
1485 res = nfs_lookup(dir, dentry, NULL); 1485 res = nfs_lookup(dir, dentry, 0);
1486 err = PTR_ERR(res); 1486 err = PTR_ERR(res);
1487 if (IS_ERR(res)) 1487 if (IS_ERR(res))
1488 goto out; 1488 goto out;
diff --git a/fs/nilfs2/namei.c b/fs/nilfs2/namei.c
index b72847988b78..5e5f779db76f 100644
--- a/fs/nilfs2/namei.c
+++ b/fs/nilfs2/namei.c
@@ -63,7 +63,7 @@ static inline int nilfs_add_nondir(struct dentry *dentry, struct inode *inode)
63 */ 63 */
64 64
65static struct dentry * 65static struct dentry *
66nilfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 66nilfs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
67{ 67{
68 struct inode *inode; 68 struct inode *inode;
69 ino_t ino; 69 ino_t ino;
diff --git a/fs/ntfs/namei.c b/fs/ntfs/namei.c
index 358273e59ade..436f36037e09 100644
--- a/fs/ntfs/namei.c
+++ b/fs/ntfs/namei.c
@@ -101,7 +101,7 @@
101 * Locking: Caller must hold i_mutex on the directory. 101 * Locking: Caller must hold i_mutex on the directory.
102 */ 102 */
103static struct dentry *ntfs_lookup(struct inode *dir_ino, struct dentry *dent, 103static struct dentry *ntfs_lookup(struct inode *dir_ino, struct dentry *dent,
104 struct nameidata *nd) 104 unsigned int flags)
105{ 105{
106 ntfs_volume *vol = NTFS_SB(dir_ino->i_sb); 106 ntfs_volume *vol = NTFS_SB(dir_ino->i_sb);
107 struct inode *dent_inode; 107 struct inode *dent_inode;
diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c
index 9f39c640cddf..fd71f6e5841f 100644
--- a/fs/ocfs2/namei.c
+++ b/fs/ocfs2/namei.c
@@ -98,7 +98,7 @@ static int ocfs2_create_symlink_data(struct ocfs2_super *osb,
98#define OCFS2_ORPHAN_NAMELEN ((int)(2 * sizeof(u64))) 98#define OCFS2_ORPHAN_NAMELEN ((int)(2 * sizeof(u64)))
99 99
100static struct dentry *ocfs2_lookup(struct inode *dir, struct dentry *dentry, 100static struct dentry *ocfs2_lookup(struct inode *dir, struct dentry *dentry,
101 struct nameidata *nd) 101 unsigned int flags)
102{ 102{
103 int status; 103 int status;
104 u64 blkno; 104 u64 blkno;
diff --git a/fs/omfs/dir.c b/fs/omfs/dir.c
index f00576ec320f..3d254872e641 100644
--- a/fs/omfs/dir.c
+++ b/fs/omfs/dir.c
@@ -291,7 +291,7 @@ static int omfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
291} 291}
292 292
293static struct dentry *omfs_lookup(struct inode *dir, struct dentry *dentry, 293static struct dentry *omfs_lookup(struct inode *dir, struct dentry *dentry,
294 struct nameidata *nd) 294 unsigned int flags)
295{ 295{
296 struct buffer_head *bh; 296 struct buffer_head *bh;
297 struct inode *inode = NULL; 297 struct inode *inode = NULL;
diff --git a/fs/openpromfs/inode.c b/fs/openpromfs/inode.c
index bc49c975d501..4a3477949bca 100644
--- a/fs/openpromfs/inode.c
+++ b/fs/openpromfs/inode.c
@@ -170,13 +170,13 @@ static const struct file_operations openprom_operations = {
170 .llseek = generic_file_llseek, 170 .llseek = generic_file_llseek,
171}; 171};
172 172
173static struct dentry *openpromfs_lookup(struct inode *, struct dentry *, struct nameidata *); 173static struct dentry *openpromfs_lookup(struct inode *, struct dentry *, unsigned int);
174 174
175static const struct inode_operations openprom_inode_operations = { 175static const struct inode_operations openprom_inode_operations = {
176 .lookup = openpromfs_lookup, 176 .lookup = openpromfs_lookup,
177}; 177};
178 178
179static struct dentry *openpromfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 179static struct dentry *openpromfs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
180{ 180{
181 struct op_inode_info *ent_oi, *oi = OP_I(dir); 181 struct op_inode_info *ent_oi, *oi = OP_I(dir);
182 struct device_node *dp, *child; 182 struct device_node *dp, *child;
diff --git a/fs/proc/base.c b/fs/proc/base.c
index bf749cca4cc6..8eaa5ea1c613 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1956,7 +1956,7 @@ out_no_task:
1956} 1956}
1957 1957
1958static struct dentry *proc_lookupfd(struct inode *dir, struct dentry *dentry, 1958static struct dentry *proc_lookupfd(struct inode *dir, struct dentry *dentry,
1959 struct nameidata *nd) 1959 unsigned int flags)
1960{ 1960{
1961 return proc_lookupfd_common(dir, dentry, proc_fd_instantiate); 1961 return proc_lookupfd_common(dir, dentry, proc_fd_instantiate);
1962} 1962}
@@ -2145,7 +2145,7 @@ proc_map_files_instantiate(struct inode *dir, struct dentry *dentry,
2145} 2145}
2146 2146
2147static struct dentry *proc_map_files_lookup(struct inode *dir, 2147static struct dentry *proc_map_files_lookup(struct inode *dir,
2148 struct dentry *dentry, struct nameidata *nd) 2148 struct dentry *dentry, unsigned int flags)
2149{ 2149{
2150 unsigned long vm_start, vm_end; 2150 unsigned long vm_start, vm_end;
2151 struct vm_area_struct *vma; 2151 struct vm_area_struct *vma;
@@ -2380,7 +2380,7 @@ static struct dentry *proc_fdinfo_instantiate(struct inode *dir,
2380 2380
2381static struct dentry *proc_lookupfdinfo(struct inode *dir, 2381static struct dentry *proc_lookupfdinfo(struct inode *dir,
2382 struct dentry *dentry, 2382 struct dentry *dentry,
2383 struct nameidata *nd) 2383 unsigned int flags)
2384{ 2384{
2385 return proc_lookupfd_common(dir, dentry, proc_fdinfo_instantiate); 2385 return proc_lookupfd_common(dir, dentry, proc_fdinfo_instantiate);
2386} 2386}
@@ -2630,7 +2630,7 @@ static const struct file_operations proc_attr_dir_operations = {
2630}; 2630};
2631 2631
2632static struct dentry *proc_attr_dir_lookup(struct inode *dir, 2632static struct dentry *proc_attr_dir_lookup(struct inode *dir,
2633 struct dentry *dentry, struct nameidata *nd) 2633 struct dentry *dentry, unsigned int flags)
2634{ 2634{
2635 return proc_pident_lookup(dir, dentry, 2635 return proc_pident_lookup(dir, dentry,
2636 attr_dir_stuff, ARRAY_SIZE(attr_dir_stuff)); 2636 attr_dir_stuff, ARRAY_SIZE(attr_dir_stuff));
@@ -3114,7 +3114,8 @@ static const struct file_operations proc_tgid_base_operations = {
3114 .llseek = default_llseek, 3114 .llseek = default_llseek,
3115}; 3115};
3116 3116
3117static struct dentry *proc_tgid_base_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd){ 3117static struct dentry *proc_tgid_base_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
3118{
3118 return proc_pident_lookup(dir, dentry, 3119 return proc_pident_lookup(dir, dentry,
3119 tgid_base_stuff, ARRAY_SIZE(tgid_base_stuff)); 3120 tgid_base_stuff, ARRAY_SIZE(tgid_base_stuff));
3120} 3121}
@@ -3243,7 +3244,7 @@ out:
3243 return error; 3244 return error;
3244} 3245}
3245 3246
3246struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd) 3247struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsigned int flags)
3247{ 3248{
3248 struct dentry *result; 3249 struct dentry *result;
3249 struct task_struct *task; 3250 struct task_struct *task;
@@ -3470,7 +3471,8 @@ static int proc_tid_base_readdir(struct file * filp,
3470 tid_base_stuff,ARRAY_SIZE(tid_base_stuff)); 3471 tid_base_stuff,ARRAY_SIZE(tid_base_stuff));
3471} 3472}
3472 3473
3473static struct dentry *proc_tid_base_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd){ 3474static struct dentry *proc_tid_base_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
3475{
3474 return proc_pident_lookup(dir, dentry, 3476 return proc_pident_lookup(dir, dentry,
3475 tid_base_stuff, ARRAY_SIZE(tid_base_stuff)); 3477 tid_base_stuff, ARRAY_SIZE(tid_base_stuff));
3476} 3478}
@@ -3514,7 +3516,7 @@ out:
3514 return error; 3516 return error;
3515} 3517}
3516 3518
3517static struct dentry *proc_task_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *nd) 3519static struct dentry *proc_task_lookup(struct inode *dir, struct dentry * dentry, unsigned int flags)
3518{ 3520{
3519 struct dentry *result = ERR_PTR(-ENOENT); 3521 struct dentry *result = ERR_PTR(-ENOENT);
3520 struct task_struct *task; 3522 struct task_struct *task;
diff --git a/fs/proc/generic.c b/fs/proc/generic.c
index 2edf34f2eb61..b3647fe6a608 100644
--- a/fs/proc/generic.c
+++ b/fs/proc/generic.c
@@ -446,7 +446,7 @@ out_unlock:
446} 446}
447 447
448struct dentry *proc_lookup(struct inode *dir, struct dentry *dentry, 448struct dentry *proc_lookup(struct inode *dir, struct dentry *dentry,
449 struct nameidata *nd) 449 unsigned int flags)
450{ 450{
451 return proc_lookup_de(PDE(dir), dir, dentry); 451 return proc_lookup_de(PDE(dir), dir, dentry);
452} 452}
diff --git a/fs/proc/internal.h b/fs/proc/internal.h
index e0c2a48dab73..e1167a1c9126 100644
--- a/fs/proc/internal.h
+++ b/fs/proc/internal.h
@@ -106,7 +106,7 @@ void pde_users_dec(struct proc_dir_entry *pde);
106 106
107extern spinlock_t proc_subdir_lock; 107extern spinlock_t proc_subdir_lock;
108 108
109struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, struct nameidata *); 109struct dentry *proc_pid_lookup(struct inode *dir, struct dentry * dentry, unsigned int);
110int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir); 110int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir);
111unsigned long task_vsize(struct mm_struct *); 111unsigned long task_vsize(struct mm_struct *);
112unsigned long task_statm(struct mm_struct *, 112unsigned long task_statm(struct mm_struct *,
@@ -132,7 +132,7 @@ int proc_remount(struct super_block *sb, int *flags, char *data);
132 * of the /proc/<pid> subdirectories. 132 * of the /proc/<pid> subdirectories.
133 */ 133 */
134int proc_readdir(struct file *, void *, filldir_t); 134int proc_readdir(struct file *, void *, filldir_t);
135struct dentry *proc_lookup(struct inode *, struct dentry *, struct nameidata *); 135struct dentry *proc_lookup(struct inode *, struct dentry *, unsigned int);
136 136
137 137
138 138
diff --git a/fs/proc/namespaces.c b/fs/proc/namespaces.c
index 40ceb40f9853..b178ed733c36 100644
--- a/fs/proc/namespaces.c
+++ b/fs/proc/namespaces.c
@@ -140,7 +140,7 @@ const struct file_operations proc_ns_dir_operations = {
140}; 140};
141 141
142static struct dentry *proc_ns_dir_lookup(struct inode *dir, 142static struct dentry *proc_ns_dir_lookup(struct inode *dir,
143 struct dentry *dentry, struct nameidata *nd) 143 struct dentry *dentry, unsigned int flags)
144{ 144{
145 struct dentry *error; 145 struct dentry *error;
146 struct task_struct *task = get_proc_task(dir); 146 struct task_struct *task = get_proc_task(dir);
diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c
index 06e1cc17caf6..fe72cd073dea 100644
--- a/fs/proc/proc_net.c
+++ b/fs/proc/proc_net.c
@@ -119,7 +119,7 @@ static struct net *get_proc_task_net(struct inode *dir)
119} 119}
120 120
121static struct dentry *proc_tgid_net_lookup(struct inode *dir, 121static struct dentry *proc_tgid_net_lookup(struct inode *dir,
122 struct dentry *dentry, struct nameidata *nd) 122 struct dentry *dentry, unsigned int flags)
123{ 123{
124 struct dentry *de; 124 struct dentry *de;
125 struct net *net; 125 struct net *net;
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index fda69fa39099..dfafeb2b05a0 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -433,7 +433,7 @@ static struct ctl_table_header *grab_header(struct inode *inode)
433} 433}
434 434
435static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry, 435static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry,
436 struct nameidata *nd) 436 unsigned int flags)
437{ 437{
438 struct ctl_table_header *head = grab_header(dir); 438 struct ctl_table_header *head = grab_header(dir);
439 struct ctl_table_header *h = NULL; 439 struct ctl_table_header *h = NULL;
diff --git a/fs/proc/root.c b/fs/proc/root.c
index 7c30fce037c0..568b20290c75 100644
--- a/fs/proc/root.c
+++ b/fs/proc/root.c
@@ -200,13 +200,12 @@ static int proc_root_getattr(struct vfsmount *mnt, struct dentry *dentry, struct
200 return 0; 200 return 0;
201} 201}
202 202
203static struct dentry *proc_root_lookup(struct inode * dir, struct dentry * dentry, struct nameidata *nd) 203static struct dentry *proc_root_lookup(struct inode * dir, struct dentry * dentry, unsigned int flags)
204{ 204{
205 if (!proc_lookup(dir, dentry, nd)) { 205 if (!proc_lookup(dir, dentry, flags))
206 return NULL; 206 return NULL;
207 }
208 207
209 return proc_pid_lookup(dir, dentry, nd); 208 return proc_pid_lookup(dir, dentry, flags);
210} 209}
211 210
212static int proc_root_readdir(struct file * filp, 211static int proc_root_readdir(struct file * filp,
diff --git a/fs/qnx4/namei.c b/fs/qnx4/namei.c
index a512c0b30e8e..d024505ba007 100644
--- a/fs/qnx4/namei.c
+++ b/fs/qnx4/namei.c
@@ -95,7 +95,7 @@ static struct buffer_head *qnx4_find_entry(int len, struct inode *dir,
95 return NULL; 95 return NULL;
96} 96}
97 97
98struct dentry * qnx4_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 98struct dentry * qnx4_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
99{ 99{
100 int ino; 100 int ino;
101 struct qnx4_inode_entry *de; 101 struct qnx4_inode_entry *de;
diff --git a/fs/qnx4/qnx4.h b/fs/qnx4/qnx4.h
index 244d4620189b..34e2d329c97e 100644
--- a/fs/qnx4/qnx4.h
+++ b/fs/qnx4/qnx4.h
@@ -23,7 +23,7 @@ struct qnx4_inode_info {
23}; 23};
24 24
25extern struct inode *qnx4_iget(struct super_block *, unsigned long); 25extern struct inode *qnx4_iget(struct super_block *, unsigned long);
26extern struct dentry *qnx4_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd); 26extern struct dentry *qnx4_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags);
27extern unsigned long qnx4_count_free_blocks(struct super_block *sb); 27extern unsigned long qnx4_count_free_blocks(struct super_block *sb);
28extern unsigned long qnx4_block_map(struct inode *inode, long iblock); 28extern unsigned long qnx4_block_map(struct inode *inode, long iblock);
29 29
diff --git a/fs/qnx6/namei.c b/fs/qnx6/namei.c
index 8a97289e04ad..0561326a94f5 100644
--- a/fs/qnx6/namei.c
+++ b/fs/qnx6/namei.c
@@ -13,7 +13,7 @@
13#include "qnx6.h" 13#include "qnx6.h"
14 14
15struct dentry *qnx6_lookup(struct inode *dir, struct dentry *dentry, 15struct dentry *qnx6_lookup(struct inode *dir, struct dentry *dentry,
16 struct nameidata *nd) 16 unsigned int flags)
17{ 17{
18 unsigned ino; 18 unsigned ino;
19 struct page *page; 19 struct page *page;
diff --git a/fs/qnx6/qnx6.h b/fs/qnx6/qnx6.h
index 6c5e02a0b6a8..b00fcc960d37 100644
--- a/fs/qnx6/qnx6.h
+++ b/fs/qnx6/qnx6.h
@@ -45,7 +45,7 @@ struct qnx6_inode_info {
45 45
46extern struct inode *qnx6_iget(struct super_block *sb, unsigned ino); 46extern struct inode *qnx6_iget(struct super_block *sb, unsigned ino);
47extern struct dentry *qnx6_lookup(struct inode *dir, struct dentry *dentry, 47extern struct dentry *qnx6_lookup(struct inode *dir, struct dentry *dentry,
48 struct nameidata *nd); 48 unsigned int flags);
49 49
50#ifdef CONFIG_QNX6FS_DEBUG 50#ifdef CONFIG_QNX6FS_DEBUG
51extern void qnx6_superblock_debug(struct qnx6_super_block *, 51extern void qnx6_superblock_debug(struct qnx6_super_block *,
diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c
index 84e8a69cee9d..1d9cf248c471 100644
--- a/fs/reiserfs/namei.c
+++ b/fs/reiserfs/namei.c
@@ -322,7 +322,7 @@ static int reiserfs_find_entry(struct inode *dir, const char *name, int namelen,
322} 322}
323 323
324static struct dentry *reiserfs_lookup(struct inode *dir, struct dentry *dentry, 324static struct dentry *reiserfs_lookup(struct inode *dir, struct dentry *dentry,
325 struct nameidata *nd) 325 unsigned int flags)
326{ 326{
327 int retval; 327 int retval;
328 int lock_depth; 328 int lock_depth;
diff --git a/fs/romfs/super.c b/fs/romfs/super.c
index e64f6b5f7ae5..77c5f2173983 100644
--- a/fs/romfs/super.c
+++ b/fs/romfs/super.c
@@ -210,7 +210,7 @@ out:
210 * look up an entry in a directory 210 * look up an entry in a directory
211 */ 211 */
212static struct dentry *romfs_lookup(struct inode *dir, struct dentry *dentry, 212static struct dentry *romfs_lookup(struct inode *dir, struct dentry *dentry,
213 struct nameidata *nd) 213 unsigned int flags)
214{ 214{
215 unsigned long offset, maxoff; 215 unsigned long offset, maxoff;
216 struct inode *inode; 216 struct inode *inode;
diff --git a/fs/squashfs/namei.c b/fs/squashfs/namei.c
index abcc58f3c152..7834a517f7f4 100644
--- a/fs/squashfs/namei.c
+++ b/fs/squashfs/namei.c
@@ -134,7 +134,7 @@ out:
134 134
135 135
136static struct dentry *squashfs_lookup(struct inode *dir, struct dentry *dentry, 136static struct dentry *squashfs_lookup(struct inode *dir, struct dentry *dentry,
137 struct nameidata *nd) 137 unsigned int flags)
138{ 138{
139 const unsigned char *name = dentry->d_name.name; 139 const unsigned char *name = dentry->d_name.name;
140 int len = dentry->d_name.len; 140 int len = dentry->d_name.len;
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index 038e74b3af87..efd373e3e0aa 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -764,7 +764,7 @@ int sysfs_create_dir(struct kobject * kobj)
764} 764}
765 765
766static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, 766static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry,
767 struct nameidata *nd) 767 unsigned int flags)
768{ 768{
769 struct dentry *ret = NULL; 769 struct dentry *ret = NULL;
770 struct dentry *parent = dentry->d_parent; 770 struct dentry *parent = dentry->d_parent;
diff --git a/fs/sysv/namei.c b/fs/sysv/namei.c
index d7466e293614..a8c4359cd0e1 100644
--- a/fs/sysv/namei.c
+++ b/fs/sysv/namei.c
@@ -43,7 +43,7 @@ const struct dentry_operations sysv_dentry_operations = {
43 .d_hash = sysv_hash, 43 .d_hash = sysv_hash,
44}; 44};
45 45
46static struct dentry *sysv_lookup(struct inode * dir, struct dentry * dentry, struct nameidata *nd) 46static struct dentry *sysv_lookup(struct inode * dir, struct dentry * dentry, unsigned int flags)
47{ 47{
48 struct inode * inode = NULL; 48 struct inode * inode = NULL;
49 ino_t ino; 49 ino_t ino;
diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index a6d42efc76d2..845b2df08317 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -184,7 +184,7 @@ static int dbg_check_name(const struct ubifs_info *c,
184} 184}
185 185
186static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry, 186static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry,
187 struct nameidata *nd) 187 unsigned int flags)
188{ 188{
189 int err; 189 int err;
190 union ubifs_key key; 190 union ubifs_key key;
diff --git a/fs/udf/namei.c b/fs/udf/namei.c
index 18024178ac4c..929cc205985a 100644
--- a/fs/udf/namei.c
+++ b/fs/udf/namei.c
@@ -251,7 +251,7 @@ out_ok:
251} 251}
252 252
253static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry, 253static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry,
254 struct nameidata *nd) 254 unsigned int flags)
255{ 255{
256 struct inode *inode = NULL; 256 struct inode *inode = NULL;
257 struct fileIdentDesc cfi; 257 struct fileIdentDesc cfi;
diff --git a/fs/ufs/namei.c b/fs/ufs/namei.c
index a2281cadefa1..bc77fa170b9d 100644
--- a/fs/ufs/namei.c
+++ b/fs/ufs/namei.c
@@ -46,7 +46,7 @@ static inline int ufs_add_nondir(struct dentry *dentry, struct inode *inode)
46 return err; 46 return err;
47} 47}
48 48
49static struct dentry *ufs_lookup(struct inode * dir, struct dentry *dentry, struct nameidata *nd) 49static struct dentry *ufs_lookup(struct inode * dir, struct dentry *dentry, unsigned int flags)
50{ 50{
51 struct inode * inode = NULL; 51 struct inode * inode = NULL;
52 ino_t ino; 52 ino_t ino;
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index 1a25fd802798..b41cfba14faf 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -197,7 +197,7 @@ STATIC struct dentry *
197xfs_vn_lookup( 197xfs_vn_lookup(
198 struct inode *dir, 198 struct inode *dir,
199 struct dentry *dentry, 199 struct dentry *dentry,
200 struct nameidata *nd) 200 unsigned int flags)
201{ 201{
202 struct xfs_inode *cip; 202 struct xfs_inode *cip;
203 struct xfs_name name; 203 struct xfs_name name;
@@ -222,7 +222,7 @@ STATIC struct dentry *
222xfs_vn_ci_lookup( 222xfs_vn_ci_lookup(
223 struct inode *dir, 223 struct inode *dir,
224 struct dentry *dentry, 224 struct dentry *dentry,
225 struct nameidata *nd) 225 unsigned int flags)
226{ 226{
227 struct xfs_inode *ip; 227 struct xfs_inode *ip;
228 struct xfs_name xname; 228 struct xfs_name xname;
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 17ee20dba86c..7a71709b7fa7 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1666,7 +1666,7 @@ struct file_operations {
1666}; 1666};
1667 1667
1668struct inode_operations { 1668struct inode_operations {
1669 struct dentry * (*lookup) (struct inode *,struct dentry *, struct nameidata *); 1669 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
1670 void * (*follow_link) (struct dentry *, struct nameidata *); 1670 void * (*follow_link) (struct dentry *, struct nameidata *);
1671 int (*permission) (struct inode *, int); 1671 int (*permission) (struct inode *, int);
1672 struct posix_acl * (*get_acl)(struct inode *, int); 1672 struct posix_acl * (*get_acl)(struct inode *, int);
@@ -2571,7 +2571,7 @@ extern int simple_write_end(struct file *file, struct address_space *mapping,
2571 loff_t pos, unsigned len, unsigned copied, 2571 loff_t pos, unsigned len, unsigned copied,
2572 struct page *page, void *fsdata); 2572 struct page *page, void *fsdata);
2573 2573
2574extern struct dentry *simple_lookup(struct inode *, struct dentry *, struct nameidata *); 2574extern struct dentry *simple_lookup(struct inode *, struct dentry *, unsigned int flags);
2575extern ssize_t generic_read_dir(struct file *, char __user *, size_t, loff_t *); 2575extern ssize_t generic_read_dir(struct file *, char __user *, size_t, loff_t *);
2576extern const struct file_operations simple_dir_operations; 2576extern const struct file_operations simple_dir_operations;
2577extern const struct inode_operations simple_dir_inode_operations; 2577extern const struct inode_operations simple_dir_inode_operations;
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index b303dfc7dce0..0cd1314acdaf 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -822,7 +822,7 @@ EXPORT_SYMBOL_GPL(cgroup_unlock);
822 */ 822 */
823 823
824static int cgroup_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); 824static int cgroup_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode);
825static struct dentry *cgroup_lookup(struct inode *, struct dentry *, struct nameidata *); 825static struct dentry *cgroup_lookup(struct inode *, struct dentry *, unsigned int);
826static int cgroup_rmdir(struct inode *unused_dir, struct dentry *dentry); 826static int cgroup_rmdir(struct inode *unused_dir, struct dentry *dentry);
827static int cgroup_populate_dir(struct cgroup *cgrp); 827static int cgroup_populate_dir(struct cgroup *cgrp);
828static const struct inode_operations cgroup_dir_inode_operations; 828static const struct inode_operations cgroup_dir_inode_operations;
@@ -2570,7 +2570,7 @@ static const struct inode_operations cgroup_dir_inode_operations = {
2570 .rename = cgroup_rename, 2570 .rename = cgroup_rename,
2571}; 2571};
2572 2572
2573static struct dentry *cgroup_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) 2573static struct dentry *cgroup_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
2574{ 2574{
2575 if (dentry->d_name.len > NAME_MAX) 2575 if (dentry->d_name.len > NAME_MAX)
2576 return ERR_PTR(-ENAMETOOLONG); 2576 return ERR_PTR(-ENAMETOOLONG);