Merge tag 'pull-tmpfile' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 11 Oct 2022 02:45:17 +0000 (19:45 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 11 Oct 2022 02:45:17 +0000 (19:45 -0700)
Pull vfs tmpfile updates from Al Viro:
 "Miklos' ->tmpfile() signature change; pass an unopened struct file to
  it, let it open the damn thing. Allows to add tmpfile support to FUSE"

* tag 'pull-tmpfile' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  fuse: implement ->tmpfile()
  vfs: open inside ->tmpfile()
  vfs: move open right after ->tmpfile()
  vfs: make vfs_tmpfile() static
  ovl: use vfs_tmpfile_open() helper
  cachefiles: use vfs_tmpfile_open() helper
  cachefiles: only pass inode to *mark_inode_inuse() helpers
  cachefiles: tmpfile error handling cleanup
  hugetlbfs: cleanup mknod and tmpfile
  vfs: add vfs_tmpfile_open() helper

14 files changed:
1  2 
Documentation/filesystems/porting.rst
Documentation/filesystems/vfs.rst
fs/btrfs/inode.c
fs/dcache.c
fs/ext4/namei.c
fs/hugetlbfs/inode.c
fs/namei.c
fs/overlayfs/copy_up.c
fs/overlayfs/overlayfs.h
fs/overlayfs/super.c
fs/xfs/xfs_iops.c
include/linux/dcache.h
include/linux/fs.h
mm/shmem.c

@@@ -925,11 -925,10 +925,21 @@@ should be done by looking at FMODE_LSEE
  
  ---
  
 +*mandatory*
 +
 +filldir_t (readdir callbacks) calling conventions have changed.  Instead of
 +returning 0 or -E... it returns bool now.  false means "no more" (as -E... used
 +to) and true - "keep going" (as 0 in old calling conventions).  Rationale:
 +callers never looked at specific -E... values anyway.  ->iterate() and
 +->iterate_shared() instance require no changes at all, all filldir_t ones in
 +the tree converted.
++
++---
++
+ **mandatory**
+ Calling conventions for ->tmpfile() have changed.  It now takes a struct
+ file pointer instead of struct dentry pointer.  d_tmpfile() is similarly
+ changed to simplify callers.  The passed file is in a non-open state and on
+ success must be opened before returning (e.g. by calling
+ finish_open_simple()).
Simple merge
Simple merge
diff --cc fs/dcache.c
Simple merge
diff --cc fs/ext4/namei.c
Simple merge
Simple merge
diff --cc fs/namei.c
Simple merge
Simple merge
Simple merge
@@@ -1366,10 -1354,11 +1367,11 @@@ static int ovl_create_volatile_dirty(st
  }
  
  static int ovl_make_workdir(struct super_block *sb, struct ovl_fs *ofs,
 -                          struct path *workpath)
 +                          const struct path *workpath)
  {
        struct vfsmount *mnt = ovl_upper_mnt(ofs);
-       struct dentry *temp, *workdir;
+       struct dentry *workdir;
+       struct file *tmpfile;
        bool rename_whiteout;
        bool d_type;
        int fh_type;
Simple merge
Simple merge
Simple merge
diff --cc mm/shmem.c
Simple merge