23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_SNSCM 494 uint32_t segments_nr;
519 0, segments_nr, segment_size,
520 colours, M0_0VEC_SHIFT,
524 0, segments_nr, segment_size,
525 colours, M0_0VEC_SHIFT,
545 return ctx->sc_type == M0_CST_IOS;
611 uint32_t nr_devs = 0;
622 if (pd->pd_state == state) {
625 pd_state[pd->pd_state],
698 size_t *tread,
size_t *twrite)
727 M0_LOG(
M0_WARN,
"Time: %llu Read Size: %llu Write size: %llu",
730 (
unsigned long long)tread, (
unsigned long long)twrite);
766 .hse_errcode = (uint32_t)
rc,
796 uint64_t data_seg_nr)
798 return data_seg_nr %
bp->nbp_seg_nr ?
799 data_seg_nr /
bp->nbp_seg_nr + 1 :
800 data_seg_nr /
bp->nbp_seg_nr;
823 while (rem_bufs > 0) {
838 if (
bp->nbp_free > 0)
839 bp->nbp_ops->nbpo_not_empty(
bp);
863 uint64_t cp_data_seg_nr;
865 uint32_t nr_units_in;
882 return nr_cp_bufs * nr_cps_in;
950 #undef M0_TRACE_SUBSYSTEM
M0_INTERNAL m0_bcount_t m0_net_domain_get_max_buffer_segment_size(struct m0_net_domain *dom)
M0_INTERNAL void m0_net_buffer_pool_fini(struct m0_net_buffer_pool *pool)
#define M0_ALLOC_ARR(arr, nr)
struct m0_rm_resource_type rc_rt
struct m0_sns_cm_buf_pool sc_obp
const struct m0_sns_cm_helpers rebalance_helpers
struct m0_htable sc_file_ctx
struct m0_rm_domain rc_dom
M0_INTERNAL struct m0_sns_cm * cm2sns(struct m0_cm *cm)
M0_INTERNAL void m0_sns_cm_iter_stop(struct m0_sns_cm_iter *it)
static void buf_available(struct m0_net_buffer_pool *pool)
M0_INTERNAL void m0_cm_type_deregister(struct m0_cm_type *cmtype)
#define M0_LOG(level,...)
M0_INTERNAL void m0_net_buffer_pool_unlock(struct m0_net_buffer_pool *pool)
void m0_console_printf(const char *fmt,...)
M0_INTERNAL int m0_sns_cm_has_space_for(struct m0_sns_cm *scm, struct m0_pdclust_layout *pl, uint64_t nr_bufs)
const struct m0_net_buffer_pool_ops * nbp_ops
M0_INTERNAL void m0_ios_cdom_get(struct m0_reqh *reqh, struct m0_cob_domain **out)
static void sns_cm_bp_init(struct m0_sns_cm_buf_pool *sbp)
struct m0_layout * sf_layout
m0_time_t sc_last_status_print_time
static struct m0_sns_cm * scm
M0_INTERNAL int m0_sns_cm_setup(struct m0_cm *cm)
M0_INTERNAL size_t m0_sns_cm_buffer_pool_provision(struct m0_net_buffer_pool *bp, size_t bufs_nr)
M0_INTERNAL void m0_rm_domain_init(struct m0_rm_domain *dom)
M0_INTERNAL void m0_fom_wait_on(struct m0_fom *fom, struct m0_chan *chan, struct m0_fom_callback *cb)
struct m0_sns_cm_buf_pool sc_ibp
#define container_of(ptr, type, member)
M0_INTERNAL int m0_sns_cm_buf_attach(struct m0_net_buffer_pool *bp, struct m0_cm_cp *cp)
struct m0_pools_common * rc_pc
M0_INTERNAL int m0_sns_cm_iter_init(struct m0_sns_cm_iter *it)
static struct m0_pools_common pc
M0_INTERNAL struct m0_sns_cm_file_ctx * m0_sns_cm_fctx_get(struct m0_sns_cm *scm, const struct m0_cm_ag_id *id)
M0_INTERNAL void m0_sns_cm_ag_iter_fini(struct m0_sns_cm_ag_iter *ai)
M0_INTERNAL void m0_sns_cm_ha_msg(struct m0_cm *cm, struct m0_ha_msg *msg, int rc)
M0_INTERNAL void m0_chan_signal(struct m0_chan *chan)
#define M0_ERR_INFO(rc, fmt,...)
return M0_ERR(-EOPNOTSUPP)
struct m0_mutex sc_file_ctx_mutex
const struct m0_sns_cm_helpers repair_helpers
M0_INTERNAL struct m0_net_buffer * m0_cm_buffer_get(struct m0_net_buffer_pool *bp, uint64_t colour)
M0_INTERNAL int m0_sns_cm_start(struct m0_cm *cm)
M0_INTERNAL bool m0_net_buffer_pool_invariant(const struct m0_net_buffer_pool *pool)
M0_INTERNAL void m0_sns_cm_stop(struct m0_cm *cm)
M0_INTERNAL void m0_chan_init(struct m0_chan *chan, struct m0_mutex *ch_guard)
M0_INTERNAL bool m0_net_buffer_pool_prune(struct m0_net_buffer_pool *pool)
m0_time_t m0_time_now(void)
M0_TL_DECLARE(cs_eps, M0_INTERNAL, struct cs_endpoint_and_xprt)
M0_INTERNAL uint64_t m0_sns_cm_cp_buf_nr(struct m0_net_buffer_pool *bp, uint64_t data_seg_nr)
void(* nbpo_not_empty)(struct m0_net_buffer_pool *)
M0_INTERNAL void m0_cm_cp_buf_add(struct m0_cm_cp *cp, struct m0_net_buffer *nb)
M0_INTERNAL void m0_net_buffer_pool_lock(struct m0_net_buffer_pool *pool)
struct m0_sns_cm_ag_iter sc_ag_it
M0_EXTERN struct m0_cm_type sns_repair_cmt
M0_INTERNAL int m0_sns_cm_prepare(struct m0_cm *cm)
M0_INTERNAL struct m0_pdclust_layout * m0_layout_to_pdl(const struct m0_layout *l)
struct m0_net_xprt * m0_net_xprt_default_get(void)
M0_INTERNAL int m0_sns_cm_rm_init(struct m0_sns_cm *scm)
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
M0_INTERNAL uint64_t m0_reqh_nr_localities(const struct m0_reqh *reqh)
M0_TL_DESCR_DECLARE(cs_eps, extern)
M0_INTERNAL struct m0_net_domain * m0_cs_net_domain_locate(struct m0_motr *cctx, const char *xprt_name)
M0_INTERNAL int m0_sns_cm_ag_in_cp_units(const struct m0_sns_cm *scm, const struct m0_cm_ag_id *id, struct m0_sns_cm_file_ctx *fctx, uint32_t *in_cp_nr, uint32_t *in_units_nr, struct m0_cm_proxy_in_count *pcount)
struct m0_cob_domain * sc_cob_dom
static void sns_cm_bp_fini(struct m0_sns_cm_buf_pool *sbp)
M0_INTERNAL struct m0_reqh * m0_sns_cm2reqh(const struct m0_sns_cm *snscm)
static struct m0_pool pool
M0_INTERNAL void m0_sns_cm_buf_wait(struct m0_sns_cm_buf_pool *sbp, struct m0_fom *fom)
static void sns_cm_buffer_pools_prune(struct m0_sns_cm *scm)
M0_INTERNAL void m0_sns_cm_type_deregister(void)
M0_INTERNAL void m0_sns_cm_fctx_cleanup(struct m0_sns_cm *scm)
M0_INTERNAL bool m0_sns_is_peer(struct m0_cm *cm, struct m0_reqh_service_ctx *ctx)
static void bp_below_threshold(struct m0_net_buffer_pool *bp)
static bool sns_cm_status_get(struct m0_sns_cm *scm, size_t *tread, size_t *twrite)
static uint32_t min32u(uint32_t a, uint32_t b)
struct m0_net_buffer_pool sb_bp
struct m0_mutex nbp_mutex
M0_INTERNAL uint64_t m0_sns_cm_data_seg_nr(struct m0_sns_cm *scm, struct m0_pdclust_layout *pl)
const struct m0_net_buffer_pool_ops bp_ops
M0_EXTERN struct m0_cm_type sns_rebalance_cmt
static struct m0_sns_cm_cp scp
#define M0_ALLOC_PTR(ptr)
uint64_t sc_ibp_reserved_nr
struct m0_reqh_service cm_service
M0_INTERNAL struct m0_fom_domain * m0_fom_dom(void)
M0_INTERNAL int m0_sns_cm_ag__next(struct m0_sns_cm *scm, const struct m0_cm_ag_id *id_curr, struct m0_cm_ag_id *id_next)
m0_time_t m0_time_sub(const m0_time_t t1, const m0_time_t t2)
size_t * sc_total_read_size
M0_INTERNAL int m0_net_buffer_pool_provision(struct m0_net_buffer_pool *pool, uint32_t buf_nr)
struct m0_pools_common * rh_pools
M0_INTERNAL int m0_sns_cm_type_register(void)
M0_INTERNAL int32_t m0_net_domain_get_max_buffer_segments(struct m0_net_domain *dom)
M0_INTERNAL void m0_sns_cm_cancel_reservation(struct m0_sns_cm *scm, size_t nr_bufs)
static void buffer_pool_prune(struct m0_net_buffer_pool *bp)
struct m0_sns_cm_rm_ctx sc_rm_ctx
M0_INTERNAL void m0_sns_cm_print_status(struct m0_sns_cm *scm)
M0_INTERNAL int m0_rm_type_register(struct m0_rm_domain *dom, struct m0_rm_resource_type *rt)
M0_INTERNAL int m0_sns_cm_iter_start(struct m0_sns_cm_iter *it)
m0_bcount_t cc_sns_buf_nr
M0_INTERNAL int m0_sns_cm_fail_dev_log(struct m0_cm *cm, enum m0_pool_nd_state state)
#define M0_MKTIME(secs, ns)
M0_INTERNAL int64_t m0_sns_cm_incoming_reserve_bufs(struct m0_sns_cm *scm, const struct m0_cm_ag_id *id)
static struct m0_sns_cm_file_ctx fctx
struct m0_sns_cm_iter sc_it
M0_INTERNAL struct m0_cm_cp * m0_sns_cm_cp_alloc(struct m0_cm *cm)
static struct bulkio_params * bp
M0_INTERNAL void m0_sns_cm_fini(struct m0_cm *cm)
struct m0_pools_common cc_pools_common
M0_INTERNAL void m0_rm_type_deregister(struct m0_rm_resource_type *rt)
M0_INTERNAL uint64_t cp_home_loc_helper(const struct m0_cm_cp *cp)
M0_INTERNAL bool m0_cm_is_locked(const struct m0_cm *cm)
#define m0_tl_for(name, head, obj)
M0_INTERNAL void m0_chan_fini_lock(struct m0_chan *chan)
M0_INTERNAL int m0_net_buffer_pool_init(struct m0_net_buffer_pool *pool, struct m0_net_domain *ndom, uint32_t threshold, uint32_t seg_nr, m0_bcount_t seg_size, uint32_t colours, unsigned shift, bool dont_dump)
M0_INTERNAL struct m0_motr * m0_cs_ctx_get(struct m0_reqh *reqh)
M0_INTERNAL void m0_sns_cm_rm_fini(struct m0_sns_cm *scm)
M0_INTERNAL void m0_sns_cm_fctx_put(struct m0_sns_cm *scm, const struct m0_cm_ag_id *id)
M0_INTERNAL int m0_sns_cm_ag_next(struct m0_cm *cm, const struct m0_cm_ag_id *id_curr, struct m0_cm_ag_id *id_next)
M0_INTERNAL uint64_t m0_pdclust_unit_size(const struct m0_pdclust_layout *pl)
M0_INTERNAL void m0_sns_cm_iter_fini(struct m0_sns_cm_iter *it)
M0_INTERNAL int m0_sns_cm_ag_iter_init(struct m0_sns_cm_ag_iter *ai)
M0_INTERNAL void m0_sns_cm_flock_resource_set(struct m0_sns_cm *scm)
M0_INTERNAL void m0_sns_cm_reserve_space(struct m0_sns_cm *scm, size_t nr_bufs)
M0_INTERNAL int m0_cm_type_register(struct m0_cm_type *cmtype)
struct m0_tl po_failed_devices
size_t * sc_total_write_size