]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
Merge tag 'vfs-6.10.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 13 May 2024 18:40:06 +0000 (11:40 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 13 May 2024 18:40:06 +0000 (11:40 -0700)
Pull misc vfs updates from Christian Brauner:
 "This contains the usual miscellaneous features, cleanups, and fixes
  for vfs and individual fses.

  Features:

   - Free up FMODE_* bits. I've freed up bits 6, 7, 8, and 24. That
     means we now have six free FMODE_* bits in total (but bit #6
     already got used for FMODE_WRITE_RESTRICTED)

   - Add FOP_HUGE_PAGES flag (follow-up to FMODE_* cleanup)

   - Add fd_raw cleanup class so we can make use of automatic cleanup
     provided by CLASS(fd_raw, f)(fd) for O_PATH fds as well

   - Optimize seq_puts()

   - Simplify __seq_puts()

   - Add new anon_inode_getfile_fmode() api to allow specifying f_mode
     instead of open-coding it in multiple places

   - Annotate struct file_handle with __counted_by() and use
     struct_size()

   - Warn in get_file() whether f_count resurrection from zero is
     attempted (epoll/drm discussion)

   - Folio-sophize aio

   - Export the subvolume id in statx() for both btrfs and bcachefs

   - Relax linkat(AT_EMPTY_PATH) requirements

   - Add F_DUPFD_QUERY fcntl() allowing to compare two file descriptors
     for dup*() equality replacing kcmp()

  Cleanups:

   - Compile out swapfile inode checks when swap isn't enabled

   - Use (1 << n) notation for FMODE_* bitshifts for clarity

   - Remove redundant variable assignment in fs/direct-io

   - Cleanup uses of strncpy in orangefs

   - Speed up and cleanup writeback

   - Move fsparam_string_empty() helper into header since it's currently
     open-coded in multiple places

   - Add kernel-doc comments to proc_create_net_data_write()

   - Don't needlessly read dentry->d_flags twice

  Fixes:

   - Fix out-of-range warning in nilfs2

   - Fix ecryptfs overflow due to wrong encryption packet size
     calculation

   - Fix overly long line in xfs file_operations (follow-up to FMODE_*
     cleanup)

   - Don't raise FOP_BUFFER_{R,W}ASYNC for directories in xfs (follow-up
     to FMODE_* cleanup)

   - Don't call xfs_file_open from xfs_dir_open (follow-up to FMODE_*
     cleanup)

   - Fix stable offset api to prevent endless loops

   - Fix afs file server rotations

   - Prevent xattr node from overflowing the eraseblock in jffs2

   - Move fdinfo PTRACE_MODE_READ procfs check into the .permission()
     operation instead of .open() operation since this caused userspace
     regressions"

* tag 'vfs-6.10.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: (39 commits)
  afs: Fix fileserver rotation getting stuck
  selftests: add F_DUPDFD_QUERY selftests
  fcntl: add F_DUPFD_QUERY fcntl()
  file: add fd_raw cleanup class
  fs: WARN when f_count resurrection is attempted
  seq_file: Simplify __seq_puts()
  seq_file: Optimize seq_puts()
  proc: Move fdinfo PTRACE_MODE_READ check into the inode .permission operation
  fs: Create anon_inode_getfile_fmode()
  xfs: don't call xfs_file_open from xfs_dir_open
  xfs: drop fop_flags for directories
  xfs: fix overly long line in the file_operations
  shmem: Fix shmem_rename2()
  libfs: Add simple_offset_rename() API
  libfs: Fix simple_offset_rename_exchange()
  jffs2: prevent xattr node from overflowing the eraseblock
  vfs, swap: compile out IS_SWAPFILE() on swapless configs
  vfs: relax linkat() AT_EMPTY_PATH - aka flink() - requirements
  fs/direct-io: remove redundant assignment to variable retval
  fs/dcache: Re-use value stored to dentry->d_flags instead of re-reading
  ...

