30 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_DIX 73 return pver->pv_mach.pm_state->pst_nr_devices;
83 return &
pver->pv_mach.pm_state->pst_devices_array[
tgt];
125 M0_PRE(len <=
sizeof(uint64_t));
192 dst->ld_hash_fnc =
src->ld_hash_fnc;
193 dst->ld_pver =
src->ld_pver;
226 M0_DEFAULT_LAYOUT_ID);
242 "N=%u. Only layouts with N=1 are supported.",
335 return layout1->
u.dl_id == layout2->
u.dl_id;
338 ldesc1 = &layout1->
u.dl_desc;
339 ldesc2 = &layout2->
u.dl_desc;
346 #undef M0_TRACE_SUBSYSTEM M0_INTERNAL struct m0_layout * m0_layout_find(struct m0_layout_domain *dom, uint64_t lid)
struct m0_poolmach_state * pm_state
M0_INTERNAL uint32_t m0_dix_liter_K(struct m0_dix_layout_iter *iter)
struct m0_pool_version * l_pver
struct m0_pdclust_instance * li_pi
M0_INTERNAL int m0_dix_imask_init(struct m0_dix_imask *mask, struct m0_ext *range, uint64_t nr)
struct m0_poolmach pv_mach
#define M0_LOG(level,...)
static bool unit_is_valid(struct m0_pdclust_attr *attr, uint64_t unit)
struct m0_dix_linst dit_linst
struct m0_layout_instance pi_base
M0_INTERNAL int m0_dix_imask_apply(void *buffer, m0_bcount_t buf_len_bytes, struct m0_dix_imask *mask, void **res, m0_bcount_t *res_len_bits)
M0_INTERNAL int m0_dix_layout_iter_init(struct m0_dix_layout_iter *iter, const struct m0_fid *index, struct m0_layout_domain *ldom, struct m0_pool_version *pver, struct m0_dix_ldesc *ldesc, struct m0_buf *key)
M0_INTERNAL void m0_dix_target(struct m0_dix_linst *inst, uint64_t unit, struct m0_buf *key, uint64_t *out_id)
struct m0_pdclust_attr pl_attr
M0_INTERNAL bool m0_dix_imask_eq(const struct m0_dix_imask *imask1, const struct m0_dix_imask *imask2)
M0_INTERNAL uint32_t m0_dix_liter_S(struct m0_dix_layout_iter *iter)
M0_INTERNAL int m0_layout_instance_build(struct m0_layout *l, const struct m0_fid *fid, struct m0_layout_instance **out)
M0_INTERNAL void m0_dix_layout_fini(struct m0_dix_linst *li)
M0_INTERNAL void m0_dix_layout_iter_fini(struct m0_dix_layout_iter *iter)
M0_INTERNAL int m0_dix_ldesc_copy(struct m0_dix_ldesc *dst, const struct m0_dix_ldesc *src)
#define M0_BYTES(bits_nr)
static void dix_hash(struct m0_dix_ldesc *ldesc, struct m0_buf *buf, uint64_t *hash)
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL bool m0_dix_layout_eq(const struct m0_dix_layout *layout1, const struct m0_dix_layout *layout2)
M0_INTERNAL uint64_t m0_pool_version2layout_id(const struct m0_fid *pv_fid, uint64_t lid)
#define M0_AMB(obj, ptr, field)
struct m0_pdclust_attr pd_attr
static void attr(struct m0_addb2__context *ctx, const uint64_t *v, char *buf)
M0_INTERNAL uint32_t m0_dix_liter_spare_offset(struct m0_dix_layout_iter *iter)
M0_INTERNAL void m0_dix_layout_iter_next(struct m0_dix_layout_iter *iter, uint64_t *tgt)
M0_INTERNAL int m0_dix_imask_copy(struct m0_dix_imask *dst, const struct m0_dix_imask *src)
M0_INTERNAL uint64_t m0_hash_fnc_fnv1(const void *buffer, m0_bcount_t len)
M0_INTERNAL int m0_dix_ldesc_init(struct m0_dix_ldesc *ld, struct m0_ext *range, m0_bcount_t range_nr, enum m0_dix_hash_fnc_type htype, struct m0_fid *pver)
M0_INTERNAL void m0_dix_layout_iter_get_at(struct m0_dix_layout_iter *iter, uint64_t unit, uint64_t *tgt)
M0_INTERNAL uint64_t m0_hash_fnc_city(const void *buffer, m0_bcount_t len)
M0_INTERNAL uint32_t m0_dix_liter_unit_classify(struct m0_dix_layout_iter *iter, uint64_t unit)
struct m0_dix_ldesc * li_ldescr
M0_INTERNAL uint32_t m0_dix_liter_W(struct m0_dix_layout_iter *iter)
struct m0_dix_imask ld_imask
M0_INTERNAL void m0_buf_free(struct m0_buf *buf)
M0_INTERNAL void m0_pdclust_instance_map(struct m0_pdclust_instance *pi, const struct m0_pdclust_src_addr *src, struct m0_pdclust_tgt_addr *tgt)
union m0_dix_layout::@145 u
static struct m0_clink l[NR]
M0_INTERNAL void m0_dix_layout_iter_reset(struct m0_dix_layout_iter *iter)
M0_INTERNAL struct m0_layout * m0_pdl_to_layout(struct m0_pdclust_layout *pl)
M0_INTERNAL void m0_dix_ldesc_fini(struct m0_dix_ldesc *ld)
M0_INTERNAL bool m0_fid_eq(const struct m0_fid *fid0, const struct m0_fid *fid1)
struct m0_pdclust_tgt_addr tgt
#define M0_FI_ENABLED(tag)
M0_INTERNAL void m0_dix_layout_iter_goto(struct m0_dix_layout_iter *iter, uint64_t unit)
M0_INTERNAL uint32_t m0_dix_liter_N(struct m0_dix_layout_iter *iter)
M0_INTERNAL void m0_dix_imask_fini(struct m0_dix_imask *mask)
M0_INTERNAL enum m0_pdclust_unit_type m0_pdclust_unit_classify(const struct m0_pdclust_layout *pl, int unit)
static int layout_create(struct m0_layout_domain *domain, const struct m0_fid *fid, uint64_t layout_id, struct m0_pool_version *pver, struct m0_dix_linst *dli)
static const struct m0_dtm_history_type htype
struct m0_pdclust_layout * li_pl
#define M0_ASSERT_INFO(cond, fmt,...)
M0_INTERNAL void m0_layout_instance_fini(struct m0_layout_instance *li)
M0_INTERNAL struct m0_pdclust_instance * m0_layout_instance_to_pdi(const struct m0_layout_instance *li)
M0_INTERNAL void m0_layout_put(struct m0_layout *l)
M0_INTERNAL void m0_fd_fwd_map(struct m0_pdclust_instance *pi, const struct m0_pdclust_src_addr *src, struct m0_pdclust_tgt_addr *tgt)
static struct m0_layout_domain domain
M0_INTERNAL int m0_dix_layout_init(struct m0_dix_linst *dli, struct m0_layout_domain *domain, const struct m0_fid *fid, uint64_t layout_id, struct m0_pool_version *pver, struct m0_dix_ldesc *dld)
M0_INTERNAL uint32_t m0_dix_devices_nr(struct m0_dix_linst *linst)
struct m0_pdclust_src_addr src
M0_INTERNAL uint32_t m0_dix_liter_P(struct m0_dix_layout_iter *iter)
M0_INTERNAL struct m0_pooldev * m0_dix_tgt2sdev(struct m0_dix_linst *linst, uint64_t tgt)
#define M0_IMPOSSIBLE(fmt,...)