diff options
| author | Gao Xiang <hsiangkao@linux.alibaba.com> | 2026-01-23 01:31:24 +0000 |
|---|---|---|
| committer | Gao Xiang <hsiangkao@linux.alibaba.com> | 2026-01-23 20:01:13 +0800 |
| commit | 4340ca47c35b2be0b0945a3c2c9c9ee058520b96 (patch) | |
| tree | 1efb2c3f6dfafb377c860dc15350c10a0a4541af /fs/erofs/super.c | |
| parent | 37364497048c5081d3bfa424638cc91a7a7644e2 (diff) | |
| download | linux-next-4340ca47c35b2be0b0945a3c2c9c9ee058520b96.tar.gz linux-next-4340ca47c35b2be0b0945a3c2c9c9ee058520b96.zip | |
erofs: decouple `struct erofs_anon_fs_type`
- Move the `struct erofs_anon_fs_type` to super.c and expose it
in preparation for the upcoming page cache share feature;
- Remove the `.owner` field, as they are all internal mounts and
fully managed by EROFS. Retaining `.owner` would unnecessarily
increment module reference counts, preventing the EROFS kernel
module from being unloaded.
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Diffstat (limited to 'fs/erofs/super.c')
| -rw-r--r-- | fs/erofs/super.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 984afbda1c18..8940e8ff158a 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -11,6 +11,7 @@ #include <linux/fs_parser.h> #include <linux/exportfs.h> #include <linux/backing-dev.h> +#include <linux/pseudo_fs.h> #include "xattr.h" #define CREATE_TRACE_POINTS @@ -945,6 +946,19 @@ static struct file_system_type erofs_fs_type = { }; MODULE_ALIAS_FS("erofs"); +#if defined(CONFIG_EROFS_FS_ONDEMAND) +static int erofs_anon_init_fs_context(struct fs_context *fc) +{ + return init_pseudo(fc, EROFS_SUPER_MAGIC) ? 0 : -ENOMEM; +} + +struct file_system_type erofs_anon_fs_type = { + .name = "pseudo_erofs", + .init_fs_context = erofs_anon_init_fs_context, + .kill_sb = kill_anon_super, +}; +#endif + static int __init erofs_module_init(void) { int err; |
