Motr  M0
DIX copy machine
Collaboration diagram for DIX copy machine:

Modules

 DIX copy machine Copy packet
 

Data Structures

struct  m0_dix_cm_type
 
struct  m0_dix_cm_stats
 
struct  m0_dix_cm
 

Macros

#define M0_DIX_CM_TYPE_DECLARE(cmtype, id, ops, name, typecode)
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM
 

Enumerations

enum  dix_cm_iter_phase {
  DIX_ITER_INIT = M0_FOM_PHASE_INIT, DIX_ITER_FINAL = M0_FOM_PHASE_FINISH, DIX_ITER_STARTED = M0_FOM_PHASE_NR, DIX_ITER_DEL_LOCK,
  DIX_ITER_CTIDX_START, DIX_ITER_CTIDX_REPOS, DIX_ITER_CTIDX_NEXT, DIX_ITER_NEXT_CCTG,
  DIX_ITER_META_LOCK, DIX_ITER_CCTG_LOOKUP, DIX_ITER_CCTG_START, DIX_ITER_CCTG_CONT,
  DIX_ITER_CCTG_CUR_NEXT, DIX_ITER_NEXT_KEY, DIX_ITER_IDLE_START, DIX_ITER_DEL_TX_OPENED,
  DIX_ITER_DEL_TX_WAIT, DIX_ITER_DEL_TX_DONE, DIX_ITER_IDLE_FIN, DIX_ITER_CCTG_CHECK,
  DIX_ITER_EOF, DIX_ITER_FAILURE
}
 

Functions

M0_INTERNAL struct m0_dix_cmcm2dix (struct m0_cm *cm)
 
M0_INTERNAL int m0_dix_cm_type_register (void)
 
M0_INTERNAL void m0_dix_cm_type_deregister (void)
 
M0_INTERNAL int m0_dix_cm_setup (struct m0_cm *cm)
 
M0_INTERNAL int m0_dix_cm_prepare (struct m0_cm *cm)
 
static bool dix_cm_proxies_completed_cb (struct m0_clink *cl)
 
M0_INTERNAL int m0_dix_cm_start (struct m0_cm *cm)
 
static void dix_cm_tstats_calc (int loc_idx, void *loc_stats, void *total_stats)
 
M0_INTERNAL void m0_dix_cm_stop (struct m0_cm *cm)
 
M0_INTERNAL void m0_dix_cm_fini (struct m0_cm *cm)
 
M0_INTERNAL int m0_dix_get_space_for (struct m0_cm *cm, const struct m0_cm_ag_id *id, size_t *count)
 
M0_INTERNAL int m0_dix_cm_ag_next (struct m0_cm *cm, const struct m0_cm_ag_id *id_curr, struct m0_cm_ag_id *id_next)
 
M0_INTERNAL struct m0_reqhm0_dix_cm2reqh (const struct m0_dix_cm *dcm)
 
static struct m0_cm_proxydix_cm_sdev2proxy (struct m0_dix_cm *dcm, uint32_t sdev_id)
 
static int dix_cm_ag_setup (struct m0_cm *cm, struct m0_cm_cp *cp, struct m0_fid *cctg_fid, uint64_t recs_nr)
 
M0_INTERNAL int m0_dix_cm_data_next (struct m0_cm *cm, struct m0_cm_cp *cp)
 
M0_INTERNAL bool m0_dix_is_peer (struct m0_cm *cm, struct m0_reqh_service_ctx *ctx)
 
M0_INTERNAL void m0_dix_cm_svc_fini (struct m0_reqh_service *service)
 
M0_INTERNAL enum dix_repair_state m0_dix_cm_fid_repair_done (struct m0_fid *gfid, struct m0_reqh *reqh, enum m0_pool_nd_state device_state)
 
M0_INTERNAL void m0_dix_cm_repair_trigger_fop_init (void)
 
M0_INTERNAL void m0_dix_cm_repair_trigger_fop_fini (void)
 
M0_INTERNAL void m0_dix_cm_rebalance_trigger_fop_init (void)
 
M0_INTERNAL void m0_dix_cm_rebalance_trigger_fop_fini (void)
 
M0_INTERNAL void m0_dix_repair_sw_onwire_fop_init (void)
 
M0_INTERNAL void m0_dix_repair_sw_onwire_fop_fini (void)
 
M0_INTERNAL void m0_dix_rebalance_sw_onwire_fop_init (void)
 
M0_INTERNAL void m0_dix_rebalance_sw_onwire_fop_fini (void)
 
static int dix_cm_iter_buf_copy (struct m0_buf *dst, struct m0_buf *src, m0_bcount_t cutoff)
 
static uint64_t dix_cm_iter_fom_locality (const struct m0_fom *fom)
 
static bool dix_cm_iter_meta_clink_cb (struct m0_clink *cl)
 
static void dix_cm_iter_init (struct m0_dix_cm_iter *iter)
 
static void dix_cm_iter_dtx_fini (struct m0_dix_cm_iter *iter)
 
static void dix_cm_iter_tgts_fini (struct m0_dix_cm_iter *iter)
 
static void dix_cm_iter_fini (struct m0_dix_cm_iter *iter)
 
static int dix_cm_iter_failure (struct m0_dix_cm_iter *iter, int rc)
 
static int dix_cm_iter_eof (struct m0_dix_cm_iter *iter)
 
static int dix_cm_iter_idle (struct m0_dix_cm_iter *iter)
 
static int dix_cm_iter_dtx_failure (struct m0_dix_cm_iter *iter)
 
static struct m0_poolmachdix_cm_pm_get (struct m0_dix_cm *dix_cm, struct m0_dix_layout *layout)
 
static int dix_cm_layout_iter_init (struct m0_dix_layout_iter *iter, const struct m0_fid *index, struct m0_dix_layout *layout, struct m0_dix_cm *dix_cm, struct m0_buf *key)
 
static int dix_cm_tgt_to_unit (uint64_t tgt, uint64_t *group_tgts, uint64_t group_tgts_nr, uint64_t *unit)
 
static bool dix_cm_repair_spare_has_data (struct m0_dix_layout_iter *iter, struct m0_poolmach *pm, uint64_t *group_tgts, uint64_t group_tgts_nr, uint64_t spare_id)
 
static int dix_cm_rebalance_tgts_get (struct m0_dix_layout_iter *iter, struct m0_poolmach *pm, uint64_t *group_tgts, uint64_t group_tgts_nr, uint64_t spare_id, uint64_t **tgts, uint64_t *tgts_nr)
 
static int dix_cm_repair_tgts_get (struct m0_dix_layout_iter *iter, struct m0_poolmach *pm, uint64_t **tgts, uint64_t *tgts_nr)
 
static void parity_group_print (struct m0_dix_layout_iter *iter, struct m0_poolmach *pm, uint64_t local_device, struct m0_buf *key)
 
static void spare_usage_print (struct m0_dix_layout_iter *iter, struct m0_poolmach *pm)
 
