|  | /* SPDX-License-Identifier: GPL-2.0-only */ | 
|  |  | 
|  | #include <linux/fs_context.h> | 
|  | #include <linux/fs_parser.h> | 
|  |  | 
|  | 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); |