Pull vfs lookup updates from Christian Brauner: "This refactors lookup_open() and adds vfs_lookup_open() for nfsd. mnt_want_write() and parent locking are moved into lookup_open() itself. audit_inode_child() is also now called in lookup_open() on failure. That is the calling convention in vfs_create() and vfs_mkdir(), but lookup_open() made no such call when atomic_open() should have created a file and did not. And neither did the regular ->create() path fwiw. This also contains work to remove the unneeded excl argument from the ->create() inode op" * tag 'vfs-7.3-rc1.lookup' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: fs/namei.c: fix coding style in atomic_open() and lookup_open() fs/namei.c: fix kerneldoc of atomic_open() and vfs_lookup_open() fs/namei.c: update stale comments in lookup_open() Remove excl arg to ->create inode_operation fs/namei.c: update kerneldoc of atomic_open() vfs: call audit_inode_child() in lookup_open() on failure vfs: move create error && negative dentry case in lookup_open() up VFS: add vfs_lookup_open() for nfsd VFS: move delegated_inode retry loop into lookup_open() VFS: move mnt_want_write() and locking into lookup_open()
Showing the changes to include (2 of 54 files). Show all
Unified · Split
| @@ -2002,7 +2002,7 @@ struct inode_operations { · 2001 unmodified lines | |||
| 2002 | int (*readlink) (struct dentry *, char __user *,int); | 2002 | int (*readlink) (struct dentry *, char __user *,int); |
| 2003 | 2003 | ||
| 2004 | int (*create) (struct mnt_idmap *, struct inode *,struct dentry *, | 2004 | int (*create) (struct mnt_idmap *, struct inode *,struct dentry *, |
| 2005 | umode_t, bool); | 2005 | umode_t); |
| 2006 | int (*link) (struct dentry *,struct inode *,struct dentry *); | 2006 | int (*link) (struct dentry *,struct inode *,struct dentry *); |
| 2007 | int (*unlink) (struct inode *,struct dentry *); | 2007 | int (*unlink) (struct inode *,struct dentry *); |
| 2008 | int (*symlink) (struct mnt_idmap *, struct inode *,struct dentry *, | 2008 | int (*symlink) (struct mnt_idmap *, struct inode *,struct dentry *, |
| @@ -97,6 +97,9 @@ struct dentry *start_creating_dentry(struct dentry *parent, · 96 unmodified lines | |||
| 97 | struct dentry *start_removing_dentry(struct dentry *parent, | 97 | struct dentry *start_removing_dentry(struct dentry *parent, |
| 98 | struct dentry *child); | 98 | struct dentry *child); |
| 99 | 99 | ||
| 100 | struct file *vfs_lookup_open(struct path *parent, struct qstr *last, | ||
| 101 | int open_flag, umode_t mode); | ||
| 102 | |||
| 100 | /* end_creating - finish action started with start_creating | 103 | /* end_creating - finish action started with start_creating |
| 101 | * @child: dentry returned by start_creating() or vfs_mkdir() | 104 | * @child: dentry returned by start_creating() or vfs_mkdir() |
| 102 | * | 105 | * |