22 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_POOL 208 struct m0_pool, po_linkage, po_magic,
314 pools_tlink_init(
pool);
324 pools_tlink_fini(
pool);
369 M0_CONF_NODE_PROCESSES_FID,
370 M0_CONF_PROCESS_SERVICES_FID);
381 M0_ASSERT(idx <= pc->pc_nr_svcs[M0_CST_MDS]);
413 M0_CONF_POOL_PVERS_FID,
414 M0_CONF_PVER_SITEVS_FID,
415 M0_CONF_SITEV_RACKVS_FID,
416 M0_CONF_RACKV_ENCLVS_FID);
444 M0_BITS(M0_CST_IOS, M0_CST_CAS));
457 uint32_t nr_sdevs = 0;
465 M0_CONF_PVER_SITEVS_FID,
466 M0_CONF_SITEV_RACKVS_FID,
467 M0_CONF_RACKV_ENCLVS_FID,
468 M0_CONF_ENCLV_CTRLVS_FID,
469 M0_CONF_CTRLV_DRIVEVS_FID);
492 ctx->sc_type ==
svc->cs_type);
528 uint32_t nr_failures,
534 nr_failures, nr_spare, pool_width);
546 m0_pool_version_bob_init(
pv);
547 pool_version_tlink_init(
pv);
561 if (!
pver->pv_is_dirty)
632 const struct m0_fid *hint,
642 return M0_RC(-EINVAL);
650 if (
rc == 0 || hint !=
NULL)
720 uint32_t nr_nodes = 0;
725 M0_CONF_PVER_SITEVS_FID,
726 M0_CONF_SITEV_RACKVS_FID,
727 M0_CONF_RACKV_ENCLVS_FID,
728 M0_CONF_ENCLV_CTRLVS_FID);
754 uint32_t failure_level;
765 pver->pv_u.subtree.pvs_attr.pa_N,
766 pver->pv_u.subtree.pvs_attr.pa_K,
767 pver->pv_u.subtree.pvs_attr.pa_S) ?:
775 sizeof(
pver->pv_u.subtree.pvs_tolerance));
791 pool_version_tlink_fini(
pv);
792 m0_pool_version_bob_fini(
pv);
826 pver->pv_is_stale =
true;
866 -EINVAL, -EHOSTUNREACH,
867 -ECONNREFUSED, -EIO)),
893 bool services_connect)
896 const char **endpoint;
905 "Only single endpoint per service is supported for now");
908 already_in ?
"unchanged" :
"new",
921 if (services_connect) {
946 mach = m0_reqh_rpc_mach_tlist_head(
956 bool service_connect)
986 bool service_connect)
1002 M0_CONF_ROOT_NODES_FID,
1003 M0_CONF_NODE_PROCESSES_FID,
1004 M0_CONF_PROCESS_SERVICES_FID);
1031 !M0_IN(
svc->cs_type, (M0_CST_CONFD, M0_CST_RMS, M0_CST_HA,
1032 M0_CST_FIS, M0_CST_DTM0)))) {
1056 &
rep->hae_active_rm_fid))) {
1202 pools_common_svc_ctx_tlink_del_fini(
ctx);
1203 pools_common_svc_ctx_tlink_init_at_tail(
ctx, &
ctx->sc_pc->
1204 pc_abandoned_svc_ctxs);
1276 pools_tlink_del_fini(
pool);
1285 pool_version_tlink_del_fini(
pver);
1321 if (layout !=
NULL) {
1414 M0_BITS(M0_CST_IOS, M0_CST_CAS),
1453 .pc_cur_pver =
NULL,
1513 rc =
M0_ERR_INFO(-ENOENT,
"The mandatory rmservice is missing." 1514 "Make sure this is specified in the conf db.");
1590 M0_ASSERT(pools_common_svc_ctx_tlist_is_empty(
1656 M0_CONF_ROOT_POOLS_FID,
1657 M0_CONF_POOL_PVERS_FID);
1832 M0_CONF_ROOT_POOLS_FID);
1899 M0_INTERNAL uint64_t
1907 uint32_t ha2pm_statemap [] = {
1917 return ha2pm_statemap[hastate];
2054 pm = &
pver->pv_mach;
2083 pm = &
pver->pv_mach;
2121 #undef M0_TRACE_SUBSYSTEM const struct m0_conf_obj_type * m0_conf_obj_type(const struct m0_conf_obj *obj)
M0_INTERNAL struct m0_layout * m0_layout_find(struct m0_layout_domain *dom, uint64_t lid)
union m0_be_clink::@200 bc_u
M0_INTERNAL int m0_dix_pool_version_get(struct m0_pools_common *pc, struct m0_pool_version **pv)
static bool service_ctx_ha_entrypoint_cb(struct m0_clink *clink)
struct m0_layout_instance * pc_md_pool_linst
static bool pools_common_conf_expired_cb(struct m0_clink *clink)
struct m0_poolmach_state * pm_state
static struct m0_reqh_service_ctx * active_rm_ctx_find(struct m0_pools_common *pc)
static const struct m0_bob_type pver_bob
struct m0_fid hae_active_rm_fid
static int pool_mds_map_init(struct m0_pools_common *pc)
static struct m0_addb2_philter p
M0_INTERNAL void m0_pools_common_fini(struct m0_pools_common *pc)
static int __service_ctx_create(struct m0_pools_common *pc, struct m0_conf_service *cs, bool services_connect)
struct m0_conf_obj * cc_root
M0_INTERNAL const char * m0_rpc_link_end_point(const struct m0_rpc_link *rlink)
static bool is_dix_pool(const struct m0_pools_common *pc, const struct m0_pool *pool)
M0_INTERNAL int m0_pool_version_append(struct m0_pools_common *pc, struct m0_conf_pver *pver, struct m0_pool_version **pv)
M0_INTERNAL int m0_fd_tile_build(const struct m0_conf_pver *pv, struct m0_pool_version *pool_ver, uint32_t *failure_level)
struct m0_ha_entrypoint_client h_entrypoint_client
#define M0_ALLOC_ARR(arr, nr)
const struct m0_conf_obj_type M0_CONF_OBJV_TYPE
M0_INTERNAL void m0_pool_fini(struct m0_pool *pool)
static bool is_mds(const struct m0_conf_obj *obj)
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
M0_INTERNAL int m0_poolmach_state_transit(struct m0_poolmach *pm, const struct m0_poolmach_event *event)
struct m0_conf_obj ce_obj
M0_INTERNAL uint64_t m0_fid_hash(const struct m0_fid *fid)
M0_INTERNAL void m0_clink_init(struct m0_clink *link, m0_chan_cb_t cb)
struct m0_pool * pc_dix_pool
static bool profile_has_pool(const struct m0_conf_profile *profile, const struct m0_fid *pool)
M0_INTERNAL void m0_clink_del_lock(struct m0_clink *link)
M0_INTERNAL int m0_confc_profile_open(struct m0_confc *confc, const struct m0_fid *fid, struct m0_conf_profile **out)
struct m0_pool_version * pm_pver
M0_INTERNAL int m0_motr_stob_reopen(struct m0_reqh *reqh, struct m0_poolmach *pm, uint32_t dev_id)
M0_INTERNAL struct m0_pool_version * m0_pool_version_find(struct m0_pools_common *pc, const struct m0_fid *id)
M0_INTERNAL int m0_pool_version_init_by_conf(struct m0_pool_version *pv, struct m0_conf_pver *pver, struct m0_pool *pool, struct m0_pools_common *pc)
struct m0_chan rh_conf_cache_ready_async
struct m0_conf_obj rt_obj
M0_INTERNAL struct m0_conf_obj * m0_conf_cache_lookup(const struct m0_conf_cache *cache, const struct m0_fid *id)
struct m0_conf_obj pl_obj
struct m0_pool_version * pv
struct m0_poolmach pv_mach
#define M0_LOG(level,...)
struct m0_mutex pc_rm_lock
M0_INTERNAL bool m0_pools_is_locked(struct m0_pools_common *pc)
uint32_t pv_fd_tol_vec[M0_CONF_PVER_HEIGHT]
const struct m0_conf_obj_type M0_CONF_PVER_TYPE
const struct m0_conf_obj_type M0_CONF_SERVICE_TYPE
M0_INTERNAL int m0_poolmach_init_by_conf(struct m0_poolmach *pm, struct m0_conf_pver *pver)
struct m0_reqh_service_ctx * pc_rm_ctx
M0_INTERNAL void m0_reqh_service_ctx_subscribe(struct m0_reqh_service_ctx *ctx)
M0_INTERNAL void m0_uint128_init(struct m0_uint128 *u128, const char *magic)
const struct m0_pver_policy_ops * pp_ops
M0_INTERNAL void m0_poolnode_clink_del(struct m0_clink *cl)
M0_INTERNAL bool m0_reqh_service_ctx_is_connected(const struct m0_reqh_service_ctx *ctx)
M0_INTERNAL int m0_conf_diter_next_sync(struct m0_conf_diter *it, bool(*filter)(const struct m0_conf_obj *obj))
M0_INTERNAL void m0_reqh_service_ctx_destroy(struct m0_reqh_service_ctx *ctx)
struct m0_pool * pc_md_pool
static struct m0_be_emap_cursor it
struct m0_conf_obj pv_obj
M0_INTERNAL enum m0_ha_entrypoint_client_state m0_ha_entrypoint_client_state_get(struct m0_ha_entrypoint_client *ecl)
void(* ppo_fini)(struct m0_pver_policy *pver_policy)
M0_INTERNAL bool m0_clink_is_armed(const struct m0_clink *link)
static struct m0_addb2_mach * mach
#define m0_exists(var, nr,...)
M0_INTERNAL struct m0 * m0_get(void)
static int pools_common_refresh_locked(struct m0_pools_common *pc)
int(* ppo_get)(struct m0_pools_common *pc, const struct m0_pool *pool, struct m0_pool_version **pver)
static bool is_actual_pver(const struct m0_conf_obj *obj)
struct m0_conf_cache * co_cache
#define container_of(ptr, type, member)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
M0_INTERNAL int m0_pools_setup(struct m0_pools_common *pc, const struct m0_fid *profile, struct m0_sm_group *sm_grp, struct m0_dtm *dtm)
M0_INTERNAL void m0_reqh_service_connect_wait(struct m0_reqh_service_ctx *ctx)
M0_INTERNAL const char * m0_rpc_machine_ep(const struct m0_rpc_machine *rmach)
M0_INTERNAL bool m0_fid_is_set(const struct m0_fid *fid)
struct m0_fop_getxattr_rep * rep
M0_INTERNAL struct m0_reqh_service_ctx * m0_pools_common_service_ctx_find(const struct m0_pools_common *pc, const struct m0_fid *id, enum m0_conf_service_type type)
struct m0_poolmach * pn_pm
static struct m0_pools_common pc
M0_TL_DESCR_DEFINE(be_pool, "list of be_pool_items", static, struct m0_be_pool_item, bpli_link, bpli_magic, M0_BE_POOL_MAGIC, M0_BE_POOL_HEAD_MAGIC)
M0_INTERNAL int m0_pool_init(struct m0_pool *pool, const struct m0_fid *id, enum m0_pver_policy_code pver_policy)
static bool is_local_svc(const struct m0_conf_service *svc, enum m0_conf_service_type stype)
uint64_t pc_nr_svcs[M0_CST_NR]
struct m0_pooldev * pst_devices_array
struct m0_be_clink pd_clink
M0_INTERNAL int m0_confc_root_open(struct m0_confc *confc, struct m0_conf_root **root)
static int pools_common_refresh(struct m0_pools_common *pc)
M0_INTERNAL int m0_poolmach_spare_build(struct m0_poolmach *mach, struct m0_pool *pool, enum m0_conf_pver_kind kind)
M0_INTERNAL struct m0_pool_version * m0_pool_version_md_get(const struct m0_pools_common *pc)
M0_INTERNAL struct m0_fid * m0_reqh2profile(struct m0_reqh *reqh)
static bool obj_is_ios_cas_diskv(const struct m0_conf_obj *obj)
M0_INTERNAL int m0_fd_tree_build(const struct m0_conf_pver *pv, struct m0_fd_tree *tree)
static struct m0_pool * pool_find(struct m0_pools_common *pc, const struct m0_fid *pool)
M0_INTERNAL int m0_reqh_service_disconnect_wait(struct m0_reqh_service_ctx *ctx)
static void pools_common__pools_update_or_cleanup(struct m0_pools_common *pc)
#define M0_ERR_INFO(rc, fmt,...)
struct m0_reqh_service_ctx ** pc_mds_map
struct m0_conf_root * root
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL bool m0_pools_common_conf_ready_async_cb(struct m0_clink *clink)
const char ** cs_endpoints
M0_INTERNAL void m0_poolmach_fop_fini(void)
M0_INTERNAL void m0_pool_versions_stale_mark(struct m0_pools_common *pc, struct m0_confc_update_state *s)
M0_INTERNAL int m0__pools_common_init(struct m0_pools_common *pc, struct m0_rpc_machine *rmach, struct m0_conf_root *root)
M0_INTERNAL const char * m0_pool_dev_state_to_str(enum m0_pool_nd_state state)
static bool m0_conf_service_type_is_valid(enum m0_conf_service_type t)
M0_INTERNAL uint64_t m0_pool_version2layout_id(const struct m0_fid *pv_fid, uint64_t lid)
M0_INTERNAL int m0_pool_version_get(struct m0_pools_common *pc, const struct m0_fid *pool, struct m0_pool_version **pv)
M0_INTERNAL struct m0_confc * m0_reqh2confc(struct m0_reqh *reqh)
static bool pool_version_invariant(const struct m0_pool_version *pv)
#define M0_AMB(obj, ptr, field)
const struct m0_conf_obj_type M0_CONF_ENCLOSURE_TYPE
static const struct socktype stype[]
#define m0_tl_teardown(name, head, obj)
struct m0_fid rt_imeta_pver
M0_INTERNAL struct m0_pver_policy_type * m0_pver_policy_type_find(enum m0_pver_policy_code code)
M0_INTERNAL int m0_reqh_service_ctx_create(struct m0_conf_obj *svc_obj, enum m0_conf_service_type stype, struct m0_rpc_machine *rmach, const char *addr, uint32_t max_rpc_nr_in_flight, struct m0_reqh_service_ctx **out)
M0_INTERNAL int m0_conf_devices_count(struct m0_confc *confc, uint64_t svc_types, uint32_t *nr_devices)
struct m0_fd_tree pv_fd_tree
M0_INTERNAL int m0_pools_init(void)
M0_INTERNAL int m0_pool_device_reopen(struct m0_poolmach *pm, struct m0_reqh *reqh)
M0_BOB_DEFINE(static, &pver_bob, m0_pool_version)
struct m0_clink pc_conf_exp
int(* ppto_create)(struct m0_pver_policy **out)
struct m0_poolmach * pd_pm
M0_INTERNAL int m0_poolmach_fop_init(void)
M0_INTERNAL void m0_reqh_service_connect(struct m0_reqh_service_ctx *ctx)
static bool disks_poolmach_state_update_cb(struct m0_clink *cl)
static struct m0_confc * confc
M0_INTERNAL bool m0_mutex_is_locked(const struct m0_mutex *mutex)
M0_INTERNAL int m0_pool_version_device_map_init(struct m0_pool_version *pv, struct m0_conf_pver *pver, struct m0_pools_common *pc)
M0_INTERNAL void m0_pools_common_service_ctx_connect_sync(struct m0_pools_common *pc)
static struct net_test_cmd_node nodes[NTC_MULTIPLE_NODES]
M0_INTERNAL void m0_fd_tree_destroy(struct m0_fd_tree *tree)
struct m0_conf_obj * m0_conf_obj_grandparent(const struct m0_conf_obj *obj)
static void pool_version__layouts_evict(struct m0_pool_version *pv, struct m0_layout_domain *ldom)
struct m0_fd_tile pv_fd_tile
M0_INTERNAL int m0_pool_version_init(struct m0_pool_version *pv, const struct m0_fid *id, struct m0_pool *pool, uint32_t pool_width, uint32_t nr_nodes, uint32_t nr_data, uint32_t nr_failures, uint32_t nr_spare)
struct m0_tl rh_rpc_machines
static void pool_device_state_last_revert(struct m0_pools_common *pc, struct m0_fid *dev_fid, struct m0_poolmach *pm_stop)
M0_INTERNAL void m0_pool_versions_fini(struct m0_pool *pool)
struct m0_conf_cache cc_cache
M0_INTERNAL struct m0_reqh * m0_conf_obj2reqh(const struct m0_conf_obj *obj)
static void pools_common__ctx_subscribe_or_abandon(struct m0_pools_common *pc)
M0_INTERNAL void m0_pools_service_ctx_destroy(struct m0_pools_common *pc)
M0_INTERNAL bool m0_disk_is_of_type(const struct m0_conf_obj *obj, uint64_t svc_types)
M0_INTERNAL int m0_reqh_mdpool_layout_build(struct m0_reqh *reqh)
static bool obj_is_enclosurev(const struct m0_conf_obj *obj)
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
M0_INTERNAL int m0_layout_init_by_pver(struct m0_layout_domain *dom, struct m0_pool_version *pv, int *count)
M0_INTERNAL int m0_conf_obj_find_lock(struct m0_conf_cache *cache, const struct m0_fid *id, struct m0_conf_obj **out)
struct m0_chan co_ha_chan
struct m0_pools_common * pv_pc
const struct m0_conf_obj_type M0_CONF_DRIVE_TYPE
struct m0_layout_domain rh_ldom
M0_INTERNAL void m0_pools_fini(void)
M0_INTERNAL void m0_clink_cleanup(struct m0_clink *link)
M0_INTERNAL void m0_reqh_service_ctx_unsubscribe(struct m0_reqh_service_ctx *ctx)
static int pools_common__update_by_conf(struct m0_pools_common *pc)
const struct m0_pver_policy_type_ops * ppt_ops
enum m0_conf_service_type cs_type
#define M0_CONF_CAST(ptr, type)
struct m0_conf_sdev * ck_sdev
M0_INTERNAL bool m0_confc_is_inited(const struct m0_confc *confc)
M0_INTERNAL void m0_pooldev_clink_add(struct m0_clink *link, struct m0_chan *chan)
struct m0_pool_device_to_service * pc_dev2svc
static struct m0_clink clink[RDWR_REQUEST_MAX]
struct m0_confc * pc_confc
static bool pools_common_invariant(const struct m0_pools_common *pc)
M0_INTERNAL void m0_poolnode_clink_add(struct m0_clink *link, struct m0_chan *chan)
#define m0_confc_open_sync(result, origin,...)
static int pool_device_index(const struct m0_poolmach *pm, const struct m0_fid *fid)
static struct fdmi_ctx ctx
struct m0_fid pds_sdev_fid
static int _nodes_count(struct m0_conf_pver *pver, uint32_t *nodes)
M0_INTERNAL int m0_poolmach_init(struct m0_poolmach *pm, struct m0_pool_version *pver, uint32_t nr_nodes, uint32_t nr_devices, uint32_t nr_spare, uint32_t max_node_failures, uint32_t max_device_failures)
struct m0_uint128 pa_seed
M0_INTERNAL struct m0_reqh * m0_confc2reqh(const struct m0_confc *confc)
M0_INTERNAL void m0_pool_version_fini(struct m0_pool_version *pv)
static struct m0_pool pool
struct m0_reqh_service_ctx * pds_ctx
struct m0_rpc_machine * pc_rmach
struct m0_conf_node * ce_node
M0_INTERNAL bool m0_fid_eq(const struct m0_fid *fid0, const struct m0_fid *fid1)
#define m0_forall(var, nr,...)
void m0_clink_add_lock(struct m0_chan *chan, struct m0_clink *link)
M0_INTERNAL struct m0_conf_obj * m0_conf_diter_result(const struct m0_conf_diter *it)
struct m0_conf_obj pc_obj
#define m0_conf_diter_init(iter, confc, origin,...)
M0_INTERNAL uint32_t m0_ha2pm_state_map(enum m0_ha_obj_state hastate)
static struct m0_fid pv_fid
struct m0_tl pc_abandoned_svc_ctxs
M0_INTERNAL int64_t m0_ref_read(const struct m0_ref *ref)
static int dix_pool_version_get_locked(struct m0_pools_common *pc, struct m0_pool_version **pv)
#define M0_MAGIX_OFFSET(type, field)
static struct m0_fid profile
M0_INTERNAL int m0_pools_common_init(struct m0_pools_common *pc, struct m0_rpc_machine *rmach)
M0_INTERNAL void m0_pools_lock(struct m0_pools_common *pc)
m0_ha_entrypoint_client_state
const int m0_lid_to_unit_map_nr
static struct m0_chan chan[RDWR_REQUEST_MAX]
#define M0_FI_ENABLED(tag)
const struct m0_conf_obj_type M0_CONF_NODE_TYPE
M0_INTERNAL struct m0_pool * m0_pool_find(struct m0_pools_common *pc, const struct m0_fid *pool)
static void pool__layouts_evict(struct m0_pool *pool, struct m0_layout_domain *ldom)
M0_INTERNAL int m0_conf_pver_find_by_fid(const struct m0_fid *fid, const struct m0_conf_root *root, struct m0_conf_pver **out)
static int service_ctxs_create(struct m0_pools_common *pc, bool service_connect)
struct m0_chan rh_conf_cache_exp
#define M0_ALLOC_PTR(ptr)
struct m0_conf_obj cn_obj
M0_INTERNAL int m0_pool_device_state_update(struct m0_reqh *reqh, struct m0_be_tx *tx, struct m0_fid *dev_fid, enum m0_pool_nd_state new_state)
M0_INTERNAL int m0_pools_service_ctx_create(struct m0_pools_common *pc)
static const char * local_ep(const struct m0_cm *cm)
M0_INTERNAL struct m0_pool_version * m0_pool_version_dix_get(const struct m0_pools_common *pc)
struct m0_conf_obj cs_obj
static int pool_version_get_locked(struct m0_pools_common *pc, const struct m0_fid *pool, struct m0_pool_version **pv)
static bool reqh_svc_ctx_is_in_pools(struct m0_pools_common *pc, struct m0_conf_service *cs)
M0_INTERNAL void m0_conf_diter_fini(struct m0_conf_diter *it)
struct m0_pver_policy * po_pver_policy
struct m0_be_clink pn_clink
static struct m0_net_test_service svc
static int _pool_create(struct m0_pool **out, const struct m0_conf_pool *conf_pool)
struct m0_conf_obj sd_obj
M0_INTERNAL void m0_pools_unlock(struct m0_pools_common *pc)
static void reqh_service_ctx_abandon(struct m0_reqh_service_ctx *ctx)
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
M0_INTERNAL void m0_clink_fini(struct m0_clink *link)
static bool reqh_service_ctx_is_matching(const struct m0_reqh_service_ctx *ctx, const struct m0_conf_obj *svc)
static int pools_common__dev2ios_build(struct m0_pools_common *pc)
struct m0_pools_common * rh_pools
uint32_t psu_device_index
M0_INTERNAL void m0_poolmach_fini(struct m0_poolmach *pm)
static bool node_poolmach_state_update_cb(struct m0_clink *cl)
#define IS_IN_ARRAY(idx, array)
M0_INTERNAL struct m0_chan * m0_ha_entrypoint_client_chan(struct m0_ha_entrypoint_client *ecl)
static int active_rm_ctx_create(struct m0_pools_common *pc, bool service_connect)
M0_INTERNAL struct m0_confc * m0_confc_from_obj(const struct m0_conf_obj *obj)
static bool obj_is_service(const struct m0_conf_obj *obj)
M0_INTERNAL void m0_confc_close(struct m0_conf_obj *obj)
static struct m0_reqh_service_ctx * service_ctx_find_by_type(const struct m0_pools_common *pc, enum m0_conf_service_type type)
struct m0_clink pc_conf_ready_async
M0_INTERNAL void m0_fd_tile_destroy(struct m0_fd_tile *tile)
#define M0_ASSERT_INFO(cond, fmt,...)
M0_INTERNAL struct m0_rpc_session * m0_pools_common_active_rm_session(struct m0_pools_common *pc)
M0_INTERNAL void m0_layout_instance_fini(struct m0_layout_instance *li)
struct m0_rpc_session rlk_sess
static void dix_pool_setup(struct m0_pools_common *pc, const struct m0_fid *imeta_pver)
M0_INTERNAL bool m0_conf_cache_contains(struct m0_conf_cache *cache, const struct m0_fid *fid)
M0_INTERNAL bool m0_conf_obj_is_pool(const struct m0_conf_obj *obj)
M0_INTERNAL void m0_layout_put(struct m0_layout *l)
static void abandoned_svc_ctxs_cleanup(struct m0_pools_common *pc)
M0_INTERNAL void m0_reqh_service_disconnect(struct m0_reqh_service_ctx *ctx)
M0_INTERNAL void m0_pooldev_clink_del(struct m0_clink *cl)
M0_INTERNAL int m0_pool_versions_setup(struct m0_pools_common *pc)
M0_INTERNAL struct m0_pool_version * m0_pool_clean_pver_find(const struct m0_pool *pool)
M0_TL_DEFINE(be_pool, static, struct m0_be_pool_item)
M0_INTERNAL void m0_pool_versions_destroy(struct m0_pools_common *pc)
enum m0_pool_nd_state pe_state
static bool is_md_pool(const struct m0_pools_common *pc, const struct m0_pool *pool)
struct m0_rpc_link sc_rlink
M0_INTERNAL void m0_conf_cache_lock(struct m0_conf_cache *cache)
#define m0_tl_find(name, var, head,...)
M0_INTERNAL struct m0_pool_version * m0_pool_version_lookup(const struct m0_pools_common *pc, const struct m0_fid *id)
#define m0_tl_for(name, head, obj)
static struct m0_addb2_source * s
M0_INTERNAL bool m0_conf_service_ep_is_known(const struct m0_conf_obj *svc_obj, const char *ep_addr)
M0_INTERNAL int m0_conf_pver_formulaic_from_virtual(const struct m0_conf_pver *virtual, const struct m0_conf_root *root, const struct m0_conf_pver **out)
static int pool_from_virtual_pver(const struct m0_conf_pver *virtual, struct m0_confc *confc, struct m0_conf_pool **out)
struct m0_pdclust_attr pv_attr
struct m0_ha_entrypoint_rep ecl_rep
struct m0_pool_spare_usage * pst_spare_usage_array
M0_INTERNAL void m0_conf_cache_unlock(struct m0_conf_cache *cache)
static void pools_common__md_pool_cleanup(struct m0_pools_common *pc)
static void service_ctxs_destroy(struct m0_pools_common *pc)
struct m0_conf_obj ck_obj
struct m0_conf_obj * cv_real
struct m0_clink pc_ha_clink
M0_INTERNAL uint64_t m0_hash(uint64_t x)
struct m0_ha_entrypoint_client * pc_ha_ecl
M0_INTERNAL void m0_pools_destroy(struct m0_pools_common *pc)
struct m0_tl po_failed_devices
static int mds_map_fill(struct m0_pools_common *pc, const struct m0_conf_enclosure *encl)
M0_INTERNAL void m0_poolmach_state_last_cancel(struct m0_poolmach *pm)