[GIT PULL 09/17 for v6.19] vfs headers

Christian Brauner posted 17 patches 3 days, 5 hours ago
Only 6 patches received!
[GIT PULL 09/17 for v6.19] vfs headers
Posted by Christian Brauner 3 days, 5 hours ago
Hey Linus,

/* Summary */
This contains initial work to start splitting up fs.h.

Begin the long-overdue work of splitting up the monolithic fs.h header.
The header has grown to over 3000 lines and includes types and functions
for many different subsystems, making it difficult to navigate and
causing excessive compilation dependencies.

This series introduces new focused headers for superblock-related code:

- Rename fs_types.h to fs_dirent.h to better reflect its actual content
  (directory entry types)

- Add fs/super_types.h containing superblock type definitions

- Add fs/super.h containing superblock function declarations

This is the first step in a longer effort to modularize the VFS headers.

Cleanups

- Inode Field Layout Optimization (Mateusz Guzik)

- Move inode fields used during fast path lookup closer together to improve
  cache locality during path resolution.

- current_umask() Optimization (Mateusz Guzik)

- Inline current_umask() and move it to fs_struct.h. This improves
  performance by avoiding function call overhead for this frequently-used
  function, and places it in a more appropriate header since it operates
  on fs_struct.

/* Testing */

gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)

No build failures or warnings were observed.

/* Conflicts */

Merge conflicts with mainline
=============================

diff --cc include/linux/fs.h
index 1011b82977fc,64dc2e2c281f..000000000000
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@@ -2880,11 -2335,8 +2395,9 @@@ static inline void super_set_sysfs_name
        va_end(args);
  }

- extern int current_umask(void);
-
  extern void ihold(struct inode * inode);
  extern void iput(struct inode *);
 +void iput_not_last(struct inode *);
  int inode_update_timestamps(struct inode *inode, int flags);
  int generic_update_time(struct inode *, int);

@@@ -3481,11 -2929,8 +2988,8 @@@ static inline void remove_inode_hash(st
  }

  extern void inode_sb_list_add(struct inode *inode);
 -extern void inode_add_lru(struct inode *inode);
 +extern void inode_lru_list_add(struct inode *inode);

- int sb_set_blocksize(struct super_block *sb, int size);
- int __must_check sb_min_blocksize(struct super_block *sb, int size);
-
  int generic_file_mmap(struct file *, struct vm_area_struct *);
  int generic_file_mmap_prepare(struct vm_area_desc *desc);
  int generic_file_readonly_mmap(struct file *, struct vm_area_struct *);
diff --git a/include/linux/fs/super.h b/include/linux/fs/super.h
index c0d22b12c1c9..69c11b28ed65 100644
--- a/include/linux/fs/super.h
+++ b/include/linux/fs/super.h
@@ -223,7 +223,7 @@ static inline bool sb_has_encoding(const struct super_block *sb)
 }

 int sb_set_blocksize(struct super_block *sb, int size);
-int sb_min_blocksize(struct super_block *sb, int size);
+int __must_check sb_min_blocksize(struct super_block *sb, int size);

 int freeze_super(struct super_block *super, enum freeze_holder who,
                 const void *freeze_owner);
diff --git a/include/linux/fs/super_types.h b/include/linux/fs/super_types.h
index 45cfd45b9fe0..6bd3009e09b3 100644
--- a/include/linux/fs/super_types.h
+++ b/include/linux/fs/super_types.h
@@ -267,6 +267,7 @@ struct super_block {

        spinlock_t                              s_inode_wblist_lock;
        struct list_head                        s_inodes_wb;    /* writeback inodes */
+       long                                    s_min_writeback_pages;
 } __randomize_layout;

 /*

Merge conflicts with other trees
================================

The following changes since commit dcb6fa37fd7bc9c3d2b066329b0d27dedf8becaa:

  Linux 6.18-rc3 (2025-10-26 15:59:49 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.fs_header

for you to fetch changes up to dca3aa666fbd71118905d88bb1c353881002b647:

  fs: move inode fields used during fast path lookup closer together (2025-11-11 10:49:54 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.fs_header tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.fs_header

----------------------------------------------------------------
Christian Brauner (4):
      fs: rename fs_types.h to fs_dirent.h
      fs: add fs/super_types.h header
      fs: add fs/super.h header
      Merge patch series "fs: start to split up fs.h"

Mateusz Guzik (2):
      fs: inline current_umask() and move it to fs_struct.h
      fs: move inode fields used during fast path lookup closer together

 fs/9p/acl.c                               |   1 +
 fs/Makefile                               |   2 +-
 fs/btrfs/inode.c                          |   1 +
 fs/f2fs/acl.c                             |   1 +
 fs/fat/inode.c                            |   1 +
 fs/{fs_types.c => fs_dirent.c}            |   2 +-
 fs/fs_struct.c                            |   6 -
 fs/hfsplus/options.c                      |   1 +
 fs/hpfs/super.c                           |   1 +
 fs/nilfs2/nilfs.h                         |   1 +
 fs/ntfs3/super.c                          |   1 +
 fs/ocfs2/acl.c                            |   1 +
 fs/omfs/inode.c                           |   1 +
 fs/smb/client/file.c                      |   1 +
 fs/smb/client/inode.c                     |   1 +
 fs/smb/client/smb1ops.c                   |   1 +
 include/linux/fs.h                        | 533 +-----------------------------
 include/linux/fs/super.h                  | 233 +++++++++++++
 include/linux/fs/super_types.h            | 335 +++++++++++++++++++
 include/linux/{fs_types.h => fs_dirent.h} |  11 +-
 include/linux/fs_struct.h                 |   6 +
 include/linux/namei.h                     |   1 +
 22 files changed, 600 insertions(+), 542 deletions(-)
 rename fs/{fs_types.c => fs_dirent.c} (98%)
 create mode 100644 include/linux/fs/super.h
 create mode 100644 include/linux/fs/super_types.h
 rename include/linux/{fs_types.h => fs_dirent.h} (92%)