1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <linux/fs_context.h> 4 #include <linux/fs_parser.h> 5 6 struct ovl_fs; 7 struct ovl_config; 8 9 extern const struct fs_parameter_spec ovl_parameter_spec[]; 10 extern const struct constant_table ovl_parameter_redirect_dir[]; 11 12 /* The set of options that user requested explicitly via mount options */ 13 struct ovl_opt_set { 14 bool metacopy; 15 bool redirect; 16 bool nfs_export; 17 bool index; 18 }; 19 20 #define OVL_MAX_STACK 500 21 22 struct ovl_fs_context_layer { 23 char *name; 24 struct path path; 25 }; 26 27 struct ovl_fs_context { 28 struct path upper; 29 struct path work; 30 size_t capacity; 31 size_t nr; /* includes nr_data */ 32 size_t nr_data; 33 struct ovl_opt_set set; 34 struct ovl_fs_context_layer *lower; 35 char *lowerdir_all; /* user provided lowerdir string */ 36 }; 37 38 int ovl_init_fs_context(struct fs_context *fc); 39 void ovl_free_fs(struct ovl_fs *ofs); 40 int ovl_fs_params_verify(const struct ovl_fs_context *ctx, 41 struct ovl_config *config); 42 int ovl_show_options(struct seq_file *m, struct dentry *dentry); 43 const char *ovl_xino_mode(struct ovl_config *config); 44