1/* SPDX-License-Identifier: GPL-2.0-only */
2
3#include <linux/fs_context.h>
4#include <linux/fs_parser.h>
5
6struct ovl_fs;
7struct ovl_config;
8
9extern const struct fs_parameter_spec ovl_parameter_spec[];
10extern const struct constant_table ovl_parameter_redirect_dir[];
11
12/* The set of options that user requested explicitly via mount options */
13struct 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
22struct ovl_fs_context_layer {
23 char *name;
24 struct path path;
25};
26
27struct 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
38int ovl_init_fs_context(struct fs_context *fc);
39void ovl_free_fs(struct ovl_fs *ofs);
40int ovl_fs_params_verify(const struct ovl_fs_context *ctx,
41 struct ovl_config *config);
42int ovl_show_options(struct seq_file *m, struct dentry *dentry);
43const char *ovl_xino_mode(struct ovl_config *config);
44

source code of linux/fs/overlayfs/params.h