#include <linux/statfs.h>
#include <linux/seq_file.h>
#include <linux/crc32c.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
#include <linux/exportfs.h>
#include "xattr.h"
#define CREATE_TRACE_POINTS
#include <trace/events/erofs.h>
static struct kmem_cache *erofs_inode_cachep __read_mostly;
void _erofs_err(struct super_block *sb, const char *func, const char *fmt, ...)
{ … }
void _erofs_info(struct super_block *sb, const char *func, const char *fmt, ...)
{ … }
static int erofs_superblock_csum_verify(struct super_block *sb, void *sbdata)
{ … }
static void erofs_inode_init_once(void *ptr)
{ … }
static struct inode *erofs_alloc_inode(struct super_block *sb)
{ … }
static void erofs_free_inode(struct inode *inode)
{ … }
static bool check_layout_compatibility(struct super_block *sb,
struct erofs_super_block *dsb)
{ … }
void *erofs_read_metadata(struct super_block *sb, struct erofs_buf *buf,
erofs_off_t *offset, int *lengthp)
{ … }
#ifndef CONFIG_EROFS_FS_ZIP
static int z_erofs_parse_cfgs(struct super_block *sb,
struct erofs_super_block *dsb)
{
if (!dsb->u1.available_compr_algs)
return 0;
erofs_err(sb, "compression disabled, unable to mount compressed EROFS");
return -EOPNOTSUPP;
}
#endif
static int erofs_init_device(struct erofs_buf *buf, struct super_block *sb,
struct erofs_device_info *dif, erofs_off_t *pos)
{ … }
static int erofs_scan_devices(struct super_block *sb,
struct erofs_super_block *dsb)
{ … }
static int erofs_read_superblock(struct super_block *sb)
{ … }
static void erofs_default_options(struct erofs_sb_info *sbi)
{ … }
enum { … };
static const struct constant_table erofs_param_cache_strategy[] = …;
static const struct constant_table erofs_dax_param_enums[] = …;
static const struct fs_parameter_spec erofs_fs_parameters[] = …;
static bool erofs_fc_set_dax_mode(struct fs_context *fc, unsigned int mode)
{ … }
static int erofs_fc_parse_param(struct fs_context *fc,
struct fs_parameter *param)
{ … }
static struct inode *erofs_nfs_get_inode(struct super_block *sb,
u64 ino, u32 generation)
{ … }
static struct dentry *erofs_fh_to_dentry(struct super_block *sb,
struct fid *fid, int fh_len, int fh_type)
{ … }
static struct dentry *erofs_fh_to_parent(struct super_block *sb,
struct fid *fid, int fh_len, int fh_type)
{ … }
static struct dentry *erofs_get_parent(struct dentry *child)
{ … }
static const struct export_operations erofs_export_ops = …;
static void erofs_set_sysfs_name(struct super_block *sb)
{ … }
static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc)
{ … }
static int erofs_fc_get_tree(struct fs_context *fc)
{ … }
static int erofs_fc_reconfigure(struct fs_context *fc)
{ … }
static int erofs_release_device_info(int id, void *ptr, void *data)
{ … }
static void erofs_free_dev_context(struct erofs_dev_context *devs)
{ … }
static void erofs_fc_free(struct fs_context *fc)
{ … }
static const struct fs_context_operations erofs_context_ops = …;
static int erofs_init_fs_context(struct fs_context *fc)
{ … }
static void erofs_kill_sb(struct super_block *sb)
{ … }
static void erofs_put_super(struct super_block *sb)
{ … }
static struct file_system_type erofs_fs_type = …;
MODULE_ALIAS_FS(…) …;
static int __init erofs_module_init(void)
{ … }
static void __exit erofs_module_exit(void)
{ … }
static int erofs_statfs(struct dentry *dentry, struct kstatfs *buf)
{ … }
static int erofs_show_options(struct seq_file *seq, struct dentry *root)
{ … }
const struct super_operations erofs_sops = …;
module_init(…) …;
module_exit(erofs_module_exit);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;