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