]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Merge tag 'vfs-7.2-rc1.directory.delegations' of git://git.kernel.org/pub/scm/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 14 Jun 2026 21:20:44 +0000 (02:50 +0530)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 14 Jun 2026 21:20:44 +0000 (02:50 +0530)
Pull vfs directory delegations from Christian Brauner:
 "This contains the VFS prerequisites for supporting directory
  delegations in nfsd via CB_NOTIFY callbacks.

  The filelock core gains support for ignoring delegation breaks for
  directory change events together with an inode_lease_ignore_mask()
  helper, and fsnotify gains fsnotify_modify_mark_mask() and a
  FSNOTIFY_EVENT_RENAME data type.

  With this in place nfsd can request delegations on directories and set
  up inotify watches to trigger sending CB_NOTIFY events to clients
  instead of having every directory change break the delegation.

  New tracepoints are added to fsnotify() and to the start of
  break_lease(), and trace_break_lease_block() is passed the currently
  blocking lease instead of the new one.

  A follow-up fix moves the LEASE_BREAK_* flags out of
  #ifdef CONFIG_FILE_LOCKING to fix the build for CONFIG_FILE_LOCKING=n
  configurations"

* tag 'vfs-7.2-rc1.directory.delegations' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs:
  filelock: move LEASE_BREAK_* flags out of #ifdef CONFIG_FILE_LOCKING
  fsnotify: add FSNOTIFY_EVENT_RENAME data type
  fsnotify: add fsnotify_modify_mark_mask()
  fsnotify: new tracepoint in fsnotify()
  filelock: add an inode_lease_ignore_mask helper
  filelock: add a tracepoint to start of break_lease()
  filelock: add support for ignoring deleg breaks for dir change events
  filelock: pass current blocking lease to trace_break_lease_block() rather than "new_fl"

1  2 
fs/namei.c
fs/notify/fsnotify.c
fs/notify/mark.c
include/linux/fsnotify_backend.h
include/trace/events/filelock.h

diff --cc fs/namei.c
Simple merge
Simple merge
Simple merge
index e5cde39d6e85d6c2310283cea7073a8bfe3851e7,f8c8fb7f34ae0096ed24e3341d02e191eee35c06..618eed4d6d724ab85e5f01d6ecc2f7de8c676c87
@@@ -915,9 -935,9 +935,10 @@@ extern void fsnotify_clear_marks_by_gro
                                          unsigned int obj_type);
  extern void fsnotify_get_mark(struct fsnotify_mark *mark);
  extern void fsnotify_put_mark(struct fsnotify_mark *mark);
 +struct fsnotify_mark *fsnotify_next_mark(struct fsnotify_mark *mark);
  extern void fsnotify_finish_user_wait(struct fsnotify_iter_info *iter_info);
  extern bool fsnotify_prepare_user_wait(struct fsnotify_iter_info *iter_info);
+ extern void fsnotify_modify_mark_mask(struct fsnotify_mark *mark, u32 set, u32 clear);
  
  static inline void fsnotify_init_event(struct fsnotify_event *event)
  {
Simple merge