23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_BE 46 #define gft_fmt_group_choose(gft) (gft->gft_fmt_group_decoded != NULL ? \ 47 gft->gft_fmt_group_decoded : \ 95 size_cblock = m0_be_fmt_cblock_size_max(
NULL);
152 m0_be_fmt_cblock_decoded_free(
184 m0_be_fmt_cblock_decoded_free(
192 .
ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_ASSIGNS",
197 .ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_OP_INIT",
202 .ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_FMT_GROUP_INIT",
207 .ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_FMT_CBLOCK_INIT",
212 .ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_LOG_RECORD_INIT",
217 .ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_LOG_RECORD_IO_CREATE_GROUP",
222 .ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_LOG_RECORD_IO_CREATE_CBLOCK",
227 .ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_LOG_RECORD_ITER_INIT",
232 .ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_INITED",
237 .ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_LOG_RECORD_ALLOCATE",
242 .ml_name =
"M0_BE_GROUP_FORMAT_LEVEL_ALLOCATED",
337 "encode can't fail here: rc = %d",
rc);
342 "encode can't fail here: rc = %d",
rc);
445 .fgc_payload_size_max = cred_payload,
450 lio_size[1] = m0_be_fmt_cblock_size_max(
NULL);
479 size_reserved, size_group, size_cblock);
602 #undef M0_TRACE_SUBSYSTEM M0_INTERNAL void m0_be_log_discard_item_finished(struct m0_be_log_discard *ld, struct m0_be_log_discard_item *ldi)
M0_INTERNAL void m0_be_log_record_io_size_set(struct m0_be_log_record *record, int index, m0_bcount_t size)
M0_INTERNAL struct m0_bufvec * m0_be_log_record_io_bufvec(struct m0_be_log_record *record, int index)
M0_INTERNAL uint32_t m0_be_fmt_group_reg_nr(const struct m0_be_fmt_group *fg)
M0_INTERNAL void m0_be_group_format_prepare(struct m0_be_group_format *gft, struct m0_be_op *op)
#define M0_BE_FMT_DECODE_CFG_DEFAULT
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
M0_INTERNAL void m0_be_group_format_log_read(struct m0_be_group_format *gft, struct m0_be_op *op)
M0_INTERNAL void m0_be_group_format_seg_io_credit(struct m0_be_group_format_cfg *gft_cfg, struct m0_be_io_credit *io_cred)
M0_INTERNAL m0_bindex_t m0_be_group_format_log_discarded(const struct m0_be_group_format *gft)
M0_INTERNAL void m0_be_group_format_reg_get(const struct m0_be_group_format *gft, uint32_t index, struct m0_be_reg_d *rd)
M0_INTERNAL void m0_be_group_format_recovery_prepare(struct m0_be_group_format *gft, struct m0_be_log *log)
M0_INTERNAL int m0_be_log_record_iter_init(struct m0_be_log_record_iter *iter)
static struct buffer * cur(struct m0_addb2_mach *mach, m0_bcount_t space)
M0_INTERNAL void m0_be_fmt_group_reg_add(struct m0_be_fmt_group *fg, const struct m0_be_fmt_reg *freg)
static int be_group_format_module_init(struct m0_be_group_format *gft, struct m0_be_group_format_cfg *gft_cfg, bool allocate)
M0_INTERNAL void m0_be_group_format_reset(struct m0_be_group_format *gft)
M0_INTERNAL int m0_be_log_record_allocate(struct m0_be_log_record *record)
M0_INTERNAL void m0_be_log_record_io_launch(struct m0_be_log_record *record, struct m0_be_op *op)
#define M0_LOG(level,...)
enum m0_trace_level level
M0_INTERNAL void m0_be_log_discard_item_starting(struct m0_be_log_discard *ld, struct m0_be_log_discard_item *ldi)
M0_INTERNAL void m0_be_group_format_encode(struct m0_be_group_format *gft)
M0_INTERNAL m0_bcount_t m0_be_log_reserved_size(struct m0_be_log *log, m0_bcount_t *lio_size, int lio_nr)
M0_INTERNAL void m0_be_pd_io_get(struct m0_be_pd *pd, struct m0_be_pd_io **pdio, struct m0_be_op *op)
M0_INTERNAL void m0_be_log_record_io_prepare(struct m0_be_log_record *record, enum m0_stob_io_opcode opcode, m0_bcount_t size_reserved)
M0_INTERNAL int m0_be_group_format_allocate(struct m0_be_group_format *gft)
M0_INTERNAL struct m0_be_io * m0_be_pd_io_be_io(struct m0_be_pd_io *pdio)
M0_INTERNAL struct m0 * m0_get(void)
M0_INTERNAL void m0_be_op_callback_set(struct m0_be_op *op, m0_be_op_cb_t cb, void *param, enum m0_be_op_state state)
#define container_of(ptr, type, member)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
static const struct m0_modlev be_group_format_levels[]
#define M0_BE_REG(seg, size, addr)
M0_INTERNAL void m0_be_fmt_group_tx_by_id(const struct m0_be_fmt_group *fg, uint32_t index, struct m0_be_fmt_tx *ftx)
M0_INTERNAL void m0_be_group_format_discard(struct m0_be_log_discard *ld, struct m0_be_log_discard_item *ldi)
M0_INTERNAL m0_bindex_t m0_be_log_record_discarded(const struct m0_be_log_record *record)
M0_INTERNAL int m0_be_fmt_group_decode(struct m0_be_fmt_group **fg, struct m0_bufvec_cursor *cur, const struct m0_be_fmt_decode_cfg *cfg)
#define M0_BE_REG_D(reg, buf)
M0_INTERNAL int m0_be_log_record_io_create(struct m0_be_log_record *record, m0_bcount_t size_max)
M0_INTERNAL void m0_be_group_format_reg_seg_add(struct m0_be_group_format *gft, const struct m0_be_reg_d *rd)
static int be_group_format_level_enter(struct m0_module *module)
M0_INTERNAL void m0_be_io_configure(struct m0_be_io *bio, enum m0_stob_io_opcode opcode)
M0_INTERNAL uint32_t m0_be_group_format_reg_nr(const struct m0_be_group_format *gft)
M0_INTERNAL void m0_be_log_record_assign(struct m0_be_log_record *record, struct m0_be_log_record_iter *iter, bool need_discard)
M0_INTERNAL void m0_be_pd_io_add(struct m0_be_pd *pd, struct m0_be_pd_io *pdio, struct m0_ext *ext, struct m0_be_op *op)
M0_INTERNAL void m0_be_fmt_group_decoded_free(struct m0_be_fmt_group *fg)
static void be_group_format_module_fini(struct m0_be_group_format *gft, bool deallocate)
struct m0_mutex * lc_lock
M0_INTERNAL void m0_be_group_format_module_setup(struct m0_be_group_format *gft, struct m0_be_group_format_cfg *gft_cfg)
return M0_ERR(-EOPNOTSUPP)
uint64_t fgc_reg_size_max
M0_INTERNAL struct m0_be_fmt_group_info * m0_be_fmt_group_info_get(struct m0_be_fmt_group *fg)
static void be_tx_group_format_seg_io_starting(struct m0_be_op *op, void *param)
M0_INTERNAL void m0_be_log_discard_item_get(struct m0_be_log_discard *ld, struct m0_be_op *op, struct m0_be_log_discard_item **ldi)
M0_INTERNAL void m0_be_group_format_seg_place(struct m0_be_group_format *gft, struct m0_be_op *op)
M0_INTERNAL void m0_be_group_format_log_write(struct m0_be_group_format *gft, struct m0_be_op *op)
m0_time_t m0_time_now(void)
M0_INTERNAL void m0_be_group_format_tx_add(struct m0_be_group_format *gft, struct m0_be_fmt_tx *ftx)
M0_INTERNAL m0_bcount_t m0_be_fmt_group_size_max(const struct m0_be_fmt_group_cfg *cfg)
static struct m0_bufvec bvec
M0_INTERNAL void m0_be_log_record_fini(struct m0_be_log_record *record)
M0_INTERNAL void m0_bufvec_cursor_init(struct m0_bufvec_cursor *cur, const struct m0_bufvec *bvec)
M0_INTERNAL void m0_module_setup(struct m0_module *module, const char *name, const struct m0_modlev *level, int level_nr, struct m0 *instance)
M0_INTERNAL void m0_be_group_format_log_use(struct m0_be_group_format *gft, m0_bcount_t size_reserved)
M0_INTERNAL void m0_be_log_discard_item_ext_set(struct m0_be_log_discard_item *ldi, struct m0_ext *ext)
M0_INTERNAL void m0_be_group_format_reg_log_add(struct m0_be_group_format *gft, const struct m0_be_reg_d *rd)
static void be_tx_group_format_seg_io_finished(struct m0_be_op *op, void *param)
M0_INTERNAL void m0_be_log_record_discard(struct m0_be_log *log, m0_bcount_t size)
#define gft_fmt_group_choose(gft)
M0_INTERNAL void m0_be_op_done(struct m0_be_op *op)
static struct m0_be_group_format * be_group_format_module2gft(struct m0_module *module)
static void be_tx_group_format_seg_io_op_gc(struct m0_be_op *op, void *param)
M0_INTERNAL int m0_be_group_format_init(struct m0_be_group_format *gft, struct m0_be_group_format_cfg *gft_cfg, struct m0_be_tx_group *group, struct m0_be_log *log)
M0_INTERNAL void m0_be_log_record_reset(struct m0_be_log_record *record)
M0_INTERNAL m0_bindex_t m0_be_group_format_log_position(const struct m0_be_group_format *gft)
#define M0_BE_IO_CREDIT(reg_nr, reg_size, part_nr)
M0_INTERNAL void m0_be_group_format_deallocate(struct m0_be_group_format *gft)
M0_INTERNAL m0_bcount_t m0_be_fmt_group_size(struct m0_be_fmt_group *fg)
M0_INTERNAL void m0_be_log_recovery_record_get(struct m0_be_log *log, struct m0_be_log_record_iter *iter)
M0_INTERNAL void m0_be_group_format_seg_place_prepare(struct m0_be_group_format *gft)
M0_INTERNAL void m0_be_pd_io_put(struct m0_be_pd *pd, struct m0_be_pd_io *pdio)
struct m0_be_log_cfg lg_cfg
M0_INTERNAL void m0_be_op_reset(struct m0_be_op *op)
M0_INTERNAL void m0_be_fmt_group_fini(struct m0_be_fmt_group *fg)
M0_INTERNAL void m0_be_group_format_fini(struct m0_be_group_format *gft)
M0_INTERNAL void m0_be_op_active(struct m0_be_op *op)
M0_INTERNAL void m0_be_fmt_group_reg_by_id(const struct m0_be_fmt_group *fg, uint32_t index, struct m0_be_fmt_reg *freg)
M0_INTERNAL m0_bindex_t m0_be_log_record_position(const struct m0_be_log_record *record)
M0_INTERNAL uint32_t m0_be_group_format_tx_nr(const struct m0_be_group_format *gft)
M0_INTERNAL m0_bindex_t m0_be_reg_offset(const struct m0_be_reg *reg)
M0_INTERNAL void m0_be_op_fini(struct m0_be_op *op)
M0_INTERNAL void m0_be_op_set_add(struct m0_be_op *parent, struct m0_be_op *child)
M0_INTERNAL void m0_be_fmt_group_tx_add(struct m0_be_fmt_group *fg, const struct m0_be_fmt_tx *ftx)
M0_INTERNAL m0_bcount_t m0_be_group_format_log_reserved_size(struct m0_be_log *log, struct m0_be_tx_credit *cred, m0_bcount_t cred_payload)
M0_INTERNAL bool m0_be_group_format__invariant(struct m0_be_group_format *go)
M0_INTERNAL void * m0_be_log_discard_item_user_data(struct m0_be_log_discard_item *ldi)
M0_INTERNAL void m0_be_log_record_iter_fini(struct m0_be_log_record_iter *iter)
#define M0_ASSERT_INFO(cond, fmt,...)
M0_INTERNAL int m0_be_group_format_decode(struct m0_be_group_format *gft)
#define M0_BE_FMT_REG(size, addr, buf)
M0_INTERNAL struct m0_ext * m0_be_log_discard_item_ext(struct m0_be_log_discard_item *ldi)
M0_INTERNAL void m0_be_log_record_deallocate(struct m0_be_log_record *record)
M0_INTERNAL void m0_be_log_discard_item_user_data_set(struct m0_be_log_discard_item *ldi, void *data)
M0_INTERNAL void m0_be_fmt_group_reset(struct m0_be_fmt_group *fg)
static void be_group_format_level_leave(struct m0_module *module)
M0_INTERNAL void m0_be_op_init(struct m0_be_op *op)
M0_INTERNAL void m0_be_io_add(struct m0_be_io *bio, struct m0_stob *stob, void *ptr_user, m0_bindex_t offset_stob, m0_bcount_t size)
struct m0_be_seg * br_seg
M0_INTERNAL struct m0_be_fmt_group_info * m0_be_group_format_group_info(struct m0_be_group_format *gft)
M0_INTERNAL void m0_be_log_record_init(struct m0_be_log_record *record, struct m0_be_log *log)
M0_INTERNAL int m0_be_fmt_group_init(struct m0_be_fmt_group *fg, const struct m0_be_fmt_group_cfg *cfg)
M0_INTERNAL uint32_t m0_be_fmt_group_tx_nr(const struct m0_be_fmt_group *fg)
M0_INTERNAL int m0_be_fmt_group_encode(struct m0_be_fmt_group *fg, struct m0_bufvec_cursor *cur)
M0_INTERNAL void m0_be_group_format_tx_get(const struct m0_be_group_format *gft, uint32_t index, struct m0_be_fmt_tx *ftx)
M0_INTERNAL void m0_module_fini(struct m0_module *module, int level)
M0_INTERNAL void m0_be_log_record_ext(struct m0_be_log_record *record, struct m0_ext *ext)
M0_INTERNAL int m0_module_init(struct m0_module *module, int level)
#define M0_IMPOSSIBLE(fmt,...)