static void tgts_print (struct m0_dix_layout_iter *iter, uint64_t *tgts, uint64_t tgts_nr, struct m0_buf *key)
 
static bool dix_cm_is_repair_coordinator (struct m0_dix_layout_iter *iter, struct m0_poolmach *pm, uint64_t local_dev)
 
static int dix_cm_iter_rebalance_tgts_get (struct m0_dix_cm_iter *iter, struct m0_dix_layout_iter *liter, struct m0_poolmach *pm, uint64_t local_device, struct m0_buf *key, bool *is_coordinator, uint64_t **tgts, uint64_t *tgts_nr)
 
static int dix_cm_iter_repair_tgts_get (struct m0_dix_cm_iter *iter, struct m0_dix_layout_iter *liter, struct m0_poolmach *pm, uint64_t local_device, struct m0_buf *key, bool *is_coordinator, uint64_t **tgts, uint64_t *tgts_nr)
 
static int dix_cm_iter_next_key (struct m0_dix_cm_iter *iter, struct m0_buf *key, struct m0_buf *val, bool *is_coordinator)
 
static void dix_cm_iter_meta_unlock (struct m0_dix_cm_iter *iter)
 
static int dix_cm_iter_fom_tick (struct m0_fom *fom)
 
static void dix_cm_iter_fom_fini (struct m0_fom *fom)
 
M0_INTERNAL void m0_dix_cm_iter_type_register (struct m0_dix_cm_type *dcmt)
 
M0_INTERNAL int m0_dix_cm_iter_start (struct m0_dix_cm_iter *iter, struct m0_dix_cm_type *dcmt, struct m0_reqh *reqh, m0_bcount_t rpc_cutoff)
 
static void dix_cm_iter_next_ast_cb (struct m0_sm_group *grp, struct m0_sm_ast *ast)
 
M0_INTERNAL void m0_dix_cm_iter_next (struct m0_dix_cm_iter *iter)
 
M0_INTERNAL int m0_dix_cm_iter_get (struct m0_dix_cm_iter *iter, struct m0_buf *key, struct m0_buf *val, uint32_t *sdev_id)
 
static void dix_cm_iter_stop_ast_cb (struct m0_sm_group *grp, struct m0_sm_ast *ast)
 
M0_INTERNAL void m0_dix_cm_iter_stop (struct m0_dix_cm_iter *iter)
 
M0_INTERNAL void m0_dix_cm_iter_cur_pos (struct m0_dix_cm_iter *iter, struct m0_fid *cctg_fid, uint64_t *cctg_proc_recs_nr)
 
M0_INTERNAL void m0_dix_cm_iter_processed_num (struct m0_dix_cm_iter *iter, uint64_t *proc_recs_nr)
 
M0_INTERNAL int m0_dix_rebalance_sw_onwire_fop_setup (struct m0_cm *cm, struct m0_fop *fop, void(*fop_release)(struct m0_ref *), uint64_t proxy_id, const char *local_ep, const struct m0_cm_sw *sw, const struct m0_cm_sw *out_interval)
 
M0_INTERNAL int m0_dix_cm_ag_alloc (struct m0_cm *cm, const struct m0_cm_ag_id *id, bool has_incoming, struct m0_cm_aggr_group **out)
 
static int dix_rebalance_cm_prepare (struct m0_cm *cm)
 
static struct m0_cm_cpdix_rebalance_cm_cp_alloc (struct m0_cm *cm)
 
static void dix_rebalance_cm_stop (struct m0_cm *cm)
 
M0_INTERNAL void m0_dix_cm_rebalance_cpx_init (void)
 
M0_INTERNAL void m0_dix_cm_rebalance_cpx_fini (void)
 
static int dix_rebalance_svc_allocate (struct m0_reqh_service **service, const struct m0_reqh_service_type *stype)
 
 M0_DIX_CM_TYPE_DECLARE (dix_rebalance, M0_CM_DIX_REB_OPCODE, &dix_rebalance_svc_type_ops, "M0_CST_DIX_REB", M0_CST_DIX_REB)
 
static int dix_rebalance_svc_start (struct m0_reqh_service *service)
 
static void dix_rebalance_svc_stop (struct m0_reqh_service *service)
 
M0_INTERNAL int m0_dix_repair_sw_onwire_fop_setup (struct m0_cm *cm, struct m0_fop *fop, void(*fop_release)(struct m0_ref *), uint64_t proxy_id, const char *local_ep, const struct m0_cm_sw *sw, const struct m0_cm_sw *out_interval)
 
static int dix_repair_cm_prepare (struct m0_cm *cm)
 
static struct m0_cm_cpdix_repair_cm_cp_alloc (struct m0_cm *cm)
 
static void dix_repair_cm_stop (struct m0_cm *cm)
 
M0_INTERNAL void m0_dix_cm_repair_cpx_init (void)
 
M0_INTERNAL void m0_dix_cm_repair_cpx_fini (void)
 
static int dix_repair_svc_allocate (struct m0_reqh_service **service, const struct m0_reqh_service_type *stype)
 
 M0_DIX_CM_TYPE_DECLARE (dix_repair, M0_CM_DIX_REP_OPCODE, &dix_repair_svc_type_ops, "M0_CST_DIX_REP", M0_CST_DIX_REP)
 
static int dix_repair_svc_start (struct m0_reqh_service *service)
 
static void dix_repair_svc_stop (struct m0_reqh_service *service)
 
static int dix_trigger_fom_create (struct m0_fop *fop, struct m0_fom **out, struct m0_reqh *reqh)
 
static struct m0_fop_typedix_fop_type (uint32_t op)
 
static uint64_t dix_progress (struct m0_fom *fom, bool reinit_counter)
 
static void dix_prepare (struct m0_fom *fom)
 

Variables

M0_EXTERN const struct m0_cm_cp_ops m0_dix_cm_repair_cp_ops
 
M0_EXTERN const struct m0_cm_cp_ops m0_dix_cm_rebalance_cp_ops
 
M0_EXTERN struct m0_cm_type dix_repair_cmt
 
M0_EXTERN struct m0_cm_type dix_rebalance_cmt
 
M0_EXTERN struct m0_dix_cm_type dix_repair_dcmt
 
M0_EXTERN struct m0_dix_cm_type dix_rebalance_dcmt
 
enum dix_cm_iter_phase M0_XCA_DOMAIN
 
static struct m0_sm_state_descr dix_cm_iter_phases []
 
static struct m0_sm_trans_descr dix_cm_iter_trans []
 
static const struct m0_sm_conf dix_cm_iter_sm_conf
 
static const struct m0_fom_ops dix_cm_iter_fom_ops
 
static const struct m0_fom_type_ops dix_cm_iter_fom_type_ops
 
const struct m0_cm_ops dix_rebalance_ops
 
static const struct m0_reqh_service_type_ops dix_rebalance_svc_type_ops
 
