#include <linux/fs.h>
#include <linux/module.h>
#include <linux/namei.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
#include <linux/posix_acl_xattr.h>
#include <linux/seq_file.h>
#include <linux/xattr.h>
#include "overlayfs.h"
#include "params.h"
static bool ovl_redirect_dir_def = … IS_ENABLED(…);
module_param_named(redirect_dir, ovl_redirect_dir_def, bool, 0644);
MODULE_PARM_DESC(…) …;
static bool ovl_redirect_always_follow = …
IS_ENABLED(…);
module_param_named(redirect_always_follow, ovl_redirect_always_follow,
bool, 0644);
MODULE_PARM_DESC(…) …;
static bool ovl_xino_auto_def = … IS_ENABLED(…);
module_param_named(xino_auto, ovl_xino_auto_def, bool, 0644);
MODULE_PARM_DESC(…) …;
static bool ovl_index_def = … IS_ENABLED(…);
module_param_named(index, ovl_index_def, bool, 0644);
MODULE_PARM_DESC(…) …;
static bool ovl_nfs_export_def = … IS_ENABLED(…);
module_param_named(nfs_export, ovl_nfs_export_def, bool, 0644);
MODULE_PARM_DESC(…) …;
static bool ovl_metacopy_def = … IS_ENABLED(…);
module_param_named(metacopy, ovl_metacopy_def, bool, 0644);
MODULE_PARM_DESC(…) …;
enum ovl_opt { … };
static const struct constant_table ovl_parameter_bool[] = …;
static const struct constant_table ovl_parameter_uuid[] = …;
static const char *ovl_uuid_mode(struct ovl_config *config)
{ … }
static int ovl_uuid_def(void)
{ … }
static const struct constant_table ovl_parameter_xino[] = …;
const char *ovl_xino_mode(struct ovl_config *config)
{ … }
static int ovl_xino_def(void)
{ … }
const struct constant_table ovl_parameter_redirect_dir[] = …;
static const char *ovl_redirect_mode(struct ovl_config *config)
{ … }
static int ovl_redirect_mode_def(void)
{ … }
static const struct constant_table ovl_parameter_verity[] = …;
static const char *ovl_verity_mode(struct ovl_config *config)
{ … }
static int ovl_verity_mode_def(void)
{ … }
const struct fs_parameter_spec ovl_parameter_spec[] = …;
static char *ovl_next_opt(char **s)
{ … }
static int ovl_parse_monolithic(struct fs_context *fc, void *data)
{ … }
static ssize_t ovl_parse_param_split_lowerdirs(char *str)
{ … }
static int ovl_mount_dir_noesc(const char *name, struct path *path)
{ … }
static void ovl_unescape(char *s)
{ … }
static int ovl_mount_dir(const char *name, struct path *path)
{ … }
static int ovl_mount_dir_check(struct fs_context *fc, const struct path *path,
enum ovl_opt layer, const char *name, bool upper)
{ … }
static int ovl_ctx_realloc_lower(struct fs_context *fc)
{ … }
static void ovl_add_layer(struct fs_context *fc, enum ovl_opt layer,
struct path *path, char **pname)
{ … }
static int ovl_parse_layer(struct fs_context *fc, struct fs_parameter *param,
enum ovl_opt layer)
{ … }
static void ovl_reset_lowerdirs(struct ovl_fs_context *ctx)
{ … }
static int ovl_parse_param_lowerdir(const char *name, struct fs_context *fc)
{ … }
static int ovl_parse_param(struct fs_context *fc, struct fs_parameter *param)
{ … }
static int ovl_get_tree(struct fs_context *fc)
{ … }
static inline void ovl_fs_context_free(struct ovl_fs_context *ctx)
{ … }
static void ovl_free(struct fs_context *fc)
{ … }
static int ovl_reconfigure(struct fs_context *fc)
{ … }
static const struct fs_context_operations ovl_context_ops = …;
int ovl_init_fs_context(struct fs_context *fc)
{ … }
void ovl_free_fs(struct ovl_fs *ofs)
{ … }
int ovl_fs_params_verify(const struct ovl_fs_context *ctx,
struct ovl_config *config)
{ … }
int ovl_show_options(struct seq_file *m, struct dentry *dentry)
{ … }