17fb7998bSChristian Brauner /* SPDX-License-Identifier: GPL-2.0-only */ 27fb7998bSChristian Brauner 37fb7998bSChristian Brauner #include <linux/fs_context.h> 47fb7998bSChristian Brauner #include <linux/fs_parser.h> 57fb7998bSChristian Brauner 67fb7998bSChristian Brauner struct ovl_fs; 77fb7998bSChristian Brauner struct ovl_config; 87fb7998bSChristian Brauner 97fb7998bSChristian Brauner extern const struct fs_parameter_spec ovl_parameter_spec[]; 107fb7998bSChristian Brauner extern const struct constant_table ovl_parameter_redirect_dir[]; 117fb7998bSChristian Brauner 127fb7998bSChristian Brauner /* The set of options that user requested explicitly via mount options */ 137fb7998bSChristian Brauner struct ovl_opt_set { 147fb7998bSChristian Brauner bool metacopy; 157fb7998bSChristian Brauner bool redirect; 167fb7998bSChristian Brauner bool nfs_export; 177fb7998bSChristian Brauner bool index; 187fb7998bSChristian Brauner }; 197fb7998bSChristian Brauner 207fb7998bSChristian Brauner #define OVL_MAX_STACK 500 217fb7998bSChristian Brauner 227fb7998bSChristian Brauner struct ovl_fs_context_layer { 237fb7998bSChristian Brauner char *name; 247fb7998bSChristian Brauner struct path path; 257fb7998bSChristian Brauner }; 267fb7998bSChristian Brauner 277fb7998bSChristian Brauner struct ovl_fs_context { 287fb7998bSChristian Brauner struct path upper; 297fb7998bSChristian Brauner struct path work; 307fb7998bSChristian Brauner size_t capacity; 317fb7998bSChristian Brauner size_t nr; /* includes nr_data */ 327fb7998bSChristian Brauner size_t nr_data; 337fb7998bSChristian Brauner struct ovl_opt_set set; 347fb7998bSChristian Brauner struct ovl_fs_context_layer *lower; 35*0cea4c09SAmir Goldstein char *lowerdir_all; /* user provided lowerdir string */ 367fb7998bSChristian Brauner }; 377fb7998bSChristian Brauner 387fb7998bSChristian Brauner int ovl_init_fs_context(struct fs_context *fc); 397fb7998bSChristian Brauner void ovl_free_fs(struct ovl_fs *ofs); 407fb7998bSChristian Brauner int ovl_fs_params_verify(const struct ovl_fs_context *ctx, 417fb7998bSChristian Brauner struct ovl_config *config); 427fb7998bSChristian Brauner int ovl_show_options(struct seq_file *m, struct dentry *dentry); 437fb7998bSChristian Brauner const char *ovl_xino_mode(struct ovl_config *config); 44