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