Commit db74a7d02ae2 for kernel

commit db74a7d02ae244ec0552d18f51054f9ae0d921ad
Merge: 4664fb427c8f 4be9e04ebf75
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Dec 1 15:34:41 2025 -0800

    Merge tag 'vfs-6.19-rc1.directory.delegations' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs

    Pull directory delegations update from Christian Brauner:
     "This contains the work for recall-only directory delegations for
      knfsd.

      Add support for simple, recallable-only directory delegations. This
      was decided at the fall NFS Bakeathon where the NFS client and server
      maintainers discussed how to merge directory delegation support.

      The approach starts with recallable-only delegations for several reasons:

       1. RFC8881 has gaps that are being addressed in RFC8881bis. In
          particular, it requires directory position information for
          CB_NOTIFY callbacks, which is difficult to implement properly
          under Linux. The spec is being extended to allow that information
          to be omitted.

       2. Client-side support for CB_NOTIFY still lags. The client side
          involves heuristics about when to request a delegation.

       3. Early indication shows simple, recallable-only delegations can
          help performance. Anna Schumaker mentioned seeing a multi-minute
          speedup in xfstests runs with them enabled.

      With these changes, userspace can also request a read lease on a
      directory that will be recalled on conflicting accesses. This may be
      useful for applications like Samba. Users can disable leases
      altogether via the fs.leases-enable sysctl if needed.

      VFS changes:

       - Dedicated Type for Delegations

         Introduce struct delegated_inode to track inodes that may have
         delegations that need to be broken. This replaces the previous
         approach of passing raw inode pointers through the delegation
         breaking code paths, providing better type safety and clearer
         semantics for the delegation machinery.

       - Break parent directory delegations in open(..., O_CREAT) codepath

       - Allow mkdir to wait for delegation break on parent

       - Allow rmdir to wait for delegation break on parent

       - Add try_break_deleg calls for parents to vfs_link(), vfs_rename(),
         and vfs_unlink()

       - Make vfs_create(), vfs_mknod(), and vfs_symlink() break delegations
         on parent directory

       - Clean up argument list for vfs_create()

       - Expose delegation support to userland

      Filelock changes:

       - Make lease_alloc() take a flags argument

       - Rework the __break_lease API to use flags

       - Add struct delegated_inode

       - Push the S_ISREG check down to ->setlease handlers

       - Lift the ban on directory leases in generic_setlease

      NFSD changes:

       - Allow filecache to hold S_IFDIR files

       - Allow DELEGRETURN on directories

       - Wire up GET_DIR_DELEGATION handling

      Fixes:

       - Fix kernel-doc warnings in __fcntl_getlease

       - Add needed headers for new struct delegation definition"

    * tag 'vfs-6.19-rc1.directory.delegations' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs:
      vfs: add needed headers for new struct delegation definition
      filelock: __fcntl_getlease: fix kernel-doc warnings
      vfs: expose delegation support to userland
      nfsd: wire up GET_DIR_DELEGATION handling
      nfsd: allow DELEGRETURN on directories
      nfsd: allow filecache to hold S_IFDIR files
      filelock: lift the ban on directory leases in generic_setlease
      vfs: make vfs_symlink break delegations on parent dir
      vfs: make vfs_mknod break delegations on parent directory
      vfs: make vfs_create break delegations on parent directory
      vfs: clean up argument list for vfs_create()
      vfs: break parent dir delegations in open(..., O_CREAT) codepath
      vfs: allow rmdir to wait for delegation break on parent
      vfs: allow mkdir to wait for delegation break on parent
      vfs: add try_break_deleg calls for parents to vfs_{link,rename,unlink}
      filelock: push the S_ISREG check down to ->setlease handlers
      filelock: add struct delegated_inode
      filelock: rework the __break_lease API to use flags
      filelock: make lease_alloc() take a flags argument