23 #ifndef __MOTR_CONF_OBJ_H__ 24 #define __MOTR_CONF_OBJ_H__ 780 #define M0_CONF_CAST(ptr, type) \ 781 bob_of(ptr, struct type, type ## _cast_field, &type ## _bob) 783 #define m0_conf_dir_cast_field cd_obj 784 #define m0_conf_root_cast_field rt_obj 785 #define m0_conf_profile_cast_field cp_obj 786 #define m0_conf_pool_cast_field pl_obj 787 #define m0_conf_pver_cast_field pv_obj 788 #define m0_conf_objv_cast_field cv_obj 789 #define m0_conf_node_cast_field cn_obj 790 #define m0_conf_process_cast_field pc_obj 791 #define m0_conf_service_cast_field cs_obj 792 #define m0_conf_sdev_cast_field sd_obj 793 #define m0_conf_site_cast_field ct_obj 794 #define m0_conf_rack_cast_field cr_obj 795 #define m0_conf_enclosure_cast_field ce_obj 796 #define m0_conf_controller_cast_field cc_obj 797 #define m0_conf_drive_cast_field ck_obj 798 #define m0_conf_fdmi_filter_cast_field ff_obj 799 #define m0_conf_fdmi_flt_grp_cast_field ffg_obj 801 #define M0_CONF_OBJ_TYPES \ 802 X_CONF(root, ROOT, 't') \ 803 X_CONF(dir, DIR, 'D') \ 804 X_CONF(profile, PROFILE, 'p') \ 805 X_CONF(pool, POOL, 'o') \ 806 X_CONF(pver, PVER, 'v') \ 807 X_CONF(objv, OBJV, 'j') \ 808 X_CONF(node, NODE, 'n') \ 809 X_CONF(process, PROCESS, 'r') \ 810 X_CONF(service, SERVICE, 's') \ 811 X_CONF(sdev, SDEV, 'd') \ 812 X_CONF(site, SITE, 'S') \ 813 X_CONF(rack, RACK, 'a') \ 814 X_CONF(enclosure, ENCLOSURE, 'e') \ 815 X_CONF(controller, CONTROLLER, 'c') \ 816 X_CONF(drive, DRIVE, 'k') \ 817 X_CONF(fdmi_flt_grp, FDMI_FLT_GRP, 'g') \ 818 X_CONF(fdmi_filter, FDMI_FILTER, 'l') 820 #define X_CONF(name, NAME, _) \ 821 extern const struct m0_bob_type m0_conf_ ## name ## _bob; \ 822 extern const struct m0_conf_obj_type M0_CONF_ ## NAME ## _TYPE; 831 #define M0_CONF_REL_FIDS \ 834 X_CONF(ROOT_NODES, 1) \ 835 X_CONF(ROOT_SITES, 2) \ 836 X_CONF(ROOT_POOLS, 3) \ 837 X_CONF(ROOT_PROFILES, 4) \ 838 X_CONF(ROOT_FDMI_FLT_GRPS, 5) \ 839 X_CONF(FDMI_FGRP_FILTERS, 6) \ 841 X_CONF(POOL_PVERS, 7) \ 842 X_CONF(PVER_SITEVS, 8) \ 843 X_CONF(SITEV_RACKVS, 9) \ 844 X_CONF(RACKV_ENCLVS, 10) \ 845 X_CONF(ENCLV_CTRLVS, 11) \ 846 X_CONF(CTRLV_DRIVEVS, 12) \ 848 X_CONF(NODE_PROCESSES, 13) \ 849 X_CONF(PROCESS_SERVICES, 14) \ 850 X_CONF(SERVICE_SDEVS, 15) \ 852 X_CONF(SITE_RACKS, 16) \ 853 X_CONF(RACK_ENCLS, 17) \ 854 X_CONF(ENCLOSURE_CTRLS, 18) \ 855 X_CONF(CONTROLLER_DRIVES, 19) 857 #define X_CONF(name, _) \ 858 extern const struct m0_fid M0_CONF_ ## name ## _FID; const struct m0_conf_obj_type * m0_conf_obj_type(const struct m0_conf_obj *obj)
void m0_conf_obj_type_unregister(const struct m0_conf_obj_type *otype)
const struct m0_conf_obj_type * cd_item_type
struct m0_conf_pver ** cr_pvers
void m0_conf_obj_type_register(const struct m0_conf_obj_type *otype)
struct m0_fid ff_filter_id
const struct m0_conf_obj_type * m0_conf_objx_type(const struct m0_confx_obj *obj)
struct m0_conf_dir * cs_sdevs
struct m0_conf_dir * pvs_sitevs
void(* cot_xc_init)(void)
struct m0_protocol_id rt_protocol
struct m0_conf_obj ce_obj
struct m0_pdclust_attr pvs_attr
struct m0_conf_obj cd_obj
uint64_t pc_memlimit_memlock
M0_CONF_REL_FIDS const struct m0_fid_type M0_CONF_RELFID_TYPE
struct m0_conf_obj rt_obj
struct m0_conf_obj pl_obj
const struct m0_conf_obj_type * m0_conf_fid_type(const struct m0_fid *id)
const char ** ff_substrings
struct m0_conf_pver ** cc_pvers
struct m0_conf_pver ** ce_pvers
enum m0_fdmi_rec_type_id ffg_rec_type
#define M0_CONF_OBJ_TYPES
uint32_t pvs_recd[M0_CONF_PVER_HEIGHT]
struct m0_conf_obj pv_obj
struct m0_fdmi_filter ff_filter
struct m0_conf_cache * co_cache
struct m0_conf_pver ** ck_pvers
struct m0_conf_obj * co_parent
const char ** ff_endpoints
M0_INTERNAL bool m0_conf_obj_is_stub(const struct m0_conf_obj *obj)
enum m0_conf_pver_kind pv_kind
M0_INTERNAL void m0_conf_obj_fini(void)
struct m0_conf_dir * ce_ctrls
uint64_t pc_memlimit_stack
struct m0_conf_dir * rt_fdmi_flt_grps
M0_INTERNAL void m0_conf_child_adopt(struct m0_conf_obj *parent, struct m0_conf_obj *child)
const char ** cs_endpoints
struct m0_conf_obj cp_obj
struct m0_conf_dir * pl_pvers
struct m0_tlink co_dir_link
struct m0_fid rt_imeta_pver
struct m0_conf_dir * cc_drives
const struct m0_fid_type cot_ftype
struct m0_conf_pver ** ct_pvers
struct m0_conf_dir * rt_nodes
union m0_conf_pver::@122 pv_u
struct m0_fid_arr cp_pools
struct m0_conf_obj * m0_conf_obj_grandparent(const struct m0_conf_obj *obj)
enum m0_ha_obj_state co_ha_state
uint32_t pvs_tolerance[M0_CONF_PVER_HEIGHT]
struct m0_tlink co_cache_link
struct m0_conf_obj cv_obj
struct m0_conf_pver * ff_dix_pver
struct m0_xcode_type ** cot_xt
struct m0_conf_dir * rt_sites
struct m0_chan co_ha_chan
struct m0_bitmap pc_cores
enum m0_conf_service_type cs_type
struct m0_conf_sdev * ck_sdev
struct m0_conf_dir * rt_profiles
M0_INTERNAL const struct m0_conf_obj_type * m0_conf_obj_type_next(const struct m0_conf_obj_type *otype)
struct m0_conf_dir * rt_pools
bool m0_conf_fid_is_valid(const struct m0_fid *fid)
struct m0_conf_obj cc_obj
struct m0_conf_obj ffg_obj
struct m0_conf_pver_subtree subtree
struct m0_conf_node * ce_node
struct m0_conf_obj pc_obj
struct m0_conf_dir * pc_services
struct m0_conf_obj ct_obj
struct m0_conf_obj ff_obj
struct m0_conf_obj cn_obj
struct m0_conf_obj cs_obj
const struct m0_fid M0_CONF_ROOT_FID
struct m0_conf_pver_formulaic formulaic
struct m0_conf_obj sd_obj
struct m0_conf_dir * ffg_filters
enum m0_conf_status co_status
struct m0_conf_dir * cv_children
struct m0_conf_dir * cr_encls
struct m0_conf_dir * ct_racks
M0_INTERNAL int m0_conf_obj_init(void)
struct m0_conf_dir * cn_processes
enum m0_fdmi_filter_type_id ff_type
struct m0_conf_obj cr_obj
struct m0_conf_obj ck_obj
struct m0_conf_obj * cv_real
struct m0_conf_node * ff_node
const struct m0_fid * m0_conf_objx_fid(const struct m0_confx_obj *obj)
struct m0_tlink ff_linkage
const struct m0_conf_obj_ops * co_ops