23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_FDMI 210 #define M0_FOL_FRAG_DATA_HANDLER_DECLARE(_opecode, _get_val_func) { \ 211 .ffh_opecode = (_opecode), \ 212 .ffh_fol_frag_get_val = (_get_val_func) } 272 ffs_tx_tlink_init_at_tail(be_tx,
273 &
m->fdm_s.fdms_ffs_locked_tx_list);
302 ffs_tx_tlink_del_fini(be_tx);
309 "(ast callback posted)", be_tx);
362 M0_ENTRY(
"src_rec %p, value desc %p, value %p",
363 src_rec, value_desc,
value);
376 rfrag = m0_rec_frag_tlist_head(&fol_rec->
fr_frags);
424 struct m0_buf local_buf = {};
448 "for encoded FOL FDMI record.");
454 "Failed to encoded FOL FDMI record.");
461 "Failed to allocate encoded FOL FDMI record.");
492 if (fol_rec ==
NULL) {
510 if (fol_rec !=
NULL) {
562 &
m->fdm_s.fdms_ffs_ctx.ffsc_src);
566 ffs_tx_tlist_init(&
m->fdm_s.fdms_ffs_locked_tx_list);
570 m->fdm_s.fdms_ffs_ctx.ffsc_src->fs_get =
ffs_op_get;
571 m->fdm_s.fdms_ffs_ctx.ffsc_src->fs_put =
ffs_op_put;
573 m->fdm_s.fdms_ffs_ctx.ffsc_src->fs_end =
ffs_op_end;
584 m->fdm_s.fdms_ffs_ctx.ffsc_handler_number =
590 m->fdm_s.fdms_ffs_ctx.ffsc_src =
NULL;
615 M0_PRE(
m->fdm_s.fdms_ffs_ctx.ffsc_src->fs_record_post !=
NULL);
623 m0_tlist_for(&ffs_tx_tl, &
m->fdm_s.fdms_ffs_locked_tx_list, be_tx) {
624 ffs_tx_tlink_del_fini(be_tx);
634 ffs_tx_tlist_fini(&
m->fdm_s.fdms_ffs_locked_tx_list);
638 m->fdm_s.fdms_ffs_ctx.ffsc_src =
NULL;
656 M0_ASSERT(
m->fdm_s.fdms_ffs_ctx.ffsc_src->fs_record_post !=
NULL);
683 be_tx = &
fom->fo_tx.tx_betx;
711 const char **substrings)
718 for (
i = 0; substrings[
i] !=
NULL; ++
i) {
720 if (
value->b_nob <
s.b_nob)
724 for (j = 0; j <=
value->b_nob -
s.b_nob; ++j) {
726 value->b_addr + j))) {
754 fop_fol_frag = fol_frag->
rp_data;
758 cas_op = fop_fol_frag->ffrp_fop;
775 #undef M0_TRACE_SUBSYSTEM
struct m0_fol_rec_header fr_header
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
static void ffs_op_put(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL void m0_fol_rec_fini(struct m0_fol_rec *rec)
static struct m0_addb2_mach * m
struct m0_atomic64 t_fdmi_ref
void(* sa_cb)(struct m0_sm_group *grp, struct m0_sm_ast *)
const struct m0_fol_frag_ops * rp_ops
static void be_tx_put_ast_cb(struct m0_sm_group *grp, struct m0_sm_ast *ast)
M0_INTERNAL bool m0_buf_eq(const struct m0_buf *x, const struct m0_buf *y)
static struct m0_sm_group * grp
#define M0_LOG(level,...)
M0_INTERNAL void m0_sm_ast_post(struct m0_sm_group *grp, struct m0_sm_ast *ast)
struct m0_uint128 fsr_rec_id
M0_INTERNAL bool m0_fdmi__record_is_valid(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL int m0_fol_fdmi_src_deinit(void)
M0_INTERNAL int m0_fol_fdmi_src_init(void)
static int64_t m0_atomic64_sub_return(struct m0_atomic64 *a, int64_t d)
int const char const void * value
M0_INTERNAL void m0_fdmi_source_free(struct m0_fdmi_src *src)
M0_INTERNAL struct m0_fdmi_module * m0_fdmi_module__get(void)
#define M0_FOL_FRAG_DATA_HANDLER_DECLARE(_opecode, _get_val_func)
#define container_of(ptr, type, member)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
static int ffs_op_node_eval(struct m0_fdmi_src_rec *src_rec, struct m0_fdmi_flt_var_node *value_desc, struct m0_fdmi_flt_operand *value)
struct m0_fol_frag_type m0_fop_fol_frag_type
const struct m0_fol_frag_type * rpo_type
struct m0_rpc_at_buf cr_val
struct m0_fdmi_src * fsr_src
struct m0_cas_rec * cr_rec
static struct m0_sm_ast ast[NR]
M0_INTERNAL void m0_fol_rec_init(struct m0_fol_rec *rec, struct m0_fol *fol)
M0_INTERNAL int m0_fdmi_source_alloc(enum m0_fdmi_rec_type_id type_id, struct m0_fdmi_src **src)
#define M0_ERR_INFO(rc, fmt,...)
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL void m0_fdmi_flt_uint_opnd_fill(struct m0_fdmi_flt_operand *opnd, uint64_t value)
M0_INTERNAL void m0_fdmi_source_deregister(struct m0_fdmi_src *src)
static struct m0_dtx * ffs_get_dtx(struct m0_fdmi_src_rec *src_rec)
static void ffs_op_get(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL struct m0_fdmi_src_dock * m0_fdmi_src_dock_get(void)
M0_INTERNAL int m0_fdmi_source_register(struct m0_fdmi_src *src)
M0_INTERNAL void m0_fol_fdmi_src_fini(void)
struct m0_fdmi_src_rec fr_fdmi_rec
M0_INTERNAL int m0_buf_alloc(struct m0_buf *buf, size_t size)
struct m0_sm_group * sm_grp
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
M0_INTERNAL void m0_fol_fdmi_post_record(struct m0_fom *fom)
union m0_rpc_at_buf::@447 u
M0_INTERNAL void m0_be_tx_lsn_get(struct m0_be_tx *tx, m0_bindex_t *lsn, m0_bindex_t *lsn_discarded)
struct m0_fol_rec tx_fol_rec
M0_INTERNAL void m0_buf_free(struct m0_buf *buf)
M0_INTERNAL void m0_be_tx_get(struct m0_be_tx *tx)
static int ffs_op_decode(struct m0_buf *buf, void **handle)
static void ffs_tx_inc_refc(struct m0_be_tx *be_tx, int64_t *counter)
struct m0_cas_recv cg_rec
static void ffs_op_end(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL bool m0_fol_fdmi__filter_kv_substring_match(struct m0_buf *value, const char **substrings)
static int64_t m0_atomic64_get(const struct m0_atomic64 *a)
static struct ffs_fol_frag_handler ffs_frag_handler_array[]
struct m0_sm_ast t_fdmi_put_ast
#define M0_FI_ENABLED(tag)
#define M0_ALLOC_PTR(ptr)
#define M0_FDMI_SOURCE_POST_RECORD(_src_rec_ptr)
M0_TL_DESCR_DEFINE(ffs_tx, "fdmi fol src tx list", M0_INTERNAL, struct m0_be_tx, t_fdmi_linkage, t_magic, M0_BE_TX_MAGIC, M0_BE_TX_ENGINE_MAGIC)
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
static int64_t ffs_rec_put(struct m0_fdmi_src_rec *src_rec)
M0_INTERNAL void m0_be_tx_put(struct m0_be_tx *tx)
static void ffs_tx_dec_refc(struct m0_be_tx *be_tx, int64_t *counter)
static int ffs_op_encode(struct m0_fdmi_src_rec *src_rec, struct m0_buf *buf)
#define m0_tlist_for(descr, head, obj)
static struct m0_cas_op * cas_op(const struct m0_fom *fom)
M0_INTERNAL int m0_fol_fdmi_filter_kv_substring(struct m0_fdmi_eval_ctx *ctx, struct m0_conf_fdmi_filter *filter, struct m0_fdmi_eval_var_info *var_info)
bool fsdc_filters_defined
#define m0_tl_for(name, head, obj)
static struct m0_addb2_source * s
#define M0_BUF_INIT_CONST(size, data)
#define M0_BUF_INIT(size, data)
static void ffs_op_begin(struct m0_fdmi_src_rec *src_rec)
static int64_t ffs_rec_get(struct m0_fdmi_src_rec *src_rec)
M0_TL_DEFINE(ffs_tx, M0_INTERNAL, struct m0_be_tx)
static int64_t m0_atomic64_add_return(struct m0_atomic64 *a, int64_t d)
M0_INTERNAL int m0_fol_rec_encode(struct m0_fol_rec *rec, struct m0_buf *at)
M0_INTERNAL int m0_fol_rec_decode(struct m0_fol_rec *rec, struct m0_buf *at)