Motr  M0
iter.c File Reference
#include <unistd.h>
#include "lib/trace.h"
#include "lib/memory.h"
#include "sm/sm.h"
#include "fop/fom.h"
#include "dix/cm/cm.h"
#include "pool/pool.h"
#include "pool/pool_machine.h"
#include "reqh/reqh.h"
#include "lib/finject.h"
#include "dix/fid_convert.h"
#include "dix/cm/iter.h"
Include dependency graph for iter.c:

Go to the source code of this file.

Macros

#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

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)
 

Variables

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
 

Macro Definition Documentation

◆ M0_TRACE_SUBSYSTEM

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_DIXCM

Definition at line 23 of file iter.c.