31 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_LAYOUT 372 m0_fi_disable(
"m0_layout_enum_type_register",
"leto_reg_err");
404 uint32_t
S, uint32_t
P,
442 uint32_t
N, uint32_t K,
443 uint32_t
S, uint32_t
P,
445 uint32_t
A, uint32_t
B,
467 for (
i = 0;
i <
P; ++
i)
474 e = &(*list_enum)->lle_base;
485 e = &(*lin_enum)->lle_base;
537 uint32_t
N, uint32_t K,
538 uint32_t
S, uint32_t
P,
556 uint32_t
N, uint32_t K,
557 uint32_t
S, uint32_t
P,
559 uint32_t
A, uint32_t
B)
586 for(
i = 0;
i < list_enum->lle_nr; ++
i) {
589 &list_enum->lle_list_of_cobs[
i]));
605 uint32_t inline_test,
606 uint32_t list_nr_less,
607 uint32_t list_nr_more,
609 uint32_t *
N, uint32_t *K,
610 uint32_t *
S, uint32_t *
P)
621 if (list_nr_more > 50)
626 switch (inline_test) {
649 }
else if (*
P <= 50) {
652 }
else if (*
P <= 200) {
655 }
else if (*
P <= 500) {
658 }
else if (*
P <= 1000) {
667 *
N = *
P - ((*K) + (*S));
669 *
N = *
P - ((*K) + (*S)) - 10;
671 *
N = *
P - ((*K) + (*S)) - 12;
673 *
N = *
P - ((*K) + (*S)) - 100;
686 uint32_t inline_test,
704 inline_test, 9, 109, 12000,
890 uint32_t
N, uint32_t K,
891 uint32_t
S, uint32_t
P,
914 uint32_t
N, uint32_t K,
915 uint32_t
S, uint32_t
P,
917 uint32_t
A, uint32_t
B,
944 ce_header.ces_nr =
P;
949 for (
i = 0;
i < ce_header.ces_nr; ++
i) {
992 uint32_t inline_test,
1022 inline_test, 5, 125, 1500,
1054 l->l_ops->lo_delete(
l);
1210 uint32_t
S, uint32_t
P,
1234 uint32_t
N, uint32_t K,
1235 uint32_t
S, uint32_t
P,
1237 uint32_t
A, uint32_t
B,
1271 ce_header->ces_nr *
sizeof *cob_id_from_layout);
1273 for (
i = 0;
i < ce_header->ces_nr; ++
i) {
1279 &cob_id_calculated));
1300 uint32_t inline_test,
1316 M0_ENTRY(
"lid %llu", (
unsigned long long)lid);
1331 inline_test, 10, 120, 120,
1516 M0_UT_ASSERT(ce_header1->ces_nr == ce_header2->ces_nr);
1519 ce_header1->ces_nr *
sizeof *cob_id1);
1521 ce_header2->ces_nr *
sizeof *cob_id2);
1523 for (
i = 0;
i < ce_header1->ces_nr; ++
i) {
1553 uint32_t inline_test)
1585 inline_test, 3, 103, 1510,
1713 bool l2_ref_elevated)
1730 if (l2_ref_elevated)
1769 for (
i = 0;
i < list_e1->lle_nr; ++
i)
1771 &list_e2->lle_list_of_cobs[
i]));
1805 pl_dest =
m0_alloc(
sizeof *pl_src);
1811 (*l_dest)->l_type = l_src->
l_type;
1812 (*l_dest)->l_dom = l_src->
l_dom;
1814 (*l_dest)->l_ops = l_src->
l_ops;
1825 list_dest =
m0_alloc(
sizeof *list_src);
1828 list_dest->lle_nr = list_src->lle_nr;
1829 M0_ALLOC_ARR(list_dest->lle_list_of_cobs, list_dest->lle_nr);
1831 for (
i = 0;
i < list_src->lle_nr; ++
i)
1832 list_dest->lle_list_of_cobs[
i] =
1833 list_src->lle_list_of_cobs[
i];
1840 lin_dest =
m0_alloc(
sizeof *lin_src);
1872 m0_free(list_enum->lle_list_of_cobs);
1890 uint32_t inline_test)
1908 M0_ENTRY(
"lid %llu", (
unsigned long long)lid);
1923 inline_test, 13, 113, 1130,
2055 M0_ENTRY(
"lid %llu", (
unsigned long long)lid);
2076 for (
i = 0;
i < 123; ++
i)
2081 for (
i = 0;
i < 123; ++
i)
2125 struct m0_fid fid_calculated;
2126 struct m0_fid fid_from_layout;
2137 for(
i = 0;
i <
nr; ++
i) {
2149 for(
i = 0;
i <
nr; ++
i) {
2165 uint32_t inline_test)
2183 inline_test, 14, 1014, 1014,
2281 M0_UT_ASSERT(max_size_from_api == max_size_calculated);
2293 M0_UT_ASSERT(max_size_from_api == max_size_calculated);
2308 M0_UT_ASSERT(max_size_from_api == max_size_calculated);
2319 M0_UT_ASSERT(max_size_from_api == max_size_calculated);
2330 M0_UT_ASSERT(max_size_from_api == max_size_calculated);
2339 M0_UT_ASSERT(max_size_from_api == max_size_calculated);
2383 list_enum->lle_nr *
sizeof(
struct m0_fid);
2405 uint32_t inline_test)
2418 M0_ENTRY(
"lid %llu", (
unsigned long long)lid);
2425 inline_test, 1, 1200, 1111,
2437 recsize =
l->l_ops->lo_recsize(
l);
2502 for (unit = 0; unit < W; ++unit) {
2512 bool inline_test,
bool failure_test)
2521 uint64_t *cache_len;
2536 inline_test, 14, 30, 30,
2566 for (
i = 0;
i < cache_nr; ++
i) {
2588 &list_enum->lle_base);
2695 static void pair_set(
struct m0_db_pair *
pair, uint64_t *lid,
2698 pair->dp_key.db_buf.b_addr = lid;
2699 pair->dp_key.db_buf.b_nob =
sizeof *lid;
2700 pair->dp_rec.db_buf.b_addr = area;
2701 pair->dp_rec.db_buf.b_nob = num_bytes;
2704 static int test_add_pdclust(uint32_t
enum_id, uint64_t lid,
2705 uint32_t inline_test,
2707 bool duplicate_test,
2711 static int test_lookup_pdclust(uint32_t
enum_id, uint64_t lid,
2713 uint32_t inline_test,
2722 struct m0_db_pair
pair;
2734 if (existing_test) {
2767 rc = m0_db_tx_init(&tx, &dbenv,
DBFLAGS);
2770 pair_set(&
pair, &lid, area, num_bytes);
2780 rc_tmp = m0_db_tx_commit(&tx);
2783 if (existing_test && !failure_test) {
2803 static bool ghost_create(
void *d)
2805 struct ghost_data *
data = d;
2826 static int test_lookup_with_ghost_creation(uint32_t
enum_id, uint64_t lid,
2827 uint32_t inline_test)
2831 struct ghost_data g_data = { 0 };
2832 void *area_for_encode;
2838 void *area_for_lookup;
2839 struct m0_db_pair
pair;
2862 &num_bytes_for_encode);
2865 &num_bytes_for_encode);
2867 &num_bytes_for_encode);
2875 g_data.cur = &cur_for_encode;
2895 &num_bytes_for_lookup);
2898 &num_bytes_for_lookup);
2900 rc = m0_db_tx_init(&tx, &dbenv,
DBFLAGS);
2903 pair_set(&
pair, &lid, area_for_lookup, num_bytes_for_lookup);
2905 ghost_create, &g_data);
2907 &tx, &
pair, &l_from_DB);
2911 rc_tmp = m0_db_tx_commit(&tx);
3016 static void test_lookup_failure(
void)
3020 struct m0_db_pair
pair;
3120 static int test_add_pdclust(uint32_t
enum_id, uint64_t lid,
3121 uint32_t inline_test,
3123 bool duplicate_test,
3133 struct m0_db_pair
pair;
3140 M0_ENTRY(
"lid %llu", (
unsigned long long)lid);
3152 inline_test, 7, 1900, 1900,
3158 &pl, &list_enum, &lin_enum,
3163 rc = m0_db_tx_init(&tx, &dbenv,
DBFLAGS);
3166 pair_set(&
pair, &lid, area, num_bytes);
3174 rc_tmp = m0_db_tx_commit(&tx);
3183 if (duplicate_test) {
3184 rc = m0_db_tx_init(&tx, &dbenv,
DBFLAGS);
3187 pair_set(&
pair, &lid, area, num_bytes);
3192 rc_tmp = m0_db_tx_commit(&tx);
3205 M0_LEAVE(
"lid %llu", (
unsigned long long)lid);
3263 static void test_add_failure(
void)
3321 static int test_update_pdclust(uint32_t
enum_id, uint64_t lid,
3323 uint32_t inline_test,
3328 struct m0_db_pair
pair;
3350 inline_test, 13, 123, 1230,
3353 if (existing_test) {
3368 &pl, &list_enum, &lin_enum,
3378 for (
i = 0;
i < 100; ++
i)
3383 rc = m0_db_tx_init(&tx, &dbenv,
DBFLAGS);
3386 pair_set(&
pair, &lid, area, num_bytes);
3397 if (existing_test && !failure_test)
3400 rc_tmp = m0_db_tx_commit(&tx);
3407 for (
i = 0;
i < 50; ++
i)
3415 if (existing_test && !failure_test) {
3420 rc = m0_db_tx_init(&tx, &dbenv,
DBFLAGS);
3423 pair_set(&
pair, &lid, area, num_bytes);
3431 rc = m0_db_tx_commit(&tx);
3517 static void test_update_failure(
void)
3544 static int test_delete_pdclust(uint32_t
enum_id, uint64_t lid,
3546 uint32_t inline_test,
3547 uint32_t failure_test)
3551 struct m0_db_pair
pair;
3570 inline_test, 12, 122, 1220,
3572 if (existing_test) {
3587 &pl, &list_enum, &lin_enum,
3597 pair_set(&
pair, &lid, area, num_bytes);
3599 rc = m0_db_tx_init(&tx, &dbenv,
DBFLAGS);
3609 rc_tmp = m0_db_tx_commit(&tx);
3616 if (!failure_test) {
3622 rc = m0_db_tx_init(&tx, &dbenv,
DBFLAGS);
3625 pair_set(&
pair, &lid, area, num_bytes);
3631 rc_tmp = m0_db_tx_commit(&tx);
3694 static void test_delete_failure(
void)
3765 .ts_owners =
"Trupti",
3770 {
"layout-domain-init-fini-failure",
3775 {
"layout-register-unregister-failure",
3790 {
"layout-pdclust-instance-failure",
3807 #undef M0_TRACE_SUBSYSTEM M0_INTERNAL struct m0_layout * m0_layout_find(struct m0_layout_domain *dom, uint64_t lid)
static int test_build_pdclust(uint32_t enum_id, uint64_t lid, uint32_t inline_test, bool failure_test)
#define M0_BUFVEC_INIT_BUF(addr_ptr, count_ptr)
int(* leto_register)(struct m0_layout_domain *dom, const struct m0_layout_enum_type *et)
M0_INTERNAL m0_bcount_t m0_layout_max_recsize(const struct m0_layout_domain *dom)
static void NKP_assign_and_pool_init(uint32_t enum_id, uint32_t inline_test, uint32_t list_nr_less, uint32_t list_nr_more, uint32_t linear_nr, uint32_t *N, uint32_t *K, uint32_t *S, uint32_t *P)
M0_INTERNAL struct m0_striped_layout * m0_layout_to_striped(const struct m0_layout *l)
static void test_decode_failure(void)
struct m0_layout_enum_type m0_linear_enum_type
#define M0_ALLOC_ARR(arr, nr)
static void test_max_recsize(void)
M0_INTERNAL void m0_pool_fini(struct m0_pool *pool)
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
M0_INTERNAL void m0_fid_gob_make(struct m0_fid *gob_fid, uint32_t container, uint64_t key)
static void pdclust_recsize_verify(uint32_t enum_id, struct m0_layout *l, m0_bcount_t recsize_to_verify)
M0_INTERNAL void m0_layout_enum_type_unregister(struct m0_layout_domain *dom, struct m0_layout_enum_type *let)
M0_INTERNAL int m0_layout_update(struct m0_layout *l, struct m0_db_tx *tx, struct m0_db_pair *pair)
static struct buffer * cur(struct m0_addb2_mach *mach, m0_bcount_t space)
static void allocate_area(void **area, m0_bcount_t additional_bytes, m0_bcount_t *num_bytes)
static void test_reg_unreg_failure(void)
static int test_fini(void)
static void test_build_failure(void)
M0_INTERNAL int m0_layout_domain_init(struct m0_layout_domain *dom)
static void buf_build(uint32_t lt_id, struct m0_bufvec_cursor *dcur)
M0_INTERNAL bool m0_uint128_eq(const struct m0_uint128 *u0, const struct m0_uint128 *u1)
static int t_register(struct m0_layout_domain *dom, const struct m0_layout_type *lt)
struct m0_layout_type test_layout_type
static void test_decode(void)
#define M0_FID_INIT(container, key)
static void lbuf_verify(struct m0_bufvec_cursor *cur, uint32_t *lt_id)
M0_INTERNAL struct m0_layout_enum * m0_striped_layout_to_enum(const struct m0_striped_layout *stl)
struct m0_layout_instance pi_base
static void pdclust_lbuf_compare(struct m0_bufvec_cursor *cur1, struct m0_bufvec_cursor *cur2)
M0_INTERNAL void m0_uint128_init(struct m0_uint128 *u128, const char *magic)
static void test_domain_init_fini(void)
M0_INTERNAL void m0_layout_domain_fini(struct m0_layout_domain *dom)
struct m0_pool_version pool_ver
M0_INTERNAL int m0_linear_enum_build(struct m0_layout_domain *dom, const struct m0_layout_linear_attr *attr, struct m0_layout_linear_enum **out)
M0_INTERNAL void m0_layout_enum_fini(struct m0_layout_enum *le)
static int test_encode_decode_pdclust(uint32_t enum_id, uint64_t lid, uint32_t inline_test)
static void test_encode(void)
M0_INTERNAL void * m0_bufvec_cursor_addr(struct m0_bufvec_cursor *cur)
struct m0_layout_enum_type test_enum_type
static void ldemo(struct m0_pdclust_instance *pi, const struct m0_pdclust_layout *pl)
#define container_of(ptr, type, member)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
static int test_decode_encode_pdclust(uint32_t enum_id, uint64_t lid, uint32_t inline_test)
static int test_add(struct m0_list *list, const char *suite, const char *test, const struct m0_ut_module *m)
struct m0_pdclust_attr pl_attr
static void test_encode_failure(void)
struct m0_layout_enum_type * le_type
M0_INTERNAL int m0_layout_instance_build(struct m0_layout *l, const struct m0_fid *fid, struct m0_layout_instance **out)
static void test_pdclust_instance_failure(void)
M0_INTERNAL int m0_pool_init(struct m0_pool *pool, const struct m0_fid *id, enum m0_pver_policy_code pver_policy)
static void enum_op_verify(uint32_t enum_id, uint64_t lid, uint32_t nr, struct m0_layout *l)
struct m0_pdclust_attr pr_attr
struct m0_layout_type * ld_type[M0_LAYOUT_TYPE_MAX]
static int t_enum_register(struct m0_layout_domain *dom, const struct m0_layout_enum_type *et)
M0_INTERNAL int m0_layout_delete(struct m0_layout *l, struct m0_db_tx *tx, struct m0_db_pair *pair)
M0_INTERNAL bool m0_bufvec_cursor_move(struct m0_bufvec_cursor *cur, m0_bcount_t count)
M0_INTERNAL void m0_layout_add(struct m0_layout_domain *dom, struct m0_layout *l)
static const struct m0_layout_enum_type_ops test_enum_ops
static void t_enum_unregister(struct m0_layout_domain *dom, const struct m0_layout_enum_type *et)
struct m0_layout_linear_attr lle_attr
M0_INTERNAL void m0_fid_set(struct m0_fid *fid, uint64_t container, uint64_t key)
void m0_ref_init(struct m0_ref *ref, int init_num, void(*release)(struct m0_ref *ref))
int(* lto_allocate)(struct m0_layout_domain *dom, uint64_t lid, struct m0_layout **out)
struct m0_layout_enum lle_base
static void attr(struct m0_addb2__context *ctx, const uint64_t *v, char *buf)
const struct m0_layout_enum_ops * le_ops
M0_INTERNAL void m0_fi_disable(const char *fp_func, const char *fp_tag)
M0_INTERNAL int m0_layout_lookup(struct m0_layout_domain *dom, uint64_t lid, struct m0_layout_type *lt, struct m0_db_tx *tx, struct m0_db_pair *pair, struct m0_layout **out)
static void lbuf_compare(struct m0_bufvec_cursor *cur1, struct m0_bufvec_cursor *cur2)
struct m0_fd_tree pv_fd_tree
M0_INTERNAL m0_bcount_t m0_bufvec_cursor_step(const struct m0_bufvec_cursor *cur)
struct m0_striped_layout pl_base
struct m0_layout_type * l_type
static void test_reg_unreg(void)
M0_INTERNAL int m0_layout_encode(struct m0_layout *l, enum m0_layout_xcode_op op, struct m0_be_tx *tx, struct m0_bufvec_cursor *out)
static void pdclust_buf_build(uint32_t let_id, uint64_t lid, uint32_t N, uint32_t K, uint32_t S, uint32_t P, struct m0_uint128 *seed, struct m0_bufvec_cursor *dcur)
M0_INTERNAL uint32_t m0_pdclust_N(const struct m0_pdclust_layout *pl)
static void m0_fi_enable_func(const char *func, const char *tag, m0_fi_fpoint_state_func_t trigger_func, void *data)
static int test_ref_get_put_pdclust(uint32_t enum_id, uint64_t lid)
static void pdclust_layout_copy_delete(uint32_t enum_id, struct m0_layout *l)
static void test_domain_init_fini_failure(void)
static void pdclust_lbuf_verify(uint32_t N, uint32_t K, uint32_t S, uint32_t P, struct m0_uint128 *seed, struct m0_bufvec_cursor *cur, uint32_t *let_id)
static int pdclust_layout_buf_build(uint32_t enum_id, uint64_t lid, uint32_t N, uint32_t K, uint32_t S, uint32_t P, struct m0_uint128 *seed, uint32_t A, uint32_t B, struct m0_bufvec_cursor *dcur)
struct m0_layout_enum * sl_enum
static void pdclust_layout_verify(uint32_t enum_id, struct m0_layout *l, uint64_t lid, uint32_t N, uint32_t K, uint32_t S, uint32_t P, struct m0_uint128 *seed, uint32_t A, uint32_t B)
struct m0_fd_cache_info ft_cache_info
static struct m0_stob_domain * dom
M0_INTERNAL void m0_bufvec_cursor_init(struct m0_bufvec_cursor *cur, const struct m0_bufvec *bvec)
M0_INTERNAL uint32_t m0_pdclust_S(const struct m0_pdclust_layout *pl)
M0_INTERNAL void m0_layout_enum_get(const struct m0_layout_enum *e, uint32_t idx, const struct m0_fid *gfid, struct m0_fid *out)
static void test_pdclust_instance(void)
void * m0_alloc(size_t size)
static int test_decode_pdclust(uint32_t enum_id, uint64_t lid, uint32_t inline_test, bool failure_test)
M0_INTERNAL uint32_t m0_layout_enum_nr(const struct m0_layout_enum *e)
struct m0_pdclust_instance pi
M0_INTERNAL uint32_t m0_pdclust_K(const struct m0_pdclust_layout *pl)
M0_INTERNAL void m0_layout_user_count_dec(struct m0_layout *l)
M0_INTERNAL int m0_list_enum_build(struct m0_layout_domain *dom, struct m0_fid *cob_list, uint32_t nr, struct m0_layout_list_enum **out)
static int test_encode_pdclust(uint32_t enum_id, uint64_t lid, uint32_t inline_test, bool failure_test)
M0_INTERNAL int m0_layout_enum_type_register(struct m0_layout_domain *dom, struct m0_layout_enum_type *let)
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)
M0_INTERNAL int m0_layout_standard_types_register(struct m0_layout_domain *dom)
M0_INTERNAL void m0_pdclust_instance_inv(struct m0_pdclust_instance *pi, const struct m0_pdclust_tgt_addr *tgt, struct m0_pdclust_src_addr *src)
M0_INTERNAL int m0_layout_decode(struct m0_layout *l, struct m0_bufvec_cursor *cur, enum m0_layout_xcode_op op, struct m0_be_tx *tx)
static struct m0_clink l[NR]
static m0_bcount_t t_enum_max_recsize(void)
void layout_destroy(struct m0_pdclust_layout *pdlay)
struct m0_uint128 pa_seed
struct m0_layout_enum_type * ld_enum[M0_LAYOUT_ENUM_TYPE_MAX]
static void pdclust_l_verify(struct m0_pdclust_layout *pl, uint64_t lid, uint32_t N, uint32_t K, uint32_t S, uint32_t P, struct m0_uint128 *seed)
M0_INTERNAL struct m0_layout * m0_pdl_to_layout(struct m0_pdclust_layout *pl)
static void t_unregister(struct m0_layout_domain *dom, const struct m0_layout_type *lt)
static void m0_fi_enable_off_n_on_m(const char *func, const char *tag, uint32_t n, uint32_t m)
static int test_init(void)
static void pdclust_layout_copy(uint32_t enum_id, const struct m0_layout *l_src, struct m0_layout **l_dest)
M0_INTERNAL bool m0_fid_eq(const struct m0_fid *fid0, const struct m0_fid *fid1)
M0_INTERNAL bool m0_layout__allocated_invariant(const struct m0_layout *l)
static int pdclust_layout_build(uint32_t enum_id, uint64_t lid, uint32_t N, uint32_t K, uint32_t S, uint32_t P, struct m0_uint128 *seed, uint32_t A, uint32_t B, struct m0_pdclust_layout **pl, struct m0_layout_linear_enum **lin_enum, bool failure_test)
static uint32_t linear_nr(const struct m0_layout_enum *e)
static int test_pdclust_instance_obj(uint32_t enum_id, uint64_t lid, bool inline_test, bool failure_test)
const struct m0_layout_type_ops * lt_ops
static void pdclust_layout_buf_verify(uint32_t enum_id, uint64_t lid, uint32_t N, uint32_t K, uint32_t S, uint32_t P, struct m0_uint128 *seed, uint32_t A, uint32_t B, struct m0_bufvec_cursor *cur)
static struct m0_pool pool
static void l_verify(struct m0_layout *l, uint64_t lid)
struct m0_pdclust_tgt_addr tgt
M0_INTERNAL void m0_layout_get(struct m0_layout *l)
M0_INTERNAL int64_t m0_ref_read(const struct m0_ref *ref)
M0_INTERNAL void m0_layout_user_count_inc(struct m0_layout *l)
#define M0_FI_ENABLED(tag)
static void test_recsize(void)
struct m0_layout_type m0_pdclust_layout_type
#define M0_ALLOC_PTR(ptr)
static const struct m0_layout_type_ops test_layout_type_ops
int(* lto_register)(struct m0_layout_domain *dom, const struct m0_layout_type *lt)
static void pdclust_layout_buf_compare(uint32_t enum_id, struct m0_bufvec_cursor *cur1, struct m0_bufvec_cursor *cur2)
static int test_enum_ops_pdclust(uint32_t enum_id, uint64_t lid, uint32_t inline_test)
M0_INTERNAL struct m0_layout_enum * m0_layout_instance_to_enum(const struct m0_layout_instance *li)
static void pdclust_layout_compare(uint32_t enum_id, const struct m0_layout *l1, const struct m0_layout *l2, bool l2_ref_elevated)
M0_INTERNAL m0_bcount_t m0_bufvec_cursor_copyto(struct m0_bufvec_cursor *dcur, void *sdata, m0_bcount_t num_bytes)
M0_INTERNAL enum m0_pdclust_unit_type m0_pdclust_unit_classify(const struct m0_pdclust_layout *pl, int unit)
M0_INTERNAL int m0_layout_type_register(struct m0_layout_domain *dom, struct m0_layout_type *lt)
struct m0_striped_layout * le_sl
M0_INTERNAL int m0_pdclust_build(struct m0_layout_domain *dom, uint64_t lid, const struct m0_pdclust_attr *attr, struct m0_layout_enum *le, struct m0_pdclust_layout **out)
M0_INTERNAL void m0_layout_standard_types_unregister(struct m0_layout_domain *dom)
M0_INTERNAL struct m0_layout_enum * m0_layout_to_enum(const struct m0_layout *l)
static void m0_fi_enable_once(const char *func, const char *tag)
static void test_ref_get_put(void)
M0_INTERNAL void m0_layout_type_unregister(struct m0_layout_domain *dom, struct m0_layout_type *lt)
static void test_decode_encode(void)
M0_INTERNAL void m0_layout_instance_fini(struct m0_layout_instance *li)
struct m0_ut_suite layout_ut
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_fid_convert_gob2cob(const struct m0_fid *gob_fid, struct m0_fid *cob_fid, uint32_t device_id)
static int test_recsize_pdclust(uint32_t enum_id, uint64_t lid, uint32_t inline_test)
static struct m0_layout * list_lookup(uint64_t lid)
static void test_type_reg_unreg(void)
static const char * enum_id(const char *buf)
static void test_etype_reg_unreg(void)
static struct m0_layout_domain domain
struct m0_layout_domain * l_dom
static m0_bcount_t t_max_recsize(struct m0_layout_domain *dom)
M0_INTERNAL struct m0_layout * m0_layout__list_lookup(const struct m0_layout_domain *dom, uint64_t lid, bool ref_increment)
static void test_encode_decode(void)
struct m0_pdclust_src_addr src
static void test_delete(void)
M0_INTERNAL uint32_t m0_pdclust_P(const struct m0_pdclust_layout *pl)
static void test_enum_operations(void)
M0_INTERNAL uint64_t m0_pdclust_unit_size(const struct m0_pdclust_layout *pl)
static int pdclust_l_build(uint64_t lid, uint32_t N, uint32_t K, uint32_t S, uint32_t P, struct m0_uint128 *seed, struct m0_layout_enum *le, struct m0_pdclust_layout **pl, bool failure_test)
struct m0_layout_enum_type m0_list_enum_type
static void test_build(void)
void(* lo_fini)(struct m0_ref *ref)
const struct m0_layout_ops * l_ops