static const struct m0_reqh_service_ops dix_rebalance_svc_ops
 
const struct m0_cm_ops dix_rebalance_ops
 
const struct m0_fom_type_ops dix_rebalance_cp_fom_type_ops
 
const struct m0_cm_ops dix_repair_ops
 
static const struct m0_reqh_service_type_ops dix_repair_svc_type_ops
 
static const struct m0_reqh_service_ops dix_repair_svc_ops
 
const struct m0_cm_ops dix_repair_ops
 
const struct m0_fom_type_ops dix_repair_cp_fom_type_ops
 
static const struct m0_fom_trigger_ops dix_trigger_ops
 
const struct m0_fom_type_ops m0_dix_trigger_fom_type_ops
 
const struct m0_fom_type_ops m0_dix_trigger_fom_type_ops
 

Detailed Description

DIX copy machine is a replicated state machine, which performs data restructuring and handles device, container, node, &c failures.

See also
The DIX copy machine DLD

DIX copy machine implements a copy machine in-order to re-structure data efficiently in an event of a failure. It uses DIX (distributed index) and component catalogue infrastructure with parity de-clustering layout.

Macro Definition Documentation

◆ M0_DIX_CM_TYPE_DECLARE

#define M0_DIX_CM_TYPE_DECLARE (   cmtype,
  id,
  ops,
  name,
  typecode 
)
Value:
M0_CM_TYPE_DECLARE(cmtype, id, ops, name, typecode); \
M0_INTERNAL struct m0_dix_cm_type cmtype ## _dcmt = { \
.dct_base = &cmtype ## _cmt, \
}
struct m0_cm_type * dct_base
Definition: cm.h:106
const char * name
Definition: trace.c:110
#define M0_CM_TYPE_DECLARE(cmtype, id, ops, name, typecode)
Definition: cm.h:467
struct m0_fom_ops ops
Definition: io_foms.c:623

Definition at line 98 of file cm.h.

◆ M0_TRACE_SUBSYSTEM [1/7]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM

Definition at line 30 of file trigger_fom.c.

◆ M0_TRACE_SUBSYSTEM [2/7]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM

Definition at line 30 of file trigger_fop.c.

◆ M0_TRACE_SUBSYSTEM [3/7]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM

Definition at line 30 of file service.c.

◆ M0_TRACE_SUBSYSTEM [4/7]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM

Definition at line 30 of file cm.c.

◆ M0_TRACE_SUBSYSTEM [5/7]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM

Definition at line 30 of file trigger_fop.c.

◆ M0_TRACE_SUBSYSTEM [6/7]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM

Definition at line 30 of file service.c.

◆ M0_TRACE_SUBSYSTEM [7/7]

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM

Definition at line 30 of file cm.c.

Enumeration Type Documentation

◆ dix_cm_iter_phase

Enumerator
DIX_ITER_INIT 
DIX_ITER_FINAL 
DIX_ITER_STARTED 
DIX_ITER_DEL_LOCK 
DIX_ITER_CTIDX_START 
DIX_ITER_CTIDX_REPOS 
DIX_ITER_CTIDX_NEXT 
DIX_ITER_NEXT_CCTG 
DIX_ITER_META_LOCK 
DIX_ITER_CCTG_LOOKUP 
DIX_ITER_CCTG_START 
DIX_ITER_CCTG_CONT 
DIX_ITER_CCTG_CUR_NEXT 
DIX_ITER_NEXT_KEY 
DIX_ITER_IDLE_START 
DIX_ITER_DEL_TX_OPENED 
DIX_ITER_DEL_TX_WAIT 
DIX_ITER_DEL_TX_DONE 
DIX_ITER_IDLE_FIN 
DIX_ITER_CCTG_CHECK 
DIX_ITER_EOF 
DIX_ITER_FAILURE 

Definition at line 46 of file iter.c.

Function Documentation

◆ cm2dix()

M0_INTERNAL struct m0_dix_cm * cm2dix ( struct m0_cm cm)

Returns DIX copy machine context by embedded context.

Parameters
cmBase copy machine context.

DIX CM context.

Definition at line 308 of file cm.c.

Here is the caller graph for this function:

◆ dix_cm_ag_setup()

static int dix_cm_ag_setup ( struct m0_cm cm,
struct m0_cm_cp cp,
struct m0_fid cctg_fid,
uint64_t  recs_nr 
)
static

Definition at line 513 of file cm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_is_repair_coordinator()

static bool dix_cm_is_repair_coordinator ( struct m0_dix_layout_iter iter,
struct m0_poolmach pm,
uint64_t  local_dev 
)
static

Definition at line 820 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_buf_copy()

static int dix_cm_iter_buf_copy ( struct m0_buf dst,
struct m0_buf src,
m0_bcount_t  cutoff 
)
static

Definition at line 200 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_dtx_failure()

static int dix_cm_iter_dtx_failure ( struct m0_dix_cm_iter iter)
static

Definition at line 315 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_dtx_fini()

static void dix_cm_iter_dtx_fini ( struct m0_dix_cm_iter iter)
static

Definition at line 254 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_eof()

static int dix_cm_iter_eof ( struct m0_dix_cm_iter iter)
static

Definition at line 301 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_failure()

static int dix_cm_iter_failure ( struct m0_dix_cm_iter iter,
int  rc 
)
static

Definition at line 293 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_fini()

static void dix_cm_iter_fini ( struct m0_dix_cm_iter iter)
static

Definition at line 270 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_fom_fini()

static void dix_cm_iter_fom_fini ( struct m0_fom fom)
static

Definition at line 1404 of file iter.c.

Here is the call graph for this function:

◆ dix_cm_iter_fom_locality()

static uint64_t dix_cm_iter_fom_locality ( const struct m0_fom fom)
static

Definition at line 211 of file iter.c.

◆ dix_cm_iter_fom_tick()

static int dix_cm_iter_fom_tick ( struct m0_fom fom)
static

Definition at line 1034 of file iter.c.

Here is the call graph for this function:

◆ dix_cm_iter_idle()

static int dix_cm_iter_idle ( struct m0_dix_cm_iter iter)
static

Definition at line 308 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_init()

static void dix_cm_iter_init ( struct m0_dix_cm_iter iter)
static

Definition at line 224 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_meta_clink_cb()

static bool dix_cm_iter_meta_clink_cb ( struct m0_clink cl)
static

Definition at line 216 of file iter.c.

Here is the caller graph for this function:

◆ dix_cm_iter_meta_unlock()

static void dix_cm_iter_meta_unlock ( struct m0_dix_cm_iter iter)
static

Definition at line 1027 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_next_ast_cb()

static void dix_cm_iter_next_ast_cb ( struct m0_sm_group grp,
struct m0_sm_ast ast 
)
static

Definition at line 1447 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_next_key()

static int dix_cm_iter_next_key ( struct m0_dix_cm_iter iter,
struct m0_buf key,
struct m0_buf val,
bool *  is_coordinator 
)
static