1  2 
block/bdev.c
fs/aio.c
fs/bcachefs/fs.c
fs/btrfs/inode.c
fs/ext4/super.c
fs/namei.c
include/linux/fs.h
io_uring/io_uring.c
io_uring/rw.c
mm/shmem.c

diff --cc block/bdev.c
index da2a167a4d08b66fe26c99826a9e84277f76f0e3,1322dfe32c5db393d0ce9241d6f29a3469db0424..2af3dca56f3db67692b3ab4d63b5cb6544e2a819
@@@ -912,11 -904,9 +912,11 @@@ int bdev_open(struct block_device *bdev
                disk_unblock_events(disk);
  
        bdev_file->f_flags |= O_LARGEFILE;
-       bdev_file->f_mode |= FMODE_BUF_RASYNC | FMODE_CAN_ODIRECT;
+       bdev_file->f_mode |= FMODE_CAN_ODIRECT;
        if (bdev_nowait(bdev))
                bdev_file->f_mode |= FMODE_NOWAIT;
 +      if (mode & BLK_OPEN_RESTRICT_WRITES)
 +              bdev_file->f_mode |= FMODE_WRITE_RESTRICTED;
        bdev_file->f_mapping = bdev->bd_inode->i_mapping;
        bdev_file->f_wb_err = filemap_sample_wb_err(bdev_file->f_mapping);
        bdev_file->private_data = holder;
diff --cc fs/aio.c
Simple merge
Simple merge
Simple merge
diff --cc fs/ext4/super.c
Simple merge
diff --cc fs/namei.c
Simple merge
index 8dfd53b52744a4dfffb8ccb350364972658f00eb,5b351c1e6f58855bbe9eaebfca41f1cc8035ab15..de946a1fd845abe45c403791ae3c823720d9ca13
@@@ -110,23 -110,24 +110,26 @@@ typedef int (dio_iodone_t)(struct kioc
   */
  
  /* file is open for reading */
- #define FMODE_READ            ((__force fmode_t)0x1)
+ #define FMODE_READ            ((__force fmode_t)(1 << 0))
  /* file is open for writing */
- #define FMODE_WRITE           ((__force fmode_t)0x2)
+ #define FMODE_WRITE           ((__force fmode_t)(1 << 1))
  /* file is seekable */
- #define FMODE_LSEEK           ((__force fmode_t)0x4)
+ #define FMODE_LSEEK           ((__force fmode_t)(1 << 2))
  /* file can be accessed using pread */
- #define FMODE_PREAD           ((__force fmode_t)0x8)
+ #define FMODE_PREAD           ((__force fmode_t)(1 << 3))
  /* file can be accessed using pwrite */
- #define FMODE_PWRITE          ((__force fmode_t)0x10)
+ #define FMODE_PWRITE          ((__force fmode_t)(1 << 4))
  /* File is opened for execution with sys_execve / sys_uselib */
- #define FMODE_EXEC            ((__force fmode_t)0x20)
+ #define FMODE_EXEC            ((__force fmode_t)(1 << 5))
 +/* File writes are restricted (block device specific) */
- #define FMODE_WRITE_RESTRICTED  ((__force fmode_t)0x40)
++#define FMODE_WRITE_RESTRICTED        ((__force fmode_t)(1 << 6))
 -/* FMODE_* bits 6 to 8 */
++/* FMODE_* bits 7 to 8 */
  /* 32bit hashes as llseek() offset (for directories) */
- #define FMODE_32BITHASH         ((__force fmode_t)0x200)
+ #define FMODE_32BITHASH         ((__force fmode_t)(1 << 9))
  /* 64bit hashes as llseek() offset (for directories) */
- #define FMODE_64BITHASH         ((__force fmode_t)0x400)
+ #define FMODE_64BITHASH         ((__force fmode_t)(1 << 10))
  
  /*
   * Don't update ctime and mtime.
Simple merge
diff --cc io_uring/rw.c
Simple merge
diff --cc mm/shmem.c
Simple merge