add "max_sectors_kb" config parameter
[multipath-tools/.git] / libmultipath / config.h
1 #ifndef _CONFIG_H
2 #define _CONFIG_H
3
4 #include <sys/types.h>
5 #include <stdint.h>
6 #include <urcu.h>
7
8 #define ORIGIN_DEFAULT 0
9 #define ORIGIN_CONFIG  1
10
11 /*
12  * In kernel, fast_io_fail == 0 means immediate failure on rport delete.
13  * OTOH '0' means not-configured in various places in multipath-tools.
14  */
15 #define MP_FAST_IO_FAIL_UNSET (0)
16 #define MP_FAST_IO_FAIL_OFF (-1)
17 #define MP_FAST_IO_FAIL_ZERO (-2)
18
19 enum devtypes {
20         DEV_NONE,
21         DEV_DEVT,
22         DEV_DEVNODE,
23         DEV_DEVMAP,
24         DEV_UEVENT
25 };
26
27 enum mpath_cmds {
28         CMD_NONE,
29         CMD_CREATE,
30         CMD_DRY_RUN,
31         CMD_LIST_SHORT,
32         CMD_LIST_LONG,
33         CMD_VALID_PATH,
34         CMD_REMOVE_WWID,
35         CMD_RESET_WWIDS,
36         CMD_ADD_WWID,
37 };
38
39 struct hwentry {
40         char * vendor;
41         char * product;
42         char * revision;
43         char * uid_attribute;
44         char * getuid;
45         char * features;
46         char * hwhandler;
47         char * selector;
48         char * checker_name;
49         char * prio_name;
50         char * prio_args;
51         char * alias_prefix;
52
53         int pgpolicy;
54         int pgfailback;
55         int rr_weight;
56         int no_path_retry;
57         int minio;
58         int minio_rq;
59         int flush_on_last_del;
60         int fast_io_fail;
61         unsigned int dev_loss;
62         int user_friendly_names;
63         int retain_hwhandler;
64         int detect_prio;
65         int deferred_remove;
66         int delay_watch_checks;
67         int delay_wait_checks;
68         int skip_kpartx;
69         int max_sectors_kb;
70         char * bl_product;
71 };
72
73 struct mpentry {
74         char * wwid;
75         char * alias;
76         char * uid_attribute;
77         char * getuid;
78         char * selector;
79         char * features;
80
81         char * prio_name;
82         char * prio_args;
83         unsigned char * reservation_key;
84         int pgpolicy;
85         int pgfailback;
86         int rr_weight;
87         int no_path_retry;
88         int minio;
89         int minio_rq;
90         int flush_on_last_del;
91         int attribute_flags;
92         int user_friendly_names;
93         int deferred_remove;
94         int delay_watch_checks;
95         int delay_wait_checks;
96         int skip_kpartx;
97         int max_sectors_kb;
98         uid_t uid;
99         gid_t gid;
100         mode_t mode;
101 };
102
103 struct config {
104         struct rcu_head rcu;
105         int verbosity;
106         int pgpolicy_flag;
107         int pgpolicy;
108         int minio;
109         int minio_rq;
110         int checkint;
111         int max_checkint;
112         int pgfailback;
113         int remove;
114         int rr_weight;
115         int no_path_retry;
116         int user_friendly_names;
117         int bindings_read_only;
118         int max_fds;
119         int force_reload;
120         int queue_without_daemon;
121         int ignore_wwids;
122         int checker_timeout;
123         int flush_on_last_del;
124         int attribute_flags;
125         int fast_io_fail;
126         unsigned int dev_loss;
127         int log_checker_err;
128         int allow_queueing;
129         int find_multipaths;
130         uid_t uid;
131         gid_t gid;
132         mode_t mode;
133         int reassign_maps;
134         int retain_hwhandler;
135         int detect_prio;
136         int force_sync;
137         int deferred_remove;
138         int processed_main_config;
139         int delay_watch_checks;
140         int delay_wait_checks;
141         int uxsock_timeout;
142         int strict_timing;
143         int retrigger_tries;
144         int retrigger_delay;
145         int ignore_new_devs;
146         int delayed_reconfig;
147         int uev_wait_timeout;
148         int skip_kpartx;
149         int disable_changed_wwids;
150         int remove_retries;
151         int max_sectors_kb;
152         unsigned int version[3];
153
154         char * multipath_dir;
155         char * selector;
156         char * uid_attribute;
157         char * getuid;
158         char * features;
159         char * hwhandler;
160         char * bindings_file;
161         char * wwids_file;
162         char * prio_name;
163         char * prio_args;
164         char * checker_name;
165         char * alias_prefix;
166         char * partition_delim;
167         char * config_dir;
168         unsigned char * reservation_key;
169
170         vector keywords;
171         vector mptable;
172         vector hwtable;
173         struct hwentry *overrides;
174
175         vector blist_devnode;
176         vector blist_wwid;
177         vector blist_device;
178         vector blist_property;
179         vector elist_devnode;
180         vector elist_wwid;
181         vector elist_device;
182         vector elist_property;
183 };
184
185 extern struct udev * udev;
186
187 struct hwentry * find_hwe (vector hwtable, char * vendor, char * product, char *revision);
188 struct mpentry * find_mpe (vector mptable, char * wwid);
189 char * get_mpe_wwid (vector mptable, char * alias);
190
191 struct hwentry * alloc_hwe (void);
192 struct mpentry * alloc_mpe (void);
193
194 void free_hwe (struct hwentry * hwe);
195 void free_hwtable (vector hwtable);
196 void free_mpe (struct mpentry * mpe);
197 void free_mptable (vector mptable);
198
199 int store_hwe (vector hwtable, struct hwentry *);
200
201 struct config *load_config (char * file);
202 struct config * alloc_config (void);
203 void free_config (struct config * conf);
204 extern struct config *get_multipath_config(void);
205 extern void put_multipath_config(struct config *);
206
207 #endif