Definition at line 961 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_rebalance_tgts_get()

static int dix_cm_iter_rebalance_tgts_get ( struct m0_dix_cm_iter iter,
struct m0_dix_layout_iter liter,
struct m0_poolmach pm,
uint64_t  local_device,
struct m0_buf key,
bool *  is_coordinator,
uint64_t **  tgts,
uint64_t *  tgts_nr 
)
static

Definition at line 862 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_repair_tgts_get()

static int dix_cm_iter_repair_tgts_get ( struct m0_dix_cm_iter iter,
struct m0_dix_layout_iter liter,
struct m0_poolmach pm,
uint64_t  local_device,
struct m0_buf key,
bool *  is_coordinator,
uint64_t **  tgts,
uint64_t *  tgts_nr 
)
static

Definition at line 940 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_stop_ast_cb()

static void dix_cm_iter_stop_ast_cb ( struct m0_sm_group grp,
struct m0_sm_ast ast 
)
static

Definition at line 1510 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_iter_tgts_fini()

static void dix_cm_iter_tgts_fini ( struct m0_dix_cm_iter iter)
static

Definition at line 262 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_layout_iter_init()

static int dix_cm_layout_iter_init ( struct m0_dix_layout_iter iter,
const struct m0_fid index,
struct m0_dix_layout layout,
struct m0_dix_cm dix_cm,
struct m0_buf key 
)
static

Definition at line 339 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_pm_get()

static struct m0_poolmach* dix_cm_pm_get ( struct m0_dix_cm dix_cm,
struct m0_dix_layout layout 
)
static

Definition at line 324 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_proxies_completed_cb()

static bool dix_cm_proxies_completed_cb ( struct m0_clink cl)
static

Definition at line 346 of file cm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_rebalance_tgts_get()

static int dix_cm_rebalance_tgts_get ( struct m0_dix_layout_iter iter,
struct m0_poolmach pm,
uint64_t *  group_tgts,
uint64_t  group_tgts_nr,
uint64_t  spare_id,
uint64_t **  tgts,
uint64_t *  tgts_nr 
)
static

Definition at line 467 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_repair_spare_has_data()

static bool dix_cm_repair_spare_has_data ( struct m0_dix_layout_iter iter,
struct m0_poolmach pm,
uint64_t *  group_tgts,
uint64_t  group_tgts_nr,
uint64_t  spare_id 
)
static

Definition at line 390 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_repair_tgts_get()

static int dix_cm_repair_tgts_get ( struct m0_dix_layout_iter iter,
struct m0_poolmach pm,
uint64_t **  tgts,
uint64_t *  tgts_nr 
)
static

Definition at line 566 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_sdev2proxy()

static struct m0_cm_proxy* dix_cm_sdev2proxy ( struct m0_dix_cm dcm,
uint32_t  sdev_id 
)
static

Definition at line 491 of file cm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_tgt_to_unit()

static int dix_cm_tgt_to_unit ( uint64_t  tgt,
uint64_t *  group_tgts,
uint64_t  group_tgts_nr,
uint64_t *  unit 
)
static

Definition at line 363 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dix_cm_tstats_calc()

static void dix_cm_tstats_calc ( int  loc_idx,
void *  loc_stats,
void *  total_stats 
)
static

Definition at line 414 of file cm.c.

Here is the caller graph for this function:

◆ dix_fop_type()

static struct m0_fop_type * dix_fop_type ( uint32_t  op)
static

Definition at line 78 of file trigger_fom.c.

Here is the caller graph for this function:

◆ dix_prepare()

static void dix_prepare ( struct m0_fom fom)
static

Definition at line 116 of file trigger_fom.c.

Here is the call graph for this function:

◆ dix_progress()

static uint64_t dix_progress ( struct m0_fom fom,
bool  reinit_counter 
)
static

Definition at line 102 of file trigger_fom.c.

Here is the call graph for this function:

◆ dix_rebalance_cm_cp_alloc()

static struct m0_cm_cp* dix_rebalance_cm_cp_alloc ( struct m0_cm cm)
static

Definition at line 58 of file cm.c.

Here is the call graph for this function:

◆ dix_rebalance_cm_prepare()

static int dix_rebalance_cm_prepare ( struct m0_cm cm)
static

Definition at line 49 of file cm.c.

Here is the call graph for this function:

◆ dix_rebalance_cm_stop()

static void dix_rebalance_cm_stop ( struct m0_cm cm)
static

Definition at line 68 of file cm.c.

Here is the call graph for this function:

◆ dix_rebalance_svc_allocate()

static int dix_rebalance_svc_allocate ( struct m0_reqh_service **  service,
const struct m0_reqh_service_type stype 
)
static

Copy machine service type operations.

Allocates and initialises REB copy machine. This allocates struct m0_dix_cm and invokes m0_cm_init() to initialise m0_dix_cm::rc_base.

Definition at line 75 of file service.c.

Here is the call graph for this function:

◆ dix_rebalance_svc_start()

static int dix_rebalance_svc_start ( struct m0_reqh_service service)
static

Copy machine service operations.

Definition at line 86 of file service.c.

Here is the call graph for this function:

◆ dix_rebalance_svc_stop()

static void dix_rebalance_svc_stop ( struct m0_reqh_service service)
static

Definition at line 101 of file service.c.

Here is the call graph for this function:

◆ dix_repair_cm_cp_alloc()

static struct m0_cm_cp* dix_repair_cm_cp_alloc ( struct m0_cm cm)
static

Definition at line 58 of file cm.c.

Here is the call graph for this function:

◆ dix_repair_cm_prepare()

static int dix_repair_cm_prepare ( struct m0_cm cm)
static

Definition at line 49 of file cm.c.

Here is the call graph for this function:

◆ dix_repair_cm_stop()

static void dix_repair_cm_stop ( struct m0_cm cm)
static

Definition at line 68 of file cm.c.

Here is the call graph for this function:

◆ dix_repair_svc_allocate()

static int dix_repair_svc_allocate ( struct m0_reqh_service **  service,
const struct m0_reqh_service_type stype 
)
static

Copy machine service type operations.

Allocates and initialises REP copy machine. This allocates struct m0_dix_cm and invokes m0_cm_init() to initialise m0_dix_cm::rc_base.

Definition at line 75 of file service.c.

Here is the call graph for this function:

◆ dix_repair_svc_start()

static int dix_repair_svc_start ( struct m0_reqh_service service)
static

Copy machine service operations.

Definition at line 84 of file service.c.

Here is the call graph for this function:

◆ dix_repair_svc_stop()

static void dix_repair_svc_stop ( struct m0_reqh_service service)
static

Definition at line 98 of file service.c.

Here is the call graph for this function:

◆ dix_trigger_fom_create()

static int dix_trigger_fom_create ( struct m0_fop fop,
struct m0_fom **  out,
struct m0_reqh reqh 
)
static

Definition at line 59 of file trigger_fom.c.

