xref: /linux/fs/overlayfs/params.h (revision 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d)
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