/* SPDX-License-Identifier: GPL-2.0-only */ #include #include struct ovl_fs; struct ovl_config; extern const struct fs_parameter_spec ovl_parameter_spec[]; extern const struct constant_table ovl_parameter_redirect_dir[]; /* The set of options that user requested explicitly via mount options */ struct ovl_opt_set { bool metacopy; bool redirect; bool nfs_export; bool index; }; #define OVL_MAX_STACK 500 struct ovl_fs_context_layer { char *name; struct path path; }; struct ovl_fs_context { struct path upper; struct path work; size_t capacity; size_t nr; /* includes nr_data */ size_t nr_data; struct ovl_opt_set set; struct ovl_fs_context_layer *lower; char *lowerdir_all; /* user provided lowerdir string */ }; 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); const char *ovl_xino_mode(struct ovl_config *config);