Here is the call graph for this function:

◆ m0_dix_cm2reqh()

M0_INTERNAL struct m0_reqh * m0_dix_cm2reqh ( const struct m0_dix_cm dcm)

Returns request handler context corresponding to DIX CM.

Parameters
dcmDIX copy machine.

Request handler context.

Definition at line 486 of file cm.c.

Here is the caller graph for this function:

◆ m0_dix_cm_ag_alloc()

M0_INTERNAL int m0_dix_cm_ag_alloc ( struct m0_cm cm,
const struct m0_cm_ag_id id,
bool  has_incoming,
struct m0_cm_aggr_group **  out 
)

Allocates and initialises DIX CM aggregation group.

Parameters
[in]cmBase copy machine.
[in]idAggregation group ID.
[in]has_incomingShows whether incoming copy packets for this aggregation group expected.
[out]outAllocated an initialised aggregation group.

0 on success or -ENOMEM.

See also
m0_cm_aggr_group_init()

Definition at line 88 of file ag.c.

Here is the call graph for this function:

◆ m0_dix_cm_ag_next()

M0_INTERNAL int m0_dix_cm_ag_next ( struct m0_cm cm,
const struct m0_cm_ag_id id_curr,
struct m0_cm_ag_id id_next 
)

Function always returns -ENOENT as incoming aggregation group list is not populated in case of DIX repair/re-balance, because local CM doesn't know how many copy packets it will receive.

Definition at line 473 of file cm.c.

Here is the call graph for this function:

◆ m0_dix_cm_data_next()

M0_INTERNAL int m0_dix_cm_data_next ( struct m0_cm cm,
struct m0_cm_cp cp 
)

Gets next key/value using DIX CM iterator and prepares DIX copy packet to be sent. Function returns M0_FSO_WAIT, M0_FSO_AGAIN or negative error code.

Parameters
cmBase copy machine context.
cpBase copy packet embedded into DIX copy packet.

Definition at line 535 of file cm.c.

Here is the call graph for this function:

◆ m0_dix_cm_fid_repair_done()

M0_INTERNAL enum dix_repair_state m0_dix_cm_fid_repair_done ( struct m0_fid gfid,
struct m0_reqh reqh,
enum m0_pool_nd_state  device_state 
)

Returns state of DIX repair process with respect to .

Parameters
gfidInput global fid for which DIX repair state has to be retrieved.
reqhParent request handler object.
Precondition
m0_fid_is_valid(gfid) && reqh != NULL.

1 if DIX repair has not started at all. 2 if DIX repair has started but not completed for . 3 if DIX repair has started and completed for .

◆ m0_dix_cm_fini()

M0_INTERNAL void m0_dix_cm_fini ( struct m0_cm cm)

Finalises DIX copy machine by embedded context.

Parameters
cmBase copy machine context.

Definition at line 461 of file cm.c.

◆ m0_dix_cm_iter_cur_pos()

M0_INTERNAL void m0_dix_cm_iter_cur_pos ( struct m0_dix_cm_iter iter,
struct m0_fid cctg_fid,
uint64_t *  cctg_proc_recs_nr 
)

Gets fid of component catalogue that is currently under processing and number of processed records of this component catalogue.

Parameters
[in]iterDIX CM iterator.
[out]cctg_fidCurrent component catalogue fid.
[out]cctg_proc_recs_nrNumber of processed records.

Definition at line 1537 of file iter.c.

Here is the caller graph for this function:

◆ m0_dix_cm_iter_get()

M0_INTERNAL int m0_dix_cm_iter_get ( struct m0_dix_cm_iter iter,
struct m0_buf key,
struct m0_buf val,
uint32_t *  sdev_id 
)

Gets current key/value and remote device id for which retrieved key/value are targeted to.

Note
Key/value buffers are copied inside of this function, caller is responsible for their deallocation.
Parameters
[in]iterDIX CM iterator.
[in]keyBuffer which data pointer will be set to key.
[in]valBuffer which data pointer will be set to value.
[out]sdev_idRemote device id.

0 on success. -ENODATA if all local catalogues are processed. Other error code on iterator failure.

See also
m0_dix_cm_iter_next()

Definition at line 1465 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_iter_next()

M0_INTERNAL void m0_dix_cm_iter_next ( struct m0_dix_cm_iter iter)

Wakes up DIX CM iterator FOM to move the iterator to the next record. Than key/value can be retrieved using () function.

Parameters
iterDIX CM iterator.
See also
m0_dix_cm_iter_get()

Definition at line 1458 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_iter_processed_num()

M0_INTERNAL void m0_dix_cm_iter_processed_num ( struct m0_dix_cm_iter iter,
uint64_t *  proc_recs_nr 
)

Gets current number of overall processed records by iterator .

Parameters
[in]iterDIX CM iterator.
[out]proc_recs_nrNumber of overall processed records.

Definition at line 1546 of file iter.c.

◆ m0_dix_cm_iter_start()

M0_INTERNAL int m0_dix_cm_iter_start ( struct m0_dix_cm_iter iter,
struct m0_dix_cm_type dcmt,
struct m0_reqh reqh,
m0_bcount_t  rpc_cutoff 
)

Starts DIX CM iterator by queueing of corresponding FOM for execution. Function always returns success for now.

Parameters
iterDIX CM iterator.
dcmtDIX CM iterator type.
reqhCorresponding request handler.
rpc_cutoffThreshold in bytes for transmission using bulk.

0 On success.

Definition at line 1429 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_iter_stop()

M0_INTERNAL void m0_dix_cm_iter_stop ( struct m0_dix_cm_iter iter)

Tells DIX CM iterator to stop and waits for the final state of its FOM. Please note that no external lock should be held before calling this function, because it may wait and block. Otherwise, deadlock may appear on that external lock.

Parameters
iterDIX CM iterator.
See also
m0_dix_cm_iter_start()

Definition at line 1525 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_iter_type_register()

M0_INTERNAL void m0_dix_cm_iter_type_register ( struct m0_dix_cm_type dcmt)

Registers DIX CM iterator FOM type.

Parameters
dcmtDIX CM iterator type.

Definition at line 1419 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_prepare()

M0_INTERNAL int m0_dix_cm_prepare ( struct m0_cm cm)

Prepares DIX copy machine to operate where is embedded.

Parameters
cmBase copy machine context.

Always success for now.

Definition at line 337 of file cm.c.

Here is the call graph for this function:

◆ m0_dix_cm_rebalance_cpx_fini()

M0_INTERNAL void m0_dix_cm_rebalance_cpx_fini ( void  )

Finalises DIX re-balance FOP and reply FOP types.

See also
m0_dix_cpx_fini()

Definition at line 84 of file rebalance_cp_onwire.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_rebalance_cpx_init()

M0_INTERNAL void m0_dix_cm_rebalance_cpx_init ( void  )

Initialises DIX re-balance FOP and reply FOP types.

