]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Merge tag 'vfs-7.3-rc1.lookup' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 17 Aug 2026 19:03:34 +0000 (12:03 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 17 Aug 2026 19:03:34 +0000 (12:03 -0700)
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()

12 files changed:
1  2 
fs/afs/dir.c
fs/btrfs/inode.c
fs/ceph/dir.c
fs/fat/namei_msdos.c
fs/namei.c
fs/nfs/dir.c
fs/nfs/internal.h
fs/ntfs/namei.c
fs/smb/client/cifsfs.h
include/linux/fs.h
ipc/mqueue.c
mm/shmem.c

diff --cc fs/afs/dir.c
index 6df56fe9163fd72eb2ba901b6bdedbd80655983c,66cc3332ef319a8b23e7d578dab3b5b89acc75cd..6401fbdd10aac407b80ea967371332727cdd0fe3
@@@ -28,13 -28,11 +28,13 @@@ static int afs_d_revalidate(struct inod
  static int afs_d_delete(const struct dentry *dentry);
  static void afs_d_iput(struct dentry *dentry, struct inode *inode);
  static bool afs_lookup_one_filldir(struct dir_context *ctx, const char *name, int nlen,
 -                                loff_t fpos, u64 ino, unsigned dtype);
 +                                 u64 ino, u32 uniquifier);
 +#define AFS_LOOKUP_ONE ((filldir_t)0x123UL)
  static bool afs_lookup_filldir(struct dir_context *ctx, const char *name, int nlen,
 -                            loff_t fpos, u64 ino, unsigned dtype);
 +                             u64 ino, u32 uniquifier);
 +#define AFS_LOOKUP ((filldir_t)0x137UL)
  static int afs_create(struct mnt_idmap *idmap, struct inode *dir,
-                     struct dentry *dentry, umode_t mode, bool excl);
+                     struct dentry *dentry, umode_t mode);
  static struct dentry *afs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
                                struct dentry *dentry, umode_t mode);
  static int afs_rmdir(struct inode *dir, struct dentry *dentry);
Simple merge
diff --cc fs/ceph/dir.c
Simple merge
Simple merge
diff --cc fs/namei.c
Simple merge
diff --cc fs/nfs/dir.c
Simple merge
Simple merge
diff --cc fs/ntfs/namei.c
Simple merge
Simple merge
Simple merge
diff --cc ipc/mqueue.c
Simple merge
diff --cc mm/shmem.c
Simple merge