Files
Linus Torvalds 96a377ba00 Merge tag 'vfs-7.4-rc1.lookup' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
Pull path lookup updates from Christian Brauner:
 "This prepares for Neil's changes to directory locking. The goal is for
  the VFS to lock the dentry and not the parent directory and to push
  the i_rwsem parent locking down into the filesystems where it can be
  kept, removed or adjusted as each filesystem sees fit.

  The next step in that is to swap the lock order of d_alloc_parallel()
  and i_rwsem so code can wait on i_rwsem while holding an in-lookup
  dentry. Two things have to change before that can happen. Nobody may
  call d_alloc_parallel() while holding i_rwsem, and nobody may d_drop()
  a dentry while it is being worked on since that effectively unlocks an
  in-lookup dentry and lets another one be allocated too early.

  So d_splice_alias() learns to handle hashed dentries in addition to
  unhashed and in-lookup ones, which is what ->atomic_open() needs and
  removes the reason filesystems d_drop() first. d_alloc_trylock() is a
  non-blocking d_alloc_parallel() for the filesystems that prime the
  dcache from readdir, smb, nfs, fuse and ceph, where waiting for a
  concurrent lookup is pointless. d_duplicate() creates an in-lookup
  dentry with the name of an existing one for silly-rename and
  whiteouts. LOOKUP_SHARED tells ->lookup() how the parent is locked so
  it can drop and retake it. DCACHE_PAR_LOOKUP is tracked by lockdep now
  with a per filesystem type key, and overlayfs gets its own class since
  it stacks over itself. And a d_flags bit is reserved for filesystem
  private use.

  Also included is Mateusz's fix for the spurious dentry reference cycle
  on open. __legitimize_path() grabs a reference, do_dentry_open() grabs
  another and terminate_walk() drops the first. do_dentry_open()
  consumes the held reference now. Opening the same file read-only on a
  20-core VM goes from 4,043,375 to 5,629,378 ops/s in will-it-scale"

* tag 'vfs-7.4-rc1.lookup' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs:
  VFS: d_duplicate: repair comments to avoid kernel-doc warnings
  ovl: provide private lockdep class for dentry->dep_map
  VFS: rename lookup_map to dep_map
  VFS: per-fs-type lockdep key for dentry in-lookup locking
  VFS: reserve a d_flags bit for fs-specific usage
  VFS: add lockdep monitoring of DCACHE_PAR_LOOKUP lock.
  VFS: Add LOOKUP_SHARED flag.
  VFS: add d_duplicate()
  VFS: introduce d_alloc_trylock()
  VFS: enhance d_splice_alias() to handle hashed dentries
  VFS: fix various typos in documentation for start_creating start_removing etc
  fs: avoid spurious dentry ref/unref cycle on open
2026-10-19 18:59:41 -10:00
..
2026-09-23 09:19:49 +02:00