See also
m0_dix_cpx_init()

Definition at line 63 of file rebalance_cp_onwire.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_rebalance_trigger_fop_fini()

M0_INTERNAL void m0_dix_cm_rebalance_trigger_fop_fini ( void  )

Finalises DIX re-balance trigger fops.

Finalises start, quiesce, status, abort re-balance trigger FOP and corresponding reply FOP types.

See also
m0_cm_trigger_fop_fini()

Finalises re-balance trigger fops.

Definition at line 45 of file trigger_fop.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_rebalance_trigger_fop_init()

M0_INTERNAL void m0_dix_cm_rebalance_trigger_fop_init ( void  )

Initialises DIX re-balance trigger fops.

Initialises start, quiesce, status, abort re-balance trigger FOP and corresponding reply FOP types.

See also
m0_cm_trigger_fop_init()

Initialises re-balance trigger fops.

Definition at line 63 of file trigger_fop.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_repair_cpx_fini()

M0_INTERNAL void m0_dix_cm_repair_cpx_fini ( void  )

Finalises DIX repair FOP and reply FOP types.

See also
m0_dix_cpx_fini()

Definition at line 83 of file repair_cp_onwire.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_repair_cpx_init()

M0_INTERNAL void m0_dix_cm_repair_cpx_init ( void  )

Initialises DIX rerepair FOP and reply FOP types.

See also
m0_dix_cpx_init()

Definition at line 62 of file repair_cp_onwire.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_repair_trigger_fop_fini()

M0_INTERNAL void m0_dix_cm_repair_trigger_fop_fini ( void  )

Finalises DIX repair trigger fops.

Finalises start, quiesce, status, abort repair trigger FOP and corresponding reply FOP types.

See also
m0_cm_trigger_fop_fini()

Finalises repair trigger fops.

Definition at line 45 of file trigger_fop.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_repair_trigger_fop_init()

M0_INTERNAL void m0_dix_cm_repair_trigger_fop_init ( void  )

Initialises DIX repair trigger fops.

Initialises start, quiesce, status, abort repair trigger FOP and corresponding reply FOP types.

See also
m0_cm_trigger_fop_init()

Initialises repair trigger fops.

Definition at line 63 of file trigger_fop.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_setup()

M0_INTERNAL int m0_dix_cm_setup ( struct m0_cm cm)

Does nothing.

Always success.

Definition at line 332 of file cm.c.

Here is the call graph for this function:

◆ m0_dix_cm_start()

M0_INTERNAL int m0_dix_cm_start ( struct m0_cm cm)

Starts DIX copy machine by embedded context.

Parameters
cmBase copy machine context.

0 On success. -ENOMEM On out of memory. -errno On error.

Definition at line 367 of file cm.c.

Here is the call graph for this function:

◆ m0_dix_cm_stop()

M0_INTERNAL void m0_dix_cm_stop ( struct m0_cm cm)

Stops DIX copy machine where is embedded.

Parameters
cmBase copy machine context.

Definition at line 425 of file cm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_svc_fini()

M0_INTERNAL void m0_dix_cm_svc_fini ( struct m0_reqh_service service)

Finalises DIX copy machine service.

Parameters
serviceDIX copy machine service to be finalised.

Definition at line 113 of file service.c.

Here is the call graph for this function:

◆ M0_DIX_CM_TYPE_DECLARE() [1/2]

M0_DIX_CM_TYPE_DECLARE ( dix_repair  ,
M0_CM_DIX_REP_OPCODE  ,
dix_repair_svc_type_ops,
"M0_CST_DIX_REP"  ,
M0_CST_DIX_REP   
)

◆ M0_DIX_CM_TYPE_DECLARE() [2/2]

M0_DIX_CM_TYPE_DECLARE ( dix_rebalance  ,
M0_CM_DIX_REB_OPCODE  ,
dix_rebalance_svc_type_ops,
"M0_CST_DIX_REB"  ,
M0_CST_DIX_REB   
)

◆ m0_dix_cm_type_deregister()

M0_INTERNAL void m0_dix_cm_type_deregister ( void  )

De-registers DIX copy machine type and its corresponding request handler service type.

Definition at line 326 of file cm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_cm_type_register()

M0_INTERNAL int m0_dix_cm_type_register ( void  )

Registers DIX copy machine type and its corresponding request handler service type.

Definition at line 313 of file cm.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_get_space_for()

M0_INTERNAL int m0_dix_get_space_for ( struct m0_cm cm,
const struct m0_cm_ag_id id,
size_t *  count 
)

Checks whether there is enough space to continue DIX repair/re-balance process.

Always true for now.

Definition at line 465 of file cm.c.

Here is the call graph for this function:

◆ m0_dix_is_peer()

M0_INTERNAL bool m0_dix_is_peer ( struct m0_cm cm,
struct m0_reqh_service_ctx ctx 
)

Returns true if remote replica identified by has CAS type.

Parameters
cmBase copy machine context.
ctxRemote replica.

true If service has CAS type. false Otherwise.

Definition at line 623 of file cm.c.

◆ m0_dix_rebalance_sw_onwire_fop_fini()

M0_INTERNAL void m0_dix_rebalance_sw_onwire_fop_fini ( void  )

Finalises DIX re-balance sliding-window fop.

See also
m0_cm_repreb_sw_onwire_fop_fini()

Definition at line 84 of file sw_fop.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_rebalance_sw_onwire_fop_init()

M0_INTERNAL void m0_dix_rebalance_sw_onwire_fop_init ( void  )

Initialises DIX re-balance sliding-window fop.

See also
m0_cm_repreb_sw_onwire_fop_init()

Definition at line 65 of file sw_fop.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_rebalance_sw_onwire_fop_setup()

M0_INTERNAL int m0_dix_rebalance_sw_onwire_fop_setup ( struct m0_cm cm,
struct m0_fop fop,
void(*)(struct m0_ref *)  fop_release,
uint64_t  proxy_id,
const char *  local_ep,
const struct m0_cm_sw sw,
const struct m0_cm_sw out_interval 
)
See also
m0_cm_repreb_sw_onwire_fop_setup()

Definition at line 92 of file sw_fop.c.

Here is the call graph for this function:

◆ m0_dix_repair_sw_onwire_fop_fini()

M0_INTERNAL void m0_dix_repair_sw_onwire_fop_fini ( void  )

Finalises DIX repair sliding-window fop.

See also
m0_cm_repreb_sw_onwire_fop_fini()

Definition at line 84 of file sw_fop.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_repair_sw_onwire_fop_init()

M0_INTERNAL void m0_dix_repair_sw_onwire_fop_init ( void  )

Initialises DIX repair sliding-window fop.

See also
m0_cm_repreb_sw_onwire_fop_init()

Definition at line 65 of file sw_fop.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ m0_dix_repair_sw_onwire_fop_setup()

