summaryrefslogtreecommitdiff
path: root/fs/erofs/super.c
diff options
context:
space:
mode:
authorGao Xiang <hsiangkao@linux.alibaba.com>2026-01-23 01:31:24 +0000
committerGao Xiang <hsiangkao@linux.alibaba.com>2026-01-23 20:01:13 +0800
commit4340ca47c35b2be0b0945a3c2c9c9ee058520b96 (patch)
tree1efb2c3f6dfafb377c860dc15350c10a0a4541af /fs/erofs/super.c
parent37364497048c5081d3bfa424638cc91a7a7644e2 (diff)
downloadlinux-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.c14
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;