/* SPDX-License-Identifier: GPL-2.0-only */

#include <linux/fs_context.h>
#include <linux/fs_parser.h>

struct ovl_fs;
struct ovl_config;

extern const struct fs_parameter_spec ovl_parameter_spec[];
extern const struct constant_table ovl_parameter_redirect_dir[];

/* The set of options that user requested explicitly via mount options */
struct ovl_opt_set {
	bool metacopy;
	bool redirect;
	bool nfs_export;
	bool index;
};

#define OVL_MAX_STACK 500

struct ovl_fs_context_layer {
	char *name;
	struct path path;
};

struct ovl_fs_context {
	struct path upper;
	struct path work;
	size_t capacity;
	size_t nr; /* includes nr_data */
	size_t nr_data;
	struct ovl_opt_set set;
	struct ovl_fs_context_layer *lower;
	char *lowerdir_all; /* user provided lowerdir string */
	bool casefold_set;
};

int ovl_init_fs_context(struct fs_context *fc);
void ovl_free_fs(struct ovl_fs *ofs);
int ovl_fs_params_verify(const struct ovl_fs_context *ctx,
			 struct ovl_config *config);
int ovl_show_options(struct seq_file *m, struct dentry *dentry);
const char *ovl_xino_mode(struct ovl_config *config);