M0_INTERNAL int m0_dix_repair_sw_onwire_fop_setup ( struct m0_cm cm,
struct m0_fop fop,
void(*)(struct m0_ref *)  fop_release,
uint64_t  proxy_id,
const char *  local_ep,
const struct m0_cm_sw sw,
const struct m0_cm_sw out_interval 
)
See also
m0_cm_repreb_sw_onwire_fop_setup()

Definition at line 92 of file sw_fop.c.

Here is the call graph for this function:

◆ parity_group_print()

static void parity_group_print ( struct m0_dix_layout_iter iter,
struct m0_poolmach pm,
uint64_t  local_device,
struct m0_buf key 
)
static

Definition at line 700 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ spare_usage_print()

static void spare_usage_print ( struct m0_dix_layout_iter iter,
struct m0_poolmach pm 
)
static

Definition at line 744 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tgts_print()

static void tgts_print ( struct m0_dix_layout_iter iter,
uint64_t *  tgts,
uint64_t  tgts_nr,
struct m0_buf key 
)
static

Definition at line 794 of file iter.c.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ dix_cm_iter_fom_ops

const struct m0_fom_ops dix_cm_iter_fom_ops
static
Initial value:
= {
.fo_home_locality = dix_cm_iter_fom_locality
}
static int dix_cm_iter_fom_tick(struct m0_fom *fom)
Definition: iter.c:1034
static void dix_cm_iter_fom_fini(struct m0_fom *fom)
Definition: iter.c:1404
static uint64_t dix_cm_iter_fom_locality(const struct m0_fom *fom)
Definition: iter.c:211

Definition at line 1409 of file iter.c.

◆ dix_cm_iter_fom_type_ops

const struct m0_fom_type_ops dix_cm_iter_fom_type_ops
static
Initial value:
= {
.fto_create = NULL
}
#define NULL
Definition: misc.h:38

Definition at line 1415 of file iter.c.

◆ dix_cm_iter_phases

struct m0_sm_state_descr dix_cm_iter_phases[]
static

Definition at line 71 of file iter.c.

◆ dix_cm_iter_sm_conf

const struct m0_sm_conf dix_cm_iter_sm_conf
static
Initial value:
= {
.scf_name = "dix_cm_iter",
.scf_nr_states = ARRAY_SIZE(dix_cm_iter_phases),
.scf_state = dix_cm_iter_phases,
.scf_trans_nr = ARRAY_SIZE(dix_cm_iter_trans),
.scf_trans = dix_cm_iter_trans
}
static struct m0_sm_state_descr dix_cm_iter_phases[]
Definition: iter.c:71
static struct m0_sm_trans_descr dix_cm_iter_trans[]
Definition: iter.c:175
#define ARRAY_SIZE(a)
Definition: misc.h:45

Definition at line 192 of file iter.c.

◆ dix_cm_iter_trans

struct m0_sm_trans_descr dix_cm_iter_trans[]
static
Initial value:
Todo:
Revise this array.

Definition at line 175 of file iter.c.

◆ dix_rebalance_cmt

M0_EXTERN struct m0_cm_type dix_rebalance_cmt

Definition at line 174 of file cm.h.

◆ dix_rebalance_cp_fom_type_ops

const struct m0_fom_type_ops dix_rebalance_cp_fom_type_ops

Definition at line 40 of file rebalance_cp_onwire.c.

◆ dix_rebalance_dcmt

M0_EXTERN struct m0_dix_cm_type dix_rebalance_dcmt

Definition at line 176 of file cm.h.

◆ dix_rebalance_ops [1/2]

const struct m0_cm_ops dix_rebalance_ops

Copy machine operations.

Definition at line 79 of file cm.c.

◆ dix_rebalance_ops [2/2]

const struct m0_cm_ops dix_rebalance_ops
Initial value:
= {
.cmo_setup = m0_dix_cm_setup,
.cmo_prepare = dix_rebalance_cm_prepare,
.cmo_start = m0_dix_cm_start,
.cmo_ag_alloc = m0_dix_cm_ag_alloc,
.cmo_cp_alloc = dix_rebalance_cm_cp_alloc,
.cmo_data_next = m0_dix_cm_data_next,
.cmo_ag_next = m0_dix_cm_ag_next,
.cmo_get_space_for = m0_dix_get_space_for,
.cmo_sw_onwire_fop_setup = m0_dix_rebalance_sw_onwire_fop_setup,
.cmo_is_peer = m0_dix_is_peer,
.cmo_stop = dix_rebalance_cm_stop,
.cmo_fini = m0_dix_cm_fini
}
M0_INTERNAL int m0_dix_rebalance_sw_onwire_fop_setup(struct m0_cm *cm, struct m0_fop *fop, void(*fop_release)(struct m0_ref *), uint64_t proxy_id, const char *local_ep, const struct m0_cm_sw *sw, const struct m0_cm_sw *out_interval)
Definition: sw_fop.c:92
M0_INTERNAL int m0_dix_cm_data_next(struct m0_cm *cm, struct m0_cm_cp *cp)
Definition: cm.c:535
static void dix_rebalance_cm_stop(struct m0_cm *cm)
Definition: cm.c:68
M0_INTERNAL void m0_dix_cm_fini(struct m0_cm *cm)
Definition: cm.c:461
M0_INTERNAL int m0_dix_cm_setup(struct m0_cm *cm)
Definition: cm.c:332
static struct m0_cm_cp * dix_rebalance_cm_cp_alloc(struct m0_cm *cm)
Definition: cm.c:58
static int dix_rebalance_cm_prepare(struct m0_cm *cm)
Definition: cm.c:49
M0_INTERNAL int m0_dix_cm_ag_alloc(struct m0_cm *cm, const struct m0_cm_ag_id *id, bool has_incoming, struct m0_cm_aggr_group **out)
Definition: ag.c:88
M0_INTERNAL int m0_dix_cm_ag_next(struct m0_cm *cm, const struct m0_cm_ag_id *id_curr, struct m0_cm_ag_id *id_next)
Definition: cm.c:473
M0_INTERNAL int m0_dix_cm_start(struct m0_cm *cm)
Definition: cm.c:367
M0_INTERNAL bool m0_dix_is_peer(struct m0_cm *cm, struct m0_reqh_service_ctx *ctx)
Definition: cm.c:623
M0_INTERNAL int m0_dix_get_space_for(struct m0_cm *cm, const struct m0_cm_ag_id *id, size_t *count)
Definition: cm.c:465

Copy machine operations.

Definition at line 79 of file cm.c.

◆ dix_rebalance_svc_ops

const struct m0_reqh_service_ops dix_rebalance_svc_ops
static
Initial value:
= {
.rso_fini = m0_dix_cm_svc_fini
}
static void dix_rebalance_svc_stop(struct m0_reqh_service *service)
Definition: service.c:101
static int dix_rebalance_svc_start(struct m0_reqh_service *service)
Definition: service.c:86
int m0_reqh_service_async_start_simple(struct m0_reqh_service_start_async_ctx *asc)
Definition: reqh_service.c:601
M0_INTERNAL void m0_dix_cm_svc_fini(struct m0_reqh_service *service)
Definition: service.c:113

