278 for (
i = 0;
i < failure_nr; ++
i) {
393 uint64_t local_cp_nr;
468 struct m0_buf *parity_bufs;
520 uint8_t *bufs_in_error;
527 for (
i = 0;
i < unit_count;
i++) {
529 M0_0VEC_SHIFT) == 0);
597 bufs_in_error[failed_idx[
i]] = 1;
600 while (bufs_in_error[j])
625 for (
i = 0;
i < unit_count;
i++)
631 for (j = 0; j <
BUF_NR; ++j)
750 {
"multi_cp_single_failure",
752 {
"multi_cp_multi_failures",
void cs_fini(struct m0_motr *sctx)
M0_INTERNAL int m0_bufvec_to_buf_copy(struct m0_buf *buf, const struct m0_bufvec *bvec)
struct m0_be_domain * bs_domain
M0_INTERNAL void m0_parity_math_fini(struct m0_parity_math *math)
#define M0_ALLOC_ARR(arr, nr)
M0_INTERNAL int m0_bitmap_init(struct m0_bitmap *map, size_t nr)
M0_INTERNAL void m0_fid_gob_make(struct m0_fid *gob_fid, uint32_t container, uint64_t key)
struct m0_net_buffer_pool * nb_pool
struct m0_reqh * m0_cs_reqh_get(struct m0_motr *cctx)
struct m0_parity_math rag_math
struct m0_bitmap c_xform_cp_indices
M0_INTERNAL int m0_buf_to_bufvec_copy(struct m0_bufvec *bvec, const struct m0_buf *buf)
struct m0_bufvec nb_buffer
M0_INTERNAL struct m0_sns_cm * cm2sns(struct m0_cm *cm)
struct m0_pool_version * pm_pver
struct m0_pool_version * pv
M0_INTERNAL int m0_ut_stob_destroy_by_stob_id(struct m0_stob_id *stob_id)
M0_INTERNAL void m0_ios_cdom_get(struct m0_reqh *reqh, struct m0_cob_domain **out)
struct m0_layout * sf_layout
#define container_of(ptr, type, member)
struct m0_poolmach * sf_pm
M0_INTERNAL void m0_sns_ir_fini(struct m0_sns_ir *ir)
uint64_t(* cago_local_cp_nr)(const struct m0_cm_aggr_group *ag)
M0_INTERNAL struct m0_reqh_service_type * m0_reqh_service_type_find(const char *sname)
M0_INTERNAL int m0_sns_ir_failure_register(struct m0_bufvec *recov_addr, uint32_t failed_index, struct m0_sns_ir *ir)
uint64_t cag_cp_global_nr
M0_INTERNAL int m0_sns_ir_init(const struct m0_parity_math *math, uint32_t local_nr, struct m0_sns_ir *ir)
int m0_bufvec_alloc_aligned(struct m0_bufvec *bufvec, uint32_t num_segs, m0_bcount_t seg_size, unsigned shift)
M0_INTERNAL void m0_parity_math_calculate(struct m0_parity_math *math, struct m0_buf *data, struct m0_buf *parity)
M0_INTERNAL void m0_bufvec_free(struct m0_bufvec *bufvec)
static struct m0_sns_cm_ag * sag
struct m0_sns_cm_ag rag_base
M0_INTERNAL void m0_fi_disable(const char *fp_func, const char *fp_tag)
static void m0_fi_enable(const char *func, const char *tag)
void bv_compare(struct m0_bufvec *b1, struct m0_bufvec *b2, uint32_t seg_nr, uint32_t seg_size)
struct m0_fid fc_tgt_cobfid
M0_INTERNAL void m0_fid_convert_cob2stob(const struct m0_fid *cob_fid, struct m0_stob_id *stob_id)
M0_INTERNAL void m0_cm_cp_fini(struct m0_cm_cp *cp)
const struct m0_cm_cp_ops * c_ops
M0_INTERNAL void m0_cm_cp_buf_add(struct m0_cm_cp *cp, struct m0_net_buffer *nb)
M0_INTERNAL int m0_sns_ir_mat_compute(struct m0_sns_ir *ir)
M0_INTERNAL int m0_parity_math_init(struct m0_parity_math *math, uint32_t data_count, uint32_t parity_count)
int(* co_action[])(struct m0_cm_cp *cp)
M0_INTERNAL int m0_buf_alloc(struct m0_buf *buf, size_t size)
M0_INTERNAL int m0_semaphore_init(struct m0_semaphore *semaphore, unsigned value)
static struct m0_rpc_server_ctx sctx
M0_INTERNAL uint32_t m0_fid_cob_device_id(const struct m0_fid *cob_fid)
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
struct m0_sns_cm_cp fc_tgt_acc_cp
M0_INTERNAL void m0_bitmap_set(struct m0_bitmap *map, size_t idx, bool val)
M0_INTERNAL struct m0_sns_cm_repair_ag * sag2repairag(const struct m0_sns_cm_ag *sag)
M0_INTERNAL void m0_buf_free(struct m0_buf *buf)
static void bufvec_xor(struct m0_bufvec *dst, struct m0_bufvec *src, m0_bcount_t num_bytes)
M0_INTERNAL int m0_cm_cp_bufvec_merge(struct m0_cm_cp *cp)
struct m0_cob_domain * sc_cob_dom
void bv_alloc_populate(struct m0_bufvec *b, char data, uint32_t seg_nr, uint32_t seg_size)
void layout_destroy(struct m0_pdclust_layout *pdlay)
M0_INTERNAL void m0_reqh_idle_wait(struct m0_reqh *reqh)
uint64_t cag_transformed_cp_nr
M0_INTERNAL int m0_ut_stob_create_by_stob_id(struct m0_stob_id *stob_id, const char *str_cfg)
M0_INTERNAL struct m0_layout * m0_pdl_to_layout(struct m0_pdclust_layout *pl)
struct m0_sns_cm_file_ctx * sag_fctx
M0_INTERNAL struct m0_reqh_service * m0_reqh_service_find(const struct m0_reqh_service_type *st, const struct m0_reqh *reqh)
struct m0_sns_cm_repair_ag_failure_ctx * rag_fc
M0_INTERNAL void m0_semaphore_fini(struct m0_semaphore *semaphore)
const struct m0_cm_aggr_group_ops * cag_ops
int cs_init(struct m0_motr *sctx)
void bv_populate(struct m0_bufvec *b, char data, uint32_t seg_nr, uint32_t seg_size)
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
void bv_free(struct m0_bufvec *b)
struct m0_be_seg * rh_beseg
M0_INTERNAL void m0_fom_queue(struct m0_fom *fom)
struct m0_mutex cag_mutex
void(* fo_fini)(struct m0_fom *fom)
static struct m0_sns_cm_file_ctx fctx
static struct m0_sns_cm_repair_ag rag
M0_INTERNAL void m0_semaphore_down(struct m0_semaphore *semaphore)
M0_INTERNAL void m0_fid_convert_gob2cob(const struct m0_fid *gob_fid, struct m0_fid *cob_fid, uint32_t device_id)
struct m0_cm_aggr_group sag_base
void m0_fom_phase_set(struct m0_fom *fom, int phase)
M0_INTERNAL void m0_semaphore_up(struct m0_semaphore *semaphore)
void layout_gen(struct m0_pdclust_layout **pdlay, struct m0_reqh *reqh)
void cp_prepare(struct m0_cm_cp *cp, struct m0_net_buffer *buf, uint32_t bv_seg_nr, uint32_t bv_seg_size, struct m0_sns_cm_ag *sns_ag, char data, struct m0_fom_ops *cp_fom_ops, struct m0_reqh *reqh, uint64_t cp_ag_idx, bool is_acc_cp, struct m0_cm *cm)
#define m0_tl_for(name, head, obj)
const struct m0_sns_cm_helpers * sc_helpers
uint32_t pmi_parity_count
#define M0_IMPOSSIBLE(fmt,...)