Motr  M0
onwire.h
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2015-2020 Seagate Technology LLC and/or its Affiliates
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * For any questions about this software or licensing,
18  * please email opensource@seagate.com or cortx-questions@seagate.com.
19  *
20  */
21 
22 #pragma once
23 #ifndef __MOTR_CONF_ONWIRE_H__
24 #define __MOTR_CONF_ONWIRE_H__
25 
26 #include "xcode/xcode.h"
27 #include "lib/types.h" /* m0_conf_verno_t */
28 #include "lib/bitmap.h" /* m0_bitmap_onwire */
29 #include "lib/bitmap_xc.h" /* m0_bitmap_onwire */
30 #include "lib/buf_xc.h"
31 #include "fid/fid.h"
32 #include "fid/fid_xc.h"
33 #include "conf/schema_xc.h" /* m0_xc_m0_conf_service_type_enum */
34 #include "fdmi/filter.h" /* m0_fdmi_flt_node */
35 #include "fdmi/filter_xc.h" /* m0_fdmi_flt_node_xc */
36 #include "pool/policy_xc.h" /* m0_pver_policy_code */
37 
38 /* export */
39 struct m0_conf_fetch;
40 struct m0_conf_fetch_resp;
41 struct m0_conf_update;
42 struct m0_conf_update_resp;
43 
44 struct arr_u32 {
45  uint32_t au_count;
46  uint32_t *au_elems;
47 } M0_XCA_SEQUENCE M0_XCA_DOMAIN(conf|rpc);
48 
49 /* ------------------------------------------------------------------
50  * Configuration objects
51  * ------------------------------------------------------------------ */
52 
53 /* Note that m0_confx_dir does not exist. */
54 
57  struct m0_fid ch_id;
58 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
59 
60 struct m0_confx_root {
62  uint64_t xt_verno;
64  struct m0_fid xt_mdpool;
66  uint32_t xt_mdredundancy;
73 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
74 
78 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
79 
80 struct m0_confx_pool {
82  uint32_t xp_pver_policy M0_XCA_FENUM(m0_pver_policy_code);
84 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
85 
87  /* Number of data units in a parity group. */
88  uint32_t xva_N;
89  /* Number of parity units in a parity group. */
90  uint32_t xva_K;
91  /* Number of spare units in a parity group. */
92  uint32_t xva_S;
93  /* Pool width. */
94  uint32_t xva_P;
95  /*
96  * NOTE: The number of elements must be equal to M0_CONF_PVER_HEIGHT.
97  */
100  /*
101  * NOTE: "recd" attribute is not transferred over the wire,
102  * it exists in local conf cache only.
103  */
104 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
105 
107  uint32_t xvf_id;
108  struct m0_fid xvf_base;
109  /*
110  * NOTE: The number of elements must be equal to M0_CONF_PVER_HEIGHT.
111  */
113 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
114 
116 
119  union {
120  struct m0_confx_pver_actual xpv_actual
122  struct m0_confx_pver_formulaic xpv_formulaic
124  } u;
125 } M0_XCA_UNION M0_XCA_DOMAIN(conf|rpc);
130 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
134  struct m0_fid xj_real;
136  /*
137  * NOTE: "ix" attribute is not transferred over the wire,
138  * it exists in local conf cache only.
139  */
140 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
141 
144  uint32_t xn_memsize;
145  uint32_t xn_nr_cpu;
146  uint64_t xn_last_state;
147  uint64_t xn_flags;
149 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
150 
154  uint64_t xr_mem_limit_as;
160 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
161 
164  uint32_t xs_type M0_XCA_FENUM(m0_conf_service_type);
168 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
169 
172  uint32_t xd_dev_idx;
173  uint32_t xd_iface M0_XCA_FENUM(
175  uint32_t xd_media M0_XCA_FENUM(
177  uint32_t xd_bsize;
178  uint64_t xd_size;
179  uint64_t xd_last_state;
180  uint64_t xd_flags;
182  /*
183  * NOTE: "drive" attribute is not transferred over the wire,
184  * it exists in local conf cache only.
185  */
186 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
187 
192 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
193 
198 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
199 
202  struct m0_fid xe_node;
205 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
206 
211 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
212 
215  struct m0_fid xk_sdev;
217 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
218 
221  uint32_t xfg_rec_type;
223 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
224 
227  uint32_t xf_type M0_XCA_FENUM(m0_fdmi_filter_type_id);
229  /* String representation of FDMI filter root. */
231  struct m0_fid xf_node;
235 } M0_XCA_RECORD M0_XCA_DOMAIN(conf|rpc);
236 
237 struct m0_confx_obj {
238  uint64_t xo_type; /* see m0_fid_type::ft_id for values */
239  union {
244  } xo_u;
245 };
246 
253 M0_EXTERN struct m0_xcode_type *m0_confx_obj_xc;
254 M0_INTERNAL void m0_xc_m0_confx_obj_struct_init(void);
255 M0_INTERNAL void m0_xc_m0_confx_obj_struct_fini(void);
258 struct m0_confx {
259  uint32_t cx_nr;
268 } M0_XCA_SEQUENCE M0_XCA_DOMAIN(conf|rpc);
269 
271 #define M0_CONFX_AT(cx, idx) \
272 ({ \
273  typeof(cx) __cx = (cx); \
274  uint32_t __idx = (idx); \
275  M0_ASSERT(__idx <= __cx->cx_nr); \
276  (typeof(&(cx)->cx__objs[0]))(((char *)__cx->cx__objs) + \
277  __idx * m0_confx_sizeof()); \
278 })
279 
280 M0_INTERNAL size_t m0_confx_sizeof(void);
281 
282 /* ------------------------------------------------------------------
283  * Configuration fops
284  * ------------------------------------------------------------------ */
285 
289  struct m0_fid f_origin;
292 } M0_XCA_RECORD M0_XCA_DOMAIN(rpc);
293 
297  int32_t fr_rc;
299  uint64_t fr_ver;
302 } M0_XCA_RECORD M0_XCA_DOMAIN(rpc);
303 
307  struct m0_fid u_origin;
309  struct m0_confx u_data;
310 } M0_XCA_RECORD M0_XCA_DOMAIN(rpc);
311 
315  int32_t ur_rc;
316 } M0_XCA_RECORD M0_XCA_DOMAIN(rpc);
317 
318 #endif /* __MOTR_CONF_ONWIRE_H__ */
M0_INTERNAL size_t m0_confx_sizeof(void)
Definition: db.c:61
uint32_t xf_type M0_XCA_FENUM(m0_fdmi_filter_type_id)
struct m0_confx_header xj_header
Definition: onwire.h:133
struct m0_confx_obj * cx__objs
Definition: onwire.h:267
uint64_t xo_type
Definition: onwire.h:238
M0_INTERNAL void m0_xc_m0_confx_obj_struct_fini(void)
Definition: db.c:58
struct m0_fid_arr xk_pvers
Definition: onwire.h:216
struct m0_fid xf_dix_pver
Definition: onwire.h:232
struct m0_fid xt_rootfid
Definition: onwire.h:63
struct m0_fid_arr xr_encls
Definition: onwire.h:196
struct m0_confx_header xc_header
Definition: onwire.h:208
struct m0_buf xr_endpoint
Definition: onwire.h:158
struct m0_confx_header xn_header
Definition: onwire.h:143
m0_conf_service_type
Definition: schema.h:194
struct m0_fid_arr xt_sites
Definition: onwire.h:69
struct m0_fid_arr xp_pvers
Definition: onwire.h:83
uint64_t xr_mem_limit_as
Definition: onwire.h:154
union m0_confx_pver_u::@125 u
struct m0_fid f_origin
Definition: onwire.h:289
m0_fdmi_filter_type_id
Definition: filter.h:76
struct m0_confx_header xfg_header
Definition: onwire.h:220
struct m0_fid_arr xi_racks
Definition: onwire.h:190
Definition: onwire.h:44
uint64_t xn_last_state
Definition: onwire.h:146
struct m0_confx_header xd_header
Definition: onwire.h:171
struct m0_fid_arr xe_pvers
Definition: onwire.h:204
M0_EXTERN struct m0_xcode_type * m0_confx_obj_xc
Definition: onwire.h:253
struct m0_fid u_origin
Definition: onwire.h:307
Definition: conf.py:1
uint32_t * au_elems
Definition: onwire.h:46
uint64_t xn_flags
Definition: onwire.h:147
struct m0_bufs xs_endpoints
Definition: onwire.h:165
struct arr_u32 xva_tolerance
Definition: onwire.h:98
#define M0_XCA_TAG(value)
Definition: xcode_attr.h:57
uint8_t xpv_is_formulaic
Definition: onwire.h:118
uint64_t xr_mem_limit_memlock
Definition: onwire.h:157
uint32_t xva_K
Definition: onwire.h:90
uint64_t xd_flags
Definition: onwire.h:180
Definition: buf.h:37
struct m0_fid_arr xr_services
Definition: onwire.h:159
uint64_t xr_mem_limit_stack
Definition: onwire.h:156
struct m0_fid_arr xr_pvers
Definition: onwire.h:197
struct m0_bufs xt_params
Definition: onwire.h:67
uint64_t xd_last_state
Definition: onwire.h:179
struct m0_fid xf_filter_id
Definition: onwire.h:228
uint32_t cx_nr
Definition: onwire.h:259
struct m0_fid xt_mdpool
Definition: onwire.h:64
uint32_t xn_memsize
Definition: onwire.h:144
uint32_t xva_S
Definition: onwire.h:92
struct m0_confx_header xv_header
Definition: onwire.h:128
m0_pver_policy_code
Definition: policy.h:40
struct m0_confx_header xs_header
Definition: onwire.h:163
uint32_t xs_type M0_XCA_FENUM(m0_conf_service_type)
struct m0_confx_header xf_header
Definition: onwire.h:226
struct m0_confx fr_data
Definition: onwire.h:301
struct arr_u32 xvf_allowance
Definition: onwire.h:112
struct m0_fid_arr xc_pvers
Definition: onwire.h:210
struct m0_fid_arr xe_ctrls
Definition: onwire.h:203
enum @124 M0_XCA_DOMAIN
struct m0_confx_header xt_header
Definition: onwire.h:61
Definition: fid.h:43
uint32_t xp_pver_policy M0_XCA_FENUM(m0_pver_policy_code)
struct m0_fid_arr xt_profiles
Definition: onwire.h:71
struct m0_fid_arr xs_sdevs
Definition: onwire.h:167
struct m0_confx u_data
Definition: onwire.h:309
uint64_t xr_mem_limit_rss
Definition: onwire.h:155
union m0_confx_obj::@127 xo_u
uint32_t xt_mdredundancy
Definition: onwire.h:66
uint64_t xd_size
Definition: onwire.h:178
m0_cfg_storage_device_media_type
Definition: schema.h:136
uint32_t xd_iface M0_XCA_FENUM(m0_cfg_storage_device_interface_type)
uint32_t xva_P
Definition: onwire.h:94
struct m0_confx_header xr_header
Definition: onwire.h:152
uint32_t xfg_rec_type
Definition: onwire.h:221
uint32_t xd_bsize
Definition: onwire.h:177
struct m0_bitmap_onwire xr_cores
Definition: onwire.h:153
struct m0_fid ch_id
Definition: onwire.h:57
struct m0_fid xj_real
Definition: onwire.h:134
struct m0_fid xf_node
Definition: onwire.h:231
m0_cfg_storage_device_interface_type
Definition: schema.h:120
uint32_t xd_dev_idx
Definition: onwire.h:172
struct m0_confx_header xr_header
Definition: onwire.h:195
struct m0_bufs xs_params
Definition: onwire.h:166
Definition: fid.h:38
struct m0_fid_arr xi_pvers
Definition: onwire.h:191
struct m0_fid xvf_base
Definition: onwire.h:108
struct m0_fid_arr xt_pools
Definition: onwire.h:70
struct m0_confx_header u_header
Definition: onwire.h:243
struct m0_fid xt_imeta_pver
Definition: onwire.h:65
struct m0_fid_arr xfg_filters
Definition: onwire.h:222
struct m0_fid xk_sdev
Definition: onwire.h:215
struct m0_fid_arr xt_nodes
Definition: onwire.h:68
uint32_t xn_nr_cpu
Definition: onwire.h:145
struct m0_fid_arr xc_drives
Definition: onwire.h:209
struct m0_confx_pver_u xv_u
Definition: onwire.h:129
struct m0_fid xe_node
Definition: onwire.h:202
uint32_t xva_N
Definition: onwire.h:88
struct m0_fid_arr xp_pools
Definition: onwire.h:77
struct m0_fid_arr f_path
Definition: onwire.h:291
Definition: buf.h:43
struct m0_confx_header xk_header
Definition: onwire.h:214
struct m0_confx_header xp_header
Definition: onwire.h:81
struct m0_bufs xf_endpoints
Definition: onwire.h:234
struct m0_buf xf_filter_root
Definition: onwire.h:230
struct m0_confx_header xi_header
Definition: onwire.h:189
uint64_t xt_verno
Definition: onwire.h:62
struct m0_bufs xf_substrings
Definition: onwire.h:233
struct m0_confx_header xe_header
Definition: onwire.h:201
struct m0_confx_header xp_header
Definition: onwire.h:76
struct m0_fid_arr xt_fdmi_flt_grps
Definition: onwire.h:72
struct m0_buf xd_filename
Definition: onwire.h:181
struct m0_fid_arr xva_sitevs
Definition: onwire.h:99
uint32_t au_count
Definition: onwire.h:45
M0_INTERNAL void m0_xc_m0_confx_obj_struct_init(void)
Definition: db.c:55
struct m0_fid_arr xj_children
Definition: onwire.h:135
uint64_t fr_ver
Definition: onwire.h:299
struct m0_fid_arr xn_processes
Definition: onwire.h:148
int32_t fr_rc
Definition: onwire.h:297