xref: /aosp_15_r20/external/erofs-utils/include/erofs/config.h (revision 33b1fccf6a0fada2c2875d400ed01119b7676ee5)
1*33b1fccfSAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ OR Apache-2.0 */
2*33b1fccfSAndroid Build Coastguard Worker /*
3*33b1fccfSAndroid Build Coastguard Worker  * Copyright (C) 2018-2019 HUAWEI, Inc.
4*33b1fccfSAndroid Build Coastguard Worker  *             http://www.huawei.com/
5*33b1fccfSAndroid Build Coastguard Worker  * Created by Li Guifu <[email protected]>
6*33b1fccfSAndroid Build Coastguard Worker  */
7*33b1fccfSAndroid Build Coastguard Worker #ifndef __EROFS_CONFIG_H
8*33b1fccfSAndroid Build Coastguard Worker #define __EROFS_CONFIG_H
9*33b1fccfSAndroid Build Coastguard Worker 
10*33b1fccfSAndroid Build Coastguard Worker #ifdef __cplusplus
11*33b1fccfSAndroid Build Coastguard Worker extern "C"
12*33b1fccfSAndroid Build Coastguard Worker {
13*33b1fccfSAndroid Build Coastguard Worker #endif
14*33b1fccfSAndroid Build Coastguard Worker 
15*33b1fccfSAndroid Build Coastguard Worker #include "defs.h"
16*33b1fccfSAndroid Build Coastguard Worker #include "err.h"
17*33b1fccfSAndroid Build Coastguard Worker 
18*33b1fccfSAndroid Build Coastguard Worker 
19*33b1fccfSAndroid Build Coastguard Worker enum {
20*33b1fccfSAndroid Build Coastguard Worker 	FORCE_INODE_COMPACT = 1,
21*33b1fccfSAndroid Build Coastguard Worker 	FORCE_INODE_EXTENDED,
22*33b1fccfSAndroid Build Coastguard Worker };
23*33b1fccfSAndroid Build Coastguard Worker 
24*33b1fccfSAndroid Build Coastguard Worker enum {
25*33b1fccfSAndroid Build Coastguard Worker 	FORCE_INODE_BLOCK_MAP = 1,
26*33b1fccfSAndroid Build Coastguard Worker 	FORCE_INODE_CHUNK_INDEXES,
27*33b1fccfSAndroid Build Coastguard Worker };
28*33b1fccfSAndroid Build Coastguard Worker 
29*33b1fccfSAndroid Build Coastguard Worker enum {
30*33b1fccfSAndroid Build Coastguard Worker 	TIMESTAMP_UNSPECIFIED,
31*33b1fccfSAndroid Build Coastguard Worker 	TIMESTAMP_NONE,
32*33b1fccfSAndroid Build Coastguard Worker 	TIMESTAMP_FIXED,
33*33b1fccfSAndroid Build Coastguard Worker 	TIMESTAMP_CLAMPING,
34*33b1fccfSAndroid Build Coastguard Worker };
35*33b1fccfSAndroid Build Coastguard Worker 
36*33b1fccfSAndroid Build Coastguard Worker #define EROFS_MAX_COMPR_CFGS		64
37*33b1fccfSAndroid Build Coastguard Worker 
38*33b1fccfSAndroid Build Coastguard Worker struct erofs_compr_opts {
39*33b1fccfSAndroid Build Coastguard Worker 	char *alg;
40*33b1fccfSAndroid Build Coastguard Worker 	int level;
41*33b1fccfSAndroid Build Coastguard Worker 	u32 dict_size;
42*33b1fccfSAndroid Build Coastguard Worker };
43*33b1fccfSAndroid Build Coastguard Worker 
44*33b1fccfSAndroid Build Coastguard Worker struct erofs_configure {
45*33b1fccfSAndroid Build Coastguard Worker 	const char *c_version;
46*33b1fccfSAndroid Build Coastguard Worker 	int c_dbg_lvl;
47*33b1fccfSAndroid Build Coastguard Worker 	bool c_dry_run;
48*33b1fccfSAndroid Build Coastguard Worker 	bool c_legacy_compress;
49*33b1fccfSAndroid Build Coastguard Worker #ifndef NDEBUG
50*33b1fccfSAndroid Build Coastguard Worker 	bool c_random_pclusterblks;
51*33b1fccfSAndroid Build Coastguard Worker 	bool c_random_algorithms;
52*33b1fccfSAndroid Build Coastguard Worker #endif
53*33b1fccfSAndroid Build Coastguard Worker 	char c_timeinherit;
54*33b1fccfSAndroid Build Coastguard Worker 	char c_chunkbits;
55*33b1fccfSAndroid Build Coastguard Worker 	bool c_inline_data;
56*33b1fccfSAndroid Build Coastguard Worker 	bool c_ztailpacking;
57*33b1fccfSAndroid Build Coastguard Worker 	bool c_fragments;
58*33b1fccfSAndroid Build Coastguard Worker 	bool c_all_fragments;
59*33b1fccfSAndroid Build Coastguard Worker 	bool c_dedupe;
60*33b1fccfSAndroid Build Coastguard Worker 	bool c_ignore_mtime;
61*33b1fccfSAndroid Build Coastguard Worker 	bool c_showprogress;
62*33b1fccfSAndroid Build Coastguard Worker 	bool c_extra_ea_name_prefixes;
63*33b1fccfSAndroid Build Coastguard Worker 	bool c_xattr_name_filter;
64*33b1fccfSAndroid Build Coastguard Worker 	bool c_ovlfs_strip;
65*33b1fccfSAndroid Build Coastguard Worker 
66*33b1fccfSAndroid Build Coastguard Worker #ifdef HAVE_LIBSELINUX
67*33b1fccfSAndroid Build Coastguard Worker 	struct selabel_handle *sehnd;
68*33b1fccfSAndroid Build Coastguard Worker #endif
69*33b1fccfSAndroid Build Coastguard Worker 	/* related arguments for mkfs.erofs */
70*33b1fccfSAndroid Build Coastguard Worker 	char *c_img_path;
71*33b1fccfSAndroid Build Coastguard Worker 	char *c_src_path;
72*33b1fccfSAndroid Build Coastguard Worker 	char *c_blobdev_path;
73*33b1fccfSAndroid Build Coastguard Worker 	char *c_compress_hints_file;
74*33b1fccfSAndroid Build Coastguard Worker 	struct erofs_compr_opts c_compr_opts[EROFS_MAX_COMPR_CFGS];
75*33b1fccfSAndroid Build Coastguard Worker 	char c_force_inodeversion;
76*33b1fccfSAndroid Build Coastguard Worker 	char c_force_chunkformat;
77*33b1fccfSAndroid Build Coastguard Worker 	/* < 0, xattr disabled and INT_MAX, always use inline xattrs */
78*33b1fccfSAndroid Build Coastguard Worker 	int c_inline_xattr_tolerance;
79*33b1fccfSAndroid Build Coastguard Worker #ifdef EROFS_MT_ENABLED
80*33b1fccfSAndroid Build Coastguard Worker 	u64 c_mkfs_segment_size;
81*33b1fccfSAndroid Build Coastguard Worker 	u32 c_mt_workers;
82*33b1fccfSAndroid Build Coastguard Worker #endif
83*33b1fccfSAndroid Build Coastguard Worker 	u32 c_mkfs_pclustersize_max;
84*33b1fccfSAndroid Build Coastguard Worker 	u32 c_mkfs_pclustersize_def;
85*33b1fccfSAndroid Build Coastguard Worker 	u32 c_mkfs_pclustersize_packed;
86*33b1fccfSAndroid Build Coastguard Worker 	u32 c_max_decompressed_extent_bytes;
87*33b1fccfSAndroid Build Coastguard Worker 	u64 c_unix_timestamp;
88*33b1fccfSAndroid Build Coastguard Worker 	u32 c_uid, c_gid;
89*33b1fccfSAndroid Build Coastguard Worker 	const char *mount_point;
90*33b1fccfSAndroid Build Coastguard Worker 	long long c_uid_offset, c_gid_offset;
91*33b1fccfSAndroid Build Coastguard Worker 	u32 c_root_xattr_isize;
92*33b1fccfSAndroid Build Coastguard Worker #ifdef WITH_ANDROID
93*33b1fccfSAndroid Build Coastguard Worker 	char *target_out_path;
94*33b1fccfSAndroid Build Coastguard Worker 	char *fs_config_file;
95*33b1fccfSAndroid Build Coastguard Worker 	char *block_list_file;
96*33b1fccfSAndroid Build Coastguard Worker #endif
97*33b1fccfSAndroid Build Coastguard Worker };
98*33b1fccfSAndroid Build Coastguard Worker 
99*33b1fccfSAndroid Build Coastguard Worker extern struct erofs_configure cfg;
100*33b1fccfSAndroid Build Coastguard Worker 
101*33b1fccfSAndroid Build Coastguard Worker void erofs_init_configure(void);
102*33b1fccfSAndroid Build Coastguard Worker void erofs_show_config(void);
103*33b1fccfSAndroid Build Coastguard Worker void erofs_exit_configure(void);
104*33b1fccfSAndroid Build Coastguard Worker 
105*33b1fccfSAndroid Build Coastguard Worker /* (will be deprecated) temporary helper for updating global the cfg */
106*33b1fccfSAndroid Build Coastguard Worker struct erofs_configure *erofs_get_configure();
107*33b1fccfSAndroid Build Coastguard Worker 
108*33b1fccfSAndroid Build Coastguard Worker void erofs_set_fs_root(const char *rootdir);
109*33b1fccfSAndroid Build Coastguard Worker const char *erofs_fspath(const char *fullpath);
110*33b1fccfSAndroid Build Coastguard Worker 
111*33b1fccfSAndroid Build Coastguard Worker #ifdef HAVE_LIBSELINUX
112*33b1fccfSAndroid Build Coastguard Worker int erofs_selabel_open(const char *file_contexts);
113*33b1fccfSAndroid Build Coastguard Worker #else
erofs_selabel_open(const char * file_contexts)114*33b1fccfSAndroid Build Coastguard Worker static inline int erofs_selabel_open(const char *file_contexts)
115*33b1fccfSAndroid Build Coastguard Worker {
116*33b1fccfSAndroid Build Coastguard Worker 	return -EINVAL;
117*33b1fccfSAndroid Build Coastguard Worker }
118*33b1fccfSAndroid Build Coastguard Worker #endif
119*33b1fccfSAndroid Build Coastguard Worker 
120*33b1fccfSAndroid Build Coastguard Worker void erofs_update_progressinfo(const char *fmt, ...);
121*33b1fccfSAndroid Build Coastguard Worker char *erofs_trim_for_progressinfo(const char *str, int placeholder);
122*33b1fccfSAndroid Build Coastguard Worker unsigned int erofs_get_available_processors(void);
123*33b1fccfSAndroid Build Coastguard Worker 
124*33b1fccfSAndroid Build Coastguard Worker #ifdef __cplusplus
125*33b1fccfSAndroid Build Coastguard Worker }
126*33b1fccfSAndroid Build Coastguard Worker #endif
127*33b1fccfSAndroid Build Coastguard Worker 
128*33b1fccfSAndroid Build Coastguard Worker #endif
129