Definition at line 60 of file service.c.

◆ dix_rebalance_svc_type_ops

const struct m0_reqh_service_type_ops dix_rebalance_svc_type_ops
static
Initial value:
= {
.rsto_service_allocate = dix_rebalance_svc_allocate
}
static int dix_rebalance_svc_allocate(struct m0_reqh_service **service, const struct m0_reqh_service_type *stype)
Definition: service.c:75

Definition at line 48 of file service.c.

◆ dix_repair_cmt

M0_EXTERN struct m0_cm_type dix_repair_cmt

Definition at line 173 of file cm.h.

◆ dix_repair_cp_fom_type_ops

const struct m0_fom_type_ops dix_repair_cp_fom_type_ops

Definition at line 39 of file repair_cp_onwire.c.

◆ dix_repair_dcmt

M0_EXTERN struct m0_dix_cm_type dix_repair_dcmt

Definition at line 175 of file cm.h.

◆ dix_repair_ops [1/2]

const struct m0_cm_ops dix_repair_ops

Copy machine operations.

Definition at line 79 of file cm.c.

◆ dix_repair_ops [2/2]

const struct m0_cm_ops dix_repair_ops
Initial value:
= {
.cmo_setup = m0_dix_cm_setup,
.cmo_prepare = dix_repair_cm_prepare,
.cmo_start = m0_dix_cm_start,
.cmo_ag_alloc = m0_dix_cm_ag_alloc,
.cmo_cp_alloc = dix_repair_cm_cp_alloc,
.cmo_data_next = m0_dix_cm_data_next,
.cmo_ag_next = m0_dix_cm_ag_next,
.cmo_get_space_for = m0_dix_get_space_for,
.cmo_sw_onwire_fop_setup = m0_dix_repair_sw_onwire_fop_setup,
.cmo_is_peer = m0_dix_is_peer,
.cmo_stop = dix_repair_cm_stop,
.cmo_fini = m0_dix_cm_fini
}
static struct m0_cm_cp * dix_repair_cm_cp_alloc(struct m0_cm *cm)
Definition: cm.c:58
M0_INTERNAL int m0_dix_cm_data_next(struct m0_cm *cm, struct m0_cm_cp *cp)
Definition: cm.c:535
static void dix_repair_cm_stop(struct m0_cm *cm)
Definition: cm.c:68
M0_INTERNAL void m0_dix_cm_fini(struct m0_cm *cm)
Definition: cm.c:461
M0_INTERNAL int m0_dix_cm_setup(struct m0_cm *cm)
Definition: cm.c:332
static int dix_repair_cm_prepare(struct m0_cm *cm)
Definition: cm.c:49
M0_INTERNAL int m0_dix_cm_ag_alloc(struct m0_cm *cm, const struct m0_cm_ag_id *id, bool has_incoming, struct m0_cm_aggr_group **out)
Definition: ag.c:88
M0_INTERNAL int m0_dix_cm_ag_next(struct m0_cm *cm, const struct m0_cm_ag_id *id_curr, struct m0_cm_ag_id *id_next)
Definition: cm.c:473
M0_INTERNAL int m0_dix_cm_start(struct m0_cm *cm)
Definition: cm.c:367
M0_INTERNAL bool m0_dix_is_peer(struct m0_cm *cm, struct m0_reqh_service_ctx *ctx)
Definition: cm.c:623
M0_INTERNAL int m0_dix_get_space_for(struct m0_cm *cm, const struct m0_cm_ag_id *id, size_t *count)
Definition: cm.c:465
M0_INTERNAL int m0_dix_repair_sw_onwire_fop_setup(struct m0_cm *cm, struct m0_fop *fop, void(*fop_release)(struct m0_ref *), uint64_t proxy_id, const char *local_ep, const struct m0_cm_sw *sw, const struct m0_cm_sw *out_interval)
Definition: sw_fop.c:92

Copy machine operations.

Definition at line 79 of file cm.c.

◆ dix_repair_svc_ops

const struct m0_reqh_service_ops dix_repair_svc_ops
static
Initial value:
= {
.rso_start = dix_repair_svc_start,
.rso_stop = dix_repair_svc_stop,
.rso_fini = m0_dix_cm_svc_fini
}
static int dix_repair_svc_start(struct m0_reqh_service *service)
Definition: service.c:84
static void dix_repair_svc_stop(struct m0_reqh_service *service)
Definition: service.c:98
int m0_reqh_service_async_start_simple(struct m0_reqh_service_start_async_ctx *asc)
Definition: reqh_service.c:601
M0_INTERNAL void m0_dix_cm_svc_fini(struct m0_reqh_service *service)
Definition: service.c:113

Definition at line 60 of file service.c.

◆ dix_repair_svc_type_ops

const struct m0_reqh_service_type_ops dix_repair_svc_type_ops
static
Initial value:
= {
.rsto_service_allocate = dix_repair_svc_allocate
}
static int dix_repair_svc_allocate(struct m0_reqh_service **service, const struct m0_reqh_service_type *stype)
Definition: service.c:75

Definition at line 48 of file service.c.

◆ dix_trigger_ops

const struct m0_fom_trigger_ops dix_trigger_ops
static
Initial value:
= {
.fto_type = dix_fop_type,
.fto_progress = dix_progress,
.fto_prepare = dix_prepare
}
static struct m0_fop_type * dix_fop_type(uint32_t op)
Definition: trigger_fom.c:78
static uint64_t dix_progress(struct m0_fom *fom, bool reinit_counter)
Definition: trigger_fom.c:102
static void dix_prepare(struct m0_fom *fom)
Definition: trigger_fom.c:116

Definition at line 49 of file trigger_fom.c.

◆ m0_dix_cm_rebalance_cp_ops

M0_EXTERN const struct m0_cm_cp_ops m0_dix_cm_rebalance_cp_ops

Definition at line 172 of file cm.h.

◆ m0_dix_cm_repair_cp_ops

M0_EXTERN const struct m0_cm_cp_ops m0_dix_cm_repair_cp_ops

Definition at line 171 of file cm.h.

◆ m0_dix_trigger_fom_type_ops [1/2]

const struct m0_fom_type_ops m0_dix_trigger_fom_type_ops
Initial value:
= {
.fto_create = dix_trigger_fom_create,
}
static int dix_trigger_fom_create(struct m0_fop *fop, struct m0_fom **out, struct m0_reqh *reqh)
Definition: trigger_fom.c:59

Definition at line 55 of file trigger_fom.c.

◆ m0_dix_trigger_fom_type_ops [2/2]

const struct m0_fom_type_ops m0_dix_trigger_fom_type_ops

Definition at line 55 of file trigger_fom.c.

◆ M0_XCA_DOMAIN

enum dix_cm_iter_phase M0_XCA_DOMAIN