From: Alexey Dobriyan <adobriyan@gmail.com>
To: viro@zeniv.linux.org.uk
Cc: linux-fsdevel@vger.kernel.org
Subject: [PATCH] fs: extract include/linux/fs_type.h
Date: Thu, 28 Dec 2023 14:46:10 +0300 [thread overview]
Message-ID: <1c70c171-a0e4-457e-af34-229d5a56951e@p183> (raw)
struct file_system_type is one of the things which could be extracted
out of include/linux/fs.h easily.
Drop some useless forward declarations and externs too.
I remember sched.h was bloated but
#include <linux/fs.h>
on x86_64 allmodconfig somehow includes x86 segment descriptor stuff,
MSR, something about irq numbers, all low level page stuff, memory
zones, cpufreq, and task_struct definition with all sched.h the pieces.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---
Documentation/filesystems/vfs.rst | 6 +--
arch/powerpc/platforms/cell/spufs/inode.c | 1
arch/s390/hypfs/inode.c | 2 -
arch/um/drivers/mconsole_kern.c | 1
arch/x86/kernel/cpu/resctrl/rdtgroup.c | 1
block/bdev.c | 1
drivers/android/binderfs.c | 1
drivers/base/devtmpfs.c | 1
drivers/dax/super.c | 1
drivers/dma-buf/dma-buf.c | 1
drivers/gpu/drm/drm_drv.c | 1
drivers/gpu/drm/i915/gem/i915_gemfs.c | 1
drivers/infiniband/hw/qib/qib_fs.c | 1
drivers/misc/cxl/api.c | 1
drivers/misc/ibmasm/ibmasmfs.c | 1
drivers/scsi/cxlflash/ocxl_hw.c | 1
drivers/usb/gadget/function/f_fs.c | 1
drivers/usb/gadget/legacy/inode.c | 1
drivers/xen/xenfs/super.c | 1
fs/9p/v9fs.c | 1
fs/9p/vfs_super.c | 1
fs/adfs/super.c | 1
fs/affs/super.c | 1
fs/afs/internal.h | 1
fs/afs/super.c | 1
fs/aio.c | 1
fs/anon_inodes.c | 1
fs/autofs/autofs_i.h | 1
fs/bcachefs/fs.c | 1
fs/befs/linuxvfs.c | 1
fs/bfs/inode.c | 1
fs/binfmt_misc.c | 3 -
fs/btrfs/super.c | 1
fs/btrfs/tests/btrfs-tests.c | 1
fs/ceph/super.c | 1
fs/coda/inode.c | 1
fs/configfs/mount.c | 1
fs/cramfs/inode.c | 1
fs/dcache.c | 1
fs/debugfs/inode.c | 1
fs/devpts/inode.c | 1
fs/ecryptfs/main.c | 1
fs/efivarfs/super.c | 1
fs/efs/super.c | 1
fs/erofs/internal.h | 1
fs/erofs/super.c | 1
fs/exfat/super.c | 1
fs/ext2/super.c | 1
fs/ext4/super.c | 1
fs/f2fs/super.c | 1
fs/fat/namei_msdos.c | 1
fs/fat/namei_vfat.c | 1
fs/filesystems.c | 1
fs/freevxfs/vxfs_super.c | 1
fs/fs_context.c | 1
fs/fsopen.c | 1
fs/fuse/control.c | 1
fs/fuse/inode.c | 1
fs/fuse/virtio_fs.c | 1
fs/gfs2/ops_fstype.c | 1
fs/gfs2/super.h | 1
fs/hfs/super.c | 1
fs/hfsplus/super.c | 1
fs/hostfs/hostfs_kern.c | 1
fs/hpfs/super.c | 1
fs/hugetlbfs/inode.c | 1
fs/inode.c | 1
fs/internal.h | 1
fs/isofs/inode.c | 1
fs/jffs2/super.c | 1
fs/jfs/super.c | 2 -
fs/libfs.c | 1
fs/minix/inode.c | 1
fs/namespace.c | 1
fs/nfs/fs_context.c | 1
fs/nfs/internal.h | 1
fs/nfs/nfs.h | 1
fs/nfsd/nfs4proc.c | 1
fs/nfsd/nfsctl.c | 1
fs/nilfs2/super.c | 1
fs/nsfs.c | 1
fs/ntfs/super.c | 1
fs/ntfs3/super.c | 1
fs/ocfs2/dlmfs/dlmfs.c | 1
fs/ocfs2/super.c | 1
fs/omfs/inode.c | 1
fs/openpromfs/inode.c | 1
fs/orangefs/orangefs-kernel.h | 1
fs/overlayfs/super.c | 1
fs/pipe.c | 1
fs/proc/proc_sysctl.c | 1
fs/proc/root.c | 1
fs/proc_namespace.c | 1
fs/pstore/inode.c | 1
fs/qnx4/inode.c | 1
fs/qnx6/inode.c | 1
fs/ramfs/inode.c | 1
fs/reiserfs/reiserfs.h | 1
fs/reiserfs/super.c | 1
fs/romfs/super.c | 1
fs/smb/client/cifsfs.c | 1
fs/smb/client/misc.c | 1
fs/squashfs/super.c | 1
fs/super.c | 1
fs/sysfs/mount.c | 1
fs/sysv/super.c | 1
fs/tracefs/inode.c | 1
fs/ubifs/super.c | 1
fs/udf/super.c | 1
fs/ufs/super.c | 1
fs/vboxsf/super.c | 1
fs/xfs/xfs_super.c | 1
fs/zonefs/super.c | 1
include/linux/cgroup.h | 1
include/linux/fs.h | 50 +-----------------------------
include/linux/fs_type.h | 50 ++++++++++++++++++++++++++++++
include/linux/init.h | 2 -
include/linux/kernfs.h | 1
include/linux/sb_freeze.h | 17 ++++++++++
init/do_mounts.c | 1
ipc/mqueue.c | 1
kernel/bpf/inode.c | 1
kernel/cgroup/cgroup.c | 1
kernel/resource.c | 1
kernel/trace/trace.c | 1
kernel/usermode_driver.c | 1
lib/test_kmod.c | 1
mm/secretmem.c | 1
mm/shmem.c | 2 -
net/socket.c | 1
net/sunrpc/rpc_pipe.c | 1
security/apparmor/apparmorfs.c | 1
security/apparmor/mount.c | 1
security/inode.c | 1
security/integrity/ima/ima_policy.c | 1
security/selinux/selinuxfs.c | 1
security/smack/smackfs.c | 1
security/tomoyo/mount.c | 1
138 files changed, 202 insertions(+), 61 deletions(-)
--- a/Documentation/filesystems/vfs.rst
+++ b/Documentation/filesystems/vfs.rst
@@ -87,10 +87,10 @@ functions:
.. code-block:: c
- #include <linux/fs.h>
+ #include <linux/fs_type.h>
- extern int register_filesystem(struct file_system_type *);
- extern int unregister_filesystem(struct file_system_type *);
+ int register_filesystem(struct file_system_type *);
+ int unregister_filesystem(struct file_system_type *);
The passed struct file_system_type describes your filesystem. When a
request is made to mount a filesystem onto a directory in your
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -12,6 +12,7 @@
#include <linux/fs.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/fsnotify.h>
#include <linux/backing-dev.h>
#include <linux/init.h>
--- a/arch/s390/hypfs/inode.c
+++ b/arch/s390/hypfs/inode.c
@@ -14,6 +14,7 @@
#include <linux/fs.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/namei.h>
#include <linux/vfs.h>
#include <linux/slab.h>
@@ -41,7 +42,6 @@ struct hypfs_sb_info {
};
static const struct file_operations hypfs_file_ops;
-static struct file_system_type hypfs_type;
static const struct super_operations hypfs_s_ops;
/* start of list of all dentries, which have to be deleted on update */
--- a/arch/um/drivers/mconsole_kern.c
+++ b/arch/um/drivers/mconsole_kern.c
@@ -24,6 +24,7 @@
#include <linux/workqueue.h>
#include <linux/mutex.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/mount.h>
#include <linux/file.h>
#include <linux/uaccess.h>
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -17,6 +17,7 @@
#include <linux/debugfs.h>
#include <linux/fs.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/sysfs.h>
#include <linux/kernfs.h>
#include <linux/seq_buf.h>
--- a/block/bdev.c
+++ b/block/bdev.c
@@ -5,6 +5,7 @@
* Copyright (C) 2016 - 2020 Christoph Hellwig
*/
+#include <linux/fs_type.h>
#include <linux/init.h>
#include <linux/mm.h>
#include <linux/slab.h>
--- a/drivers/android/binderfs.c
+++ b/drivers/android/binderfs.c
@@ -19,6 +19,7 @@
#include <linux/mutex.h>
#include <linux/mount.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/sched.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
--- a/drivers/base/devtmpfs.c
+++ b/drivers/base/devtmpfs.c
@@ -22,6 +22,7 @@
#include <linux/blkdev.h>
#include <linux/namei.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/shmem_fs.h>
#include <linux/ramfs.h>
#include <linux/sched.h>
--- a/drivers/dax/super.c
+++ b/drivers/dax/super.c
@@ -13,6 +13,7 @@
#include <linux/uio.h>
#include <linux/dax.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include "dax-private.h"
/**
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -12,6 +12,7 @@
*/
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/dma-buf.h>
#include <linux/dma-fence.h>
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -28,6 +28,7 @@
#include <linux/debugfs.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/mount.h>
--- a/drivers/gpu/drm/i915/gem/i915_gemfs.c
+++ b/drivers/gpu/drm/i915/gem/i915_gemfs.c
@@ -5,6 +5,7 @@
*/
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/mount.h>
#include "i915_drv.h"
--- a/drivers/infiniband/hw/qib/qib_fs.c
+++ b/drivers/infiniband/hw/qib/qib_fs.c
@@ -34,6 +34,7 @@
#include <linux/fs.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/mount.h>
#include <linux/pagemap.h>
#include <linux/init.h>
--- a/drivers/misc/cxl/api.c
+++ b/drivers/misc/cxl/api.c
@@ -3,6 +3,7 @@
* Copyright 2014 IBM Corp.
*/
+#include <linux/fs_type.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/file.h>
--- a/drivers/misc/ibmasm/ibmasmfs.c
+++ b/drivers/misc/ibmasm/ibmasmfs.c
@@ -61,6 +61,7 @@
#include <linux/fs.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/pagemap.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
--- a/drivers/scsi/cxlflash/ocxl_hw.c
+++ b/drivers/scsi/cxlflash/ocxl_hw.c
@@ -9,6 +9,7 @@
*/
#include <linux/file.h>
+#include <linux/fs_type.h>
#include <linux/idr.h>
#include <linux/module.h>
#include <linux/mount.h>
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -18,6 +18,7 @@
#include <linux/pagemap.h>
#include <linux/export.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/hid.h>
#include <linux/mm.h>
#include <linux/module.h>
--- a/drivers/usb/gadget/legacy/inode.c
+++ b/drivers/usb/gadget/legacy/inode.c
@@ -13,6 +13,7 @@
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/pagemap.h>
#include <linux/uts.h>
#include <linux/wait.h>
--- a/drivers/xen/xenfs/super.c
+++ b/drivers/xen/xenfs/super.c
@@ -15,6 +15,7 @@
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/magic.h>
#include <xen/xen.h>
--- a/fs/9p/v9fs.c
+++ b/fs/9p/v9fs.c
@@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/sched.h>
#include <linux/cred.h>
#include <linux/parser.h>
--- a/fs/9p/vfs_super.c
+++ b/fs/9p/vfs_super.c
@@ -9,6 +9,7 @@
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/file.h>
#include <linux/stat.h>
#include <linux/string.h>
--- a/fs/adfs/super.c
+++ b/fs/adfs/super.c
@@ -4,6 +4,7 @@
*
* Copyright (C) 1997-1999 Russell King
*/
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/parser.h>
--- a/fs/affs/super.c
+++ b/fs/affs/super.c
@@ -11,6 +11,7 @@
* (C) 1991 Linus Torvalds - minix filesystem
*/
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/statfs.h>
--- a/fs/afs/internal.h
+++ b/fs/afs/internal.h
@@ -9,6 +9,7 @@
#include <linux/kernel.h>
#include <linux/ktime.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/filelock.h>
#include <linux/pagemap.h>
#include <linux/rxrpc.h>
--- a/fs/afs/super.c
+++ b/fs/afs/super.c
@@ -22,6 +22,7 @@
#include <linux/fs.h>
#include <linux/pagemap.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/statfs.h>
#include <linux/sched.h>
#include <linux/nsproxy.h>
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -24,6 +24,7 @@
#include <linux/sched/signal.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/file.h>
#include <linux/mm.h>
#include <linux/mman.h>
--- a/fs/anon_inodes.c
+++ b/fs/anon_inodes.c
@@ -15,6 +15,7 @@
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/mount.h>
#include <linux/module.h>
#include <linux/kernel.h>
--- a/fs/autofs/autofs_i.h
+++ b/fs/autofs/autofs_i.h
@@ -27,6 +27,7 @@
#include <linux/magic.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
/* This is the range of ioctl() numbers we claim as ours */
#define AUTOFS_IOC_FIRST AUTOFS_IOC_READY
--- a/fs/bcachefs/fs.c
+++ b/fs/bcachefs/fs.c
@@ -31,6 +31,7 @@
#include <linux/backing-dev.h>
#include <linux/exportfs.h>
#include <linux/fiemap.h>
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/pagemap.h>
#include <linux/posix_acl.h>
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/errno.h>
#include <linux/stat.h>
#include <linux/nls.h>
--- a/fs/bfs/inode.c
+++ b/fs/bfs/inode.c
@@ -12,6 +12,7 @@
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/buffer_head.h>
#include <linux/vfs.h>
#include <linux/writeback.h>
--- a/fs/binfmt_misc.c
+++ b/fs/binfmt_misc.c
@@ -24,6 +24,7 @@
#include <linux/namei.h>
#include <linux/mount.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/syscalls.h>
#include <linux/fs.h>
#include <linux/uaccess.h>
@@ -60,8 +61,6 @@ typedef struct {
refcount_t users; /* sync removal with load_misc_binary() */
} Node;
-static struct file_system_type bm_fs_type;
-
/*
* Max length of the register string. Determined by:
* - 7 delimiters
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -6,6 +6,7 @@
#include <linux/blkdev.h>
#include <linux/module.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/pagemap.h>
#include <linux/highmem.h>
#include <linux/time.h>
--- a/fs/btrfs/tests/btrfs-tests.c
+++ b/fs/btrfs/tests/btrfs-tests.c
@@ -4,6 +4,7 @@
*/
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/mount.h>
#include <linux/pseudo_fs.h>
#include <linux/magic.h>
--- a/fs/ceph/super.c
+++ b/fs/ceph/super.c
@@ -5,6 +5,7 @@
#include <linux/backing-dev.h>
#include <linux/ctype.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/inet.h>
#include <linux/in6.h>
#include <linux/module.h>
--- a/fs/coda/inode.c
+++ b/fs/coda/inode.c
@@ -24,6 +24,7 @@
#include <linux/pid_namespace.h>
#include <linux/uaccess.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/vmalloc.h>
#include <linux/coda.h>
--- a/fs/configfs/mount.c
+++ b/fs/configfs/mount.c
@@ -9,6 +9,7 @@
*/
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/mount.h>
#include <linux/fs_context.h>
--- a/fs/cramfs/inode.c
+++ b/fs/cramfs/inode.c
@@ -25,6 +25,7 @@
#include <linux/mtd/mtd.h>
#include <linux/mtd/super.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/vfs.h>
#include <linux/mutex.h>
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -19,6 +19,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/fscrypt.h>
#include <linux/fsnotify.h>
#include <linux/slab.h>
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -14,6 +14,7 @@
#include <linux/module.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/mount.h>
#include <linux/pagemap.h>
#include <linux/init.h>
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -12,6 +12,7 @@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/sched.h>
#include <linux/namei.h>
#include <linux/slab.h>
--- a/fs/ecryptfs/main.c
+++ b/fs/ecryptfs/main.c
@@ -20,6 +20,7 @@
#include <linux/key.h>
#include <linux/parser.h>
#include <linux/fs_stack.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/magic.h>
#include "ecryptfs_kernel.h"
--- a/fs/efivarfs/super.c
+++ b/fs/efivarfs/super.c
@@ -9,6 +9,7 @@
#include <linux/fs.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/pagemap.h>
#include <linux/ucs2_string.h>
--- a/fs/efs/super.c
+++ b/fs/efs/super.c
@@ -7,6 +7,7 @@
* Portions derived from work (c) 1995,1996 Christian Vogelgsang.
*/
+#include <linux/fs_type.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/exportfs.h>
--- a/fs/erofs/internal.h
+++ b/fs/erofs/internal.h
@@ -8,6 +8,7 @@
#define __EROFS_INTERNAL_H
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/dax.h>
#include <linux/dcache.h>
#include <linux/mm.h>
--- a/fs/erofs/super.c
+++ b/fs/erofs/super.c
@@ -9,6 +9,7 @@
#include <linux/crc32c.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/exportfs.h>
#include "xattr.h"
--- a/fs/exfat/super.c
+++ b/fs/exfat/super.c
@@ -14,6 +14,7 @@
#include <linux/seq_file.h>
#include <linux/blkdev.h>
#include <linux/fs_struct.h>
+#include <linux/fs_type.h>
#include <linux/iversion.h>
#include <linux/nls.h>
#include <linux/buffer_head.h>
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -20,6 +20,7 @@
#include <linux/module.h>
#include <linux/string.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/blkdev.h>
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -20,6 +20,7 @@
#include <linux/module.h>
#include <linux/string.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/time.h>
#include <linux/vmalloc.h>
#include <linux/slab.h>
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -9,6 +9,7 @@
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/sched/mm.h>
#include <linux/statfs.h>
#include <linux/buffer_head.h>
--- a/fs/fat/namei_msdos.c
+++ b/fs/fat/namei_msdos.c
@@ -7,6 +7,7 @@
* Rewritten for constant inumbers 1999 by Al Viro
*/
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/iversion.h>
#include "fat.h"
--- a/fs/fat/namei_vfat.c
+++ b/fs/fat/namei_vfat.c
@@ -16,6 +16,7 @@
* OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
*/
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/ctype.h>
#include <linux/slab.h>
--- a/fs/filesystems.c
+++ b/fs/filesystems.c
@@ -17,6 +17,7 @@
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
/*
* Handling of filesystem drivers list.
--- a/fs/freevxfs/vxfs_super.c
+++ b/fs/freevxfs/vxfs_super.c
@@ -12,6 +12,7 @@
#include <linux/blkdev.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/buffer_head.h>
#include <linux/kernel.h>
#include <linux/slab.h>
--- a/fs/fs_context.c
+++ b/fs/fs_context.c
@@ -10,6 +10,7 @@
#include <linux/module.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/fs.h>
#include <linux/mount.h>
#include <linux/nsproxy.h>
--- a/fs/fsopen.c
+++ b/fs/fsopen.c
@@ -7,6 +7,7 @@
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <linux/syscalls.h>
--- a/fs/fuse/control.c
+++ b/fs/fuse/control.c
@@ -11,6 +11,7 @@
#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#define FUSE_CTL_SUPER_MAGIC 0x65735543
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -17,6 +17,7 @@
#include <linux/moduleparam.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/statfs.h>
#include <linux/random.h>
#include <linux/sched.h>
--- a/fs/fuse/virtio_fs.c
+++ b/fs/fuse/virtio_fs.c
@@ -15,6 +15,7 @@
#include <linux/delay.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/highmem.h>
#include <linux/uio.h>
#include "fuse_i.h"
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -22,6 +22,7 @@
#include <linux/module.h>
#include <linux/backing-dev.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include "gfs2.h"
#include "incore.h"
--- a/fs/gfs2/super.h
+++ b/fs/gfs2/super.h
@@ -8,6 +8,7 @@
#define __SUPER_DOT_H__
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/dcache.h>
#include "incore.h"
--- a/fs/hfs/super.c
+++ b/fs/hfs/super.c
@@ -12,6 +12,7 @@
* Based on the minix file system code, (C) 1991, 1992 by Linus Torvalds
*/
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/blkdev.h>
#include <linux/backing-dev.h>
--- a/fs/hfsplus/super.c
+++ b/fs/hfsplus/super.c
@@ -14,6 +14,7 @@
#include <linux/blkdev.h>
#include <linux/backing-dev.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/vfs.h>
#include <linux/nls.h>
--- a/fs/hostfs/hostfs_kern.c
+++ b/fs/hostfs/hostfs_kern.c
@@ -7,6 +7,7 @@
*/
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/magic.h>
#include <linux/module.h>
#include <linux/mm.h>
--- a/fs/hpfs/super.c
+++ b/fs/hpfs/super.c
@@ -8,6 +8,7 @@
*/
#include "hpfs_fn.h"
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/parser.h>
#include <linux/init.h>
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -27,6 +27,7 @@
#include <linux/hugetlb.h>
#include <linux/pagevec.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/mman.h>
#include <linux/slab.h>
#include <linux/dnotify.h>
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -5,6 +5,7 @@
*/
#include <linux/export.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/filelock.h>
#include <linux/mm.h>
#include <linux/backing-dev.h>
--- a/fs/internal.h
+++ b/fs/internal.h
@@ -6,7 +6,6 @@
*/
struct super_block;
-struct file_system_type;
struct iomap;
struct iomap_ops;
struct linux_binprm;
--- a/fs/isofs/inode.c
+++ b/fs/isofs/inode.c
@@ -15,6 +15,7 @@
#include <linux/init.h>
#include <linux/module.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/cred.h>
#include <linux/nls.h>
--- a/fs/jffs2/super.c
+++ b/fs/jffs2/super.c
@@ -17,6 +17,7 @@
#include <linux/init.h>
#include <linux/list.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/err.h>
#include <linux/mount.h>
#include <linux/fs_context.h>
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -5,6 +5,7 @@
*/
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/parser.h>
#include <linux/completion.h>
@@ -42,7 +43,6 @@ static struct kmem_cache *jfs_inode_cachep;
static const struct super_operations jfs_super_operations;
static const struct export_operations jfs_export_operations;
-static struct file_system_type jfs_fs_type;
#define MAX_COMMIT_THREADS 64
static int commit_threads;
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -6,6 +6,7 @@
#include <linux/blkdev.h>
#include <linux/export.h>
+#include <linux/fs_type.h>
#include <linux/pagemap.h>
#include <linux/slab.h>
#include <linux/cred.h>
--- a/fs/minix/inode.c
+++ b/fs/minix/inode.c
@@ -15,6 +15,7 @@
#include "minix.h"
#include <linux/buffer_head.h>
#include <linux/slab.h>
+#include <linux/fs_type.h>
#include <linux/init.h>
#include <linux/highuid.h>
#include <linux/vfs.h>
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -19,6 +19,7 @@
#include <linux/idr.h>
#include <linux/init.h> /* init_rootfs */
#include <linux/fs_struct.h> /* get_fs_root et.al. */
+#include <linux/fs_type.h>
#include <linux/fsnotify.h> /* fsnotify_vfsmount_delete */
#include <linux/file.h>
#include <linux/uaccess.h>
--- a/fs/nfs/fs_context.c
+++ b/fs/nfs/fs_context.c
@@ -15,6 +15,7 @@
#include <linux/fs.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/nfs_fs.h>
#include <linux/nfs_mount.h>
#include <linux/nfs4_mount.h>
--- a/fs/nfs/internal.h
+++ b/fs/nfs/internal.h
@@ -5,6 +5,7 @@
#include "nfs4_fs.h"
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/security.h>
#include <linux/crc32.h>
#include <linux/sunrpc/addr.h>
--- a/fs/nfs/nfs.h
+++ b/fs/nfs/nfs.h
@@ -8,7 +8,6 @@
#ifndef __LINUX_INTERNAL_NFS_H
#define __LINUX_INTERNAL_NFS_H
-#include <linux/fs.h>
#include <linux/sunrpc/sched.h>
#include <linux/nfs_xdr.h>
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -33,6 +33,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <linux/fs_struct.h>
+#include <linux/fs_type.h>
#include <linux/file.h>
#include <linux/falloc.h>
#include <linux/slab.h>
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -9,6 +9,7 @@
#include <linux/namei.h>
#include <linux/ctype.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/sunrpc/svcsock.h>
#include <linux/lockd/lockd.h>
--- a/fs/nilfs2/super.c
+++ b/fs/nilfs2/super.c
@@ -27,6 +27,7 @@
#include <linux/module.h>
#include <linux/string.h>
#include <linux/slab.h>
+#include <linux/fs_type.h>
#include <linux/init.h>
#include <linux/blkdev.h>
#include <linux/parser.h>
--- a/fs/nsfs.c
+++ b/fs/nsfs.c
@@ -3,6 +3,7 @@
#include <linux/pseudo_fs.h>
#include <linux/file.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/proc_fs.h>
#include <linux/proc_ns.h>
#include <linux/magic.h>
--- a/fs/ntfs/super.c
+++ b/fs/ntfs/super.c
@@ -8,6 +8,7 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/stddef.h>
+#include <linux/fs_type.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/string.h>
--- a/fs/ntfs3/super.c
+++ b/fs/ntfs3/super.c
@@ -53,6 +53,7 @@
#include <linux/fs.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/log2.h>
#include <linux/minmax.h>
#include <linux/module.h>
--- a/fs/ocfs2/dlmfs/dlmfs.c
+++ b/fs/ocfs2/dlmfs/dlmfs.c
@@ -20,6 +20,7 @@
#include <linux/module.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/pagemap.h>
#include <linux/types.h>
#include <linux/slab.h>
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -9,6 +9,7 @@
#include <linux/module.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/types.h>
#include <linux/slab.h>
#include <linux/highmem.h>
--- a/fs/omfs/inode.c
+++ b/fs/omfs/inode.c
@@ -7,6 +7,7 @@
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/vfs.h>
#include <linux/cred.h>
#include <linux/parser.h>
--- a/fs/openpromfs/inode.c
+++ b/fs/openpromfs/inode.c
@@ -10,6 +10,7 @@
#include <linux/string.h>
#include <linux/fs.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/seq_file.h>
--- a/fs/orangefs/orangefs-kernel.h
+++ b/fs/orangefs/orangefs-kernel.h
@@ -32,6 +32,7 @@
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/vmalloc.h>
#include <linux/aio.h>
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -18,6 +18,7 @@
#include <linux/file.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include "overlayfs.h"
#include "params.h"
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -12,6 +12,7 @@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/log2.h>
#include <linux/mount.h>
#include <linux/pseudo_fs.h>
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -2,6 +2,7 @@
/*
* /proc/sys support
*/
+#include <linux/fs_type.h>
#include <linux/init.h>
#include <linux/sysctl.h>
#include <linux/poll.h>
--- a/fs/proc/root.c
+++ b/fs/proc/root.c
@@ -20,6 +20,7 @@
#include <linux/mount.h>
#include <linux/pid_namespace.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/cred.h>
#include <linux/magic.h>
#include <linux/slab.h>
--- a/fs/proc_namespace.c
+++ b/fs/proc_namespace.c
@@ -11,6 +11,7 @@
#include <linux/nsproxy.h>
#include <linux/security.h>
#include <linux/fs_struct.h>
+#include <linux/fs_type.h>
#include <linux/sched/task.h>
#include "proc/internal.h" /* only for get_proc_task() in ->open() */
--- a/fs/pstore/inode.c
+++ b/fs/pstore/inode.c
@@ -7,6 +7,7 @@
#include <linux/module.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/fsnotify.h>
#include <linux/pagemap.h>
#include <linux/highmem.h>
--- a/fs/qnx4/inode.c
+++ b/fs/qnx4/inode.c
@@ -13,6 +13,7 @@
* 30-06-1998 by Frank Denis : first step to write inodes.
*/
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
--- a/fs/qnx6/inode.c
+++ b/fs/qnx6/inode.c
@@ -11,6 +11,7 @@
*
*/
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
--- a/fs/ramfs/inode.c
+++ b/fs/ramfs/inode.c
@@ -24,6 +24,7 @@
*/
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/pagemap.h>
#include <linux/highmem.h>
#include <linux/time.h>
--- a/fs/reiserfs/reiserfs.h
+++ b/fs/reiserfs/reiserfs.h
@@ -6,6 +6,7 @@
#include <linux/reiserfs_fs.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
@@ -11,6 +11,7 @@
* NO WARRANTY
*/
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
--- a/fs/romfs/super.c
+++ b/fs/romfs/super.c
@@ -61,6 +61,7 @@
#include <linux/module.h>
#include <linux/string.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/time.h>
#include <linux/slab.h>
#include <linux/init.h>
--- a/fs/smb/client/cifsfs.c
+++ b/fs/smb/client/cifsfs.c
@@ -12,6 +12,7 @@
#include <linux/module.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/filelock.h>
#include <linux/mount.h>
#include <linux/slab.h>
--- a/fs/smb/client/misc.c
+++ b/fs/smb/client/misc.c
@@ -6,6 +6,7 @@
*
*/
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/ctype.h>
#include <linux/mempool.h>
--- a/fs/squashfs/super.c
+++ b/fs/squashfs/super.c
@@ -20,6 +20,7 @@
#include <linux/fs.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/vfs.h>
#include <linux/slab.h>
#include <linux/mutex.h>
--- a/fs/super.c
+++ b/fs/super.c
@@ -22,6 +22,7 @@
*/
#include <linux/export.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/blkdev.h>
#include <linux/mount.h>
--- a/fs/sysfs/mount.c
+++ b/fs/sysfs/mount.c
@@ -10,6 +10,7 @@
*/
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/magic.h>
#include <linux/mount.h>
#include <linux/init.h>
--- a/fs/sysv/super.c
+++ b/fs/sysv/super.c
@@ -21,6 +21,7 @@
* This file contains code for read/parsing the superblock.
*/
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
--- a/fs/tracefs/inode.c
+++ b/fs/tracefs/inode.c
@@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/mount.h>
#include <linux/kobject.h>
#include <linux/namei.h>
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -14,6 +14,7 @@
* corresponding subsystems, but most of it is here.
*/
+#include <linux/fs_type.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/module.h>
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -37,6 +37,7 @@
#include "udfdecl.h"
#include <linux/blkdev.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/module.h>
--- a/fs/ufs/super.c
+++ b/fs/ufs/super.c
@@ -76,6 +76,7 @@
#include <linux/errno.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/time.h>
#include <linux/stat.h>
--- a/fs/vboxsf/super.c
+++ b/fs/vboxsf/super.c
@@ -12,6 +12,7 @@
#include <linux/idr.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/magic.h>
#include <linux/module.h>
#include <linux/nls.h>
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -48,6 +48,7 @@
#include <linux/magic.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
static const struct super_operations xfs_super_operations;
--- a/fs/zonefs/super.c
+++ b/fs/zonefs/super.c
@@ -4,6 +4,7 @@
*
* Copyright (C) 2019 Western Digital Corporation or its affiliates.
*/
+#include <linux/fs_type.h>
#include <linux/module.h>
#include <linux/pagemap.h>
#include <linux/magic.h>
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -15,6 +15,7 @@
#include <linux/rculist.h>
#include <linux/cgroupstats.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/seq_file.h>
#include <linux/kernfs.h>
#include <linux/jump_label.h>
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -53,6 +53,7 @@ struct bio;
struct io_comp_batch;
struct export_operations;
struct fiemap_extent_info;
+struct file_system_type;
struct hd_geometry;
struct iovec;
struct kiocb;
@@ -1168,17 +1169,7 @@ extern int send_sigurg(struct fown_struct *fown);
#define SB_I_RETIRED 0x00000800 /* superblock shouldn't be reused */
#define SB_I_NOUMASK 0x00001000 /* VFS does not apply umask */
-/* Possible states of 'frozen' field */
-enum {
- SB_UNFROZEN = 0, /* FS is unfrozen */
- SB_FREEZE_WRITE = 1, /* Writes, dir ops, ioctls frozen */
- SB_FREEZE_PAGEFAULT = 2, /* Page faults stopped as well */
- SB_FREEZE_FS = 3, /* For internal FS use (e.g. to stop
- * internal threads if needed) */
- SB_FREEZE_COMPLETE = 4, /* ->freeze_fs finished successfully */
-};
-
-#define SB_FREEZE_LEVELS (SB_FREEZE_COMPLETE - 1)
+#include <linux/sb_freeze.h>
struct sb_writers {
unsigned short frozen; /* Is sb frozen? */
@@ -2362,38 +2353,6 @@ int kiocb_modified(struct kiocb *iocb);
int sync_inode_metadata(struct inode *inode, int wait);
-struct file_system_type {
- const char *name;
- int fs_flags;
-#define FS_REQUIRES_DEV 1
-#define FS_BINARY_MOUNTDATA 2
-#define FS_HAS_SUBTYPE 4
-#define FS_USERNS_MOUNT 8 /* Can be mounted by userns root */
-#define FS_DISALLOW_NOTIFY_PERM 16 /* Disable fanotify permission events */
-#define FS_ALLOW_IDMAP 32 /* FS has been updated to handle vfs idmappings. */
-#define FS_RENAME_DOES_D_MOVE 32768 /* FS will handle d_move() during rename() internally. */
- int (*init_fs_context)(struct fs_context *);
- const struct fs_parameter_spec *parameters;
- struct dentry *(*mount) (struct file_system_type *, int,
- const char *, void *);
- void (*kill_sb) (struct super_block *);
- struct module *owner;
- struct file_system_type * next;
- struct hlist_head fs_supers;
-
- struct lock_class_key s_lock_key;
- struct lock_class_key s_umount_key;
- struct lock_class_key s_vfs_rename_key;
- struct lock_class_key s_writers_key[SB_FREEZE_LEVELS];
-
- struct lock_class_key i_lock_key;
- struct lock_class_key i_mutex_key;
- struct lock_class_key invalidate_lock_key;
- struct lock_class_key i_mutex_dir_key;
-};
-
-#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
-
extern struct dentry *mount_bdev(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data,
int (*fill_super)(struct super_block *, void *, int));
@@ -2441,8 +2400,6 @@ struct super_block *sget_dev(struct fs_context *fc, dev_t dev);
BUG_ON(!(__file->f_op = (fops))); \
} while(0)
-extern int register_filesystem(struct file_system_type *);
-extern int unregister_filesystem(struct file_system_type *);
extern int vfs_statfs(const struct path *, struct kstatfs *);
extern int user_statfs(const char __user *, struct kstatfs *);
extern int fd_statfs(int, struct kstatfs *);
@@ -3115,9 +3072,6 @@ static inline int vfs_lstat(const char __user *name, struct kstat *stat)
extern const char *vfs_get_link(struct dentry *, struct delayed_call *);
extern int vfs_readlink(struct dentry *, char __user *, int);
-extern struct file_system_type *get_filesystem(struct file_system_type *fs);
-extern void put_filesystem(struct file_system_type *fs);
-extern struct file_system_type *get_fs_type(const char *name);
extern struct super_block *get_active_super(struct block_device *bdev);
extern void drop_super(struct super_block *sb);
extern void drop_super_exclusive(struct super_block *sb);
new file mode 100644
--- /dev/null
+++ b/include/linux/fs_type.h
@@ -0,0 +1,50 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_FS_TYPE_H
+#define _LINUX_FS_TYPE_H
+#include <linux/types.h>
+#include <linux/lockdep_types.h>
+#include <linux/sb_freeze.h>
+
+struct dentry;
+struct fs_context;
+struct fs_parameter_spec;
+struct module;
+struct super_block;
+
+struct file_system_type {
+ const char *name;
+ int fs_flags;
+#define FS_REQUIRES_DEV 1
+#define FS_BINARY_MOUNTDATA 2
+#define FS_HAS_SUBTYPE 4
+#define FS_USERNS_MOUNT 8 /* Can be mounted by userns root */
+#define FS_DISALLOW_NOTIFY_PERM 16 /* Disable fanotify permission events */
+#define FS_ALLOW_IDMAP 32 /* FS has been updated to handle vfs idmappings. */
+#define FS_RENAME_DOES_D_MOVE 32768 /* FS will handle d_move() during rename() internally. */
+ int (*init_fs_context)(struct fs_context *);
+ const struct fs_parameter_spec *parameters;
+ struct dentry *(*mount) (struct file_system_type *, int, const char *, void *);
+ void (*kill_sb) (struct super_block *);
+ struct module *owner;
+ struct file_system_type *next;
+ struct hlist_head fs_supers;
+
+ struct lock_class_key s_lock_key;
+ struct lock_class_key s_umount_key;
+ struct lock_class_key s_vfs_rename_key;
+ struct lock_class_key s_writers_key[SB_FREEZE_LEVELS];
+
+ struct lock_class_key i_lock_key;
+ struct lock_class_key i_mutex_key;
+ struct lock_class_key invalidate_lock_key;
+ struct lock_class_key i_mutex_dir_key;
+};
+
+#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
+
+int register_filesystem(struct file_system_type *);
+int unregister_filesystem(struct file_system_type *);
+struct file_system_type *get_filesystem(struct file_system_type *);
+void put_filesystem(struct file_system_type *);
+struct file_system_type *get_fs_type(const char *);
+#endif
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -136,8 +136,6 @@ extern initcall_entry_t __con_initcall_start[], __con_initcall_end[];
/* Used for constructor calls. */
typedef void (*ctor_fn_t)(void);
-struct file_system_type;
-
/* Defined in init/main.c */
extern int do_one_initcall(initcall_t fn);
extern char __initdata boot_command_line[];
--- a/include/linux/kernfs.h
+++ b/include/linux/kernfs.h
@@ -27,7 +27,6 @@ struct seq_file;
struct vm_area_struct;
struct vm_operations_struct;
struct super_block;
-struct file_system_type;
struct poll_table_struct;
struct fs_context;
new file mode 100644
--- /dev/null
+++ b/include/linux/sb_freeze.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_SB_FREEZE_H
+#define _LINUX_SB_FREEZE_H
+
+/* Possible states of 'frozen' field */
+enum {
+ SB_UNFROZEN = 0, /* FS is unfrozen */
+ SB_FREEZE_WRITE = 1, /* Writes, dir ops, ioctls frozen */
+ SB_FREEZE_PAGEFAULT = 2, /* Page faults stopped as well */
+ SB_FREEZE_FS = 3, /* For internal FS use (e.g. to stop
+ * internal threads if needed) */
+ SB_FREEZE_COMPLETE = 4, /* ->freeze_fs finished successfully */
+};
+
+#define SB_FREEZE_LEVELS (SB_FREEZE_COMPLETE - 1)
+
+#endif
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -15,6 +15,7 @@
#include <linux/initrd.h>
#include <linux/async.h>
#include <linux/fs_struct.h>
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <linux/ramfs.h>
#include <linux/shmem_fs.h>
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -19,6 +19,7 @@
#include <linux/file.h>
#include <linux/mount.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/namei.h>
#include <linux/sysctl.h>
#include <linux/poll.h>
--- a/kernel/bpf/inode.c
+++ b/kernel/bpf/inode.c
@@ -16,6 +16,7 @@
#include <linux/fs.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/kdev_t.h>
#include <linux/filter.h>
#include <linux/bpf.h>
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -56,6 +56,7 @@
#include <linux/nsproxy.h>
#include <linux/file.h>
#include <linux/fs_parser.h>
+#include <linux/fs_type.h>
#include <linux/sched/cputime.h>
#include <linux/sched/deadline.h>
#include <linux/psi.h>
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -17,6 +17,7 @@
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/proc_fs.h>
#include <linux/pseudo_fs.h>
#include <linux/sched.h>
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -42,6 +42,7 @@
#include <linux/poll.h>
#include <linux/nmi.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/trace.h>
#include <linux/sched/clock.h>
#include <linux/sched/rt.h>
--- a/kernel/usermode_driver.c
+++ b/kernel/usermode_driver.c
@@ -6,6 +6,7 @@
#include <linux/pipe_fs_i.h>
#include <linux/mount.h>
#include <linux/fs_struct.h>
+#include <linux/fs_type.h>
#include <linux/task_work.h>
#include <linux/usermode_driver.h>
--- a/lib/test_kmod.c
+++ b/lib/test_kmod.c
@@ -21,6 +21,7 @@
#include <linux/kthread.h>
#include <linux/sched.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/miscdevice.h>
#include <linux/vmalloc.h>
#include <linux/slab.h>
--- a/mm/secretmem.c
+++ b/mm/secretmem.c
@@ -7,6 +7,7 @@
#include <linux/mm.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/swap.h>
#include <linux/mount.h>
#include <linux/memfd.h>
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -22,6 +22,7 @@
*/
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/init.h>
#include <linux/vfs.h>
#include <linux/mount.h>
@@ -260,7 +261,6 @@ static const struct inode_operations shmem_dir_inode_operations;
static const struct inode_operations shmem_special_inode_operations;
static const struct vm_operations_struct shmem_vm_ops;
static const struct vm_operations_struct shmem_anon_vm_ops;
-static struct file_system_type shmem_fs_type;
bool vma_is_anon_shmem(struct vm_area_struct *vma)
{
--- a/net/socket.c
+++ b/net/socket.c
@@ -57,6 +57,7 @@
#include <linux/mm.h>
#include <linux/socket.h>
#include <linux/file.h>
+#include <linux/fs_type.h>
#include <linux/splice.h>
#include <linux/net.h>
#include <linux/interrupt.h>
--- a/net/sunrpc/rpc_pipe.c
+++ b/net/sunrpc/rpc_pipe.c
@@ -15,6 +15,7 @@
#include <linux/pagemap.h>
#include <linux/mount.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/namei.h>
#include <linux/fsnotify.h>
#include <linux/kernel.h>
--- a/security/apparmor/apparmorfs.c
+++ b/security/apparmor/apparmorfs.c
@@ -20,6 +20,7 @@
#include <linux/rcupdate.h>
#include <linux/fs.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/poll.h>
#include <linux/zstd.h>
#include <uapi/linux/major.h>
--- a/security/apparmor/mount.c
+++ b/security/apparmor/mount.c
@@ -9,6 +9,7 @@
*/
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/mount.h>
#include <linux/namei.h>
#include <uapi/linux/mount.h>
--- a/security/inode.c
+++ b/security/inode.c
@@ -14,6 +14,7 @@
#include <linux/kobject.h>
#include <linux/fs.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/mount.h>
#include <linux/pagemap.h>
#include <linux/init.h>
--- a/security/integrity/ima/ima_policy.c
+++ b/security/integrity/ima/ima_policy.c
@@ -11,6 +11,7 @@
#include <linux/list.h>
#include <linux/kernel_read_file.h>
#include <linux/fs.h>
+#include <linux/fs_type.h>
#include <linux/security.h>
#include <linux/magic.h>
#include <linux/parser.h>
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -18,6 +18,7 @@
#include <linux/vmalloc.h>
#include <linux/fs.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include <linux/mount.h>
#include <linux/mutex.h>
#include <linux/namei.h>
--- a/security/smack/smackfs.c
+++ b/security/smack/smackfs.c
@@ -25,6 +25,7 @@
#include <linux/magic.h>
#include <linux/mount.h>
#include <linux/fs_context.h>
+#include <linux/fs_type.h>
#include "smack.h"
#define BEBITS (sizeof(__be32) * 8)
--- a/security/tomoyo/mount.c
+++ b/security/tomoyo/mount.c
@@ -5,6 +5,7 @@
* Copyright (C) 2005-2011 NTT DATA CORPORATION
*/
+#include <linux/fs_type.h>
#include <linux/slab.h>
#include <uapi/linux/mount.h>
#include "common.h"
reply other threads:[~2023-12-28 11:46 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1c70c171-a0e4-457e-af34-229d5a56951e@p183 \
--to=adobriyan@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).