Motr  M0
client.c File Reference
#include "lib/trace.h"
#include "lib/vec.h"
#include "lib/misc.h"
#include "lib/memory.h"
#include "sm/sm.h"
#include "fid/fid.h"
#include "rpc/item.h"
#include "rpc/rpc.h"
#include "rpc/session.h"
#include "rpc/conn.h"
#include "fop/fop.h"
#include "fop/fom_generic.h"
#include "cas/cas.h"
#include "cas/cas_xc.h"
#include "cas/client.h"
#include "lib/finject.h"
#include "cas/cas_addb2.h"
#include "dtm0/dtx.h"
Include dependency graph for client.c:

Go to the source code of this file.

Data Structures

struct  creq_niter
 

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_CAS
 
#define CASREQ_FOP_DATA(fop)   ((struct m0_cas_op *)m0_fop_data(fop))
 

Functions

static void cas_req_replied_cb (struct m0_rpc_item *item)
 
static void creq_asmbl_replied_cb (struct m0_rpc_item *item)
 
static int cas_req_fragmentation (struct m0_cas_req *req)
 
static int cas_req_fragment_continue (struct m0_cas_req *req, struct m0_cas_op *op)
 
static void creq_recv_fini (struct m0_cas_recv *recv, bool op_is_meta)
 
static void cas_to_rpc_map (const struct m0_cas_req *creq, const struct m0_rpc_item *item)
 
static bool fid_is_meta (struct m0_fid *fid)
 
static int creq_op_alloc (uint64_t recs_nr, struct m0_cas_op **out)
 
static void creq_op_free (struct m0_cas_op *op)
 
M0_INTERNAL void m0_cas_req_init (struct m0_cas_req *req, struct m0_rpc_session *sess, struct m0_sm_group *grp)
 
static struct m0_rpc_conncreq_rpc_conn (const struct m0_cas_req *req)
 
static struct m0_rpc_machinecreq_rpc_mach (const struct m0_cas_req *req)
 
static struct m0_sm_groupcas_req_smgrp (const struct m0_cas_req *req)
 
M0_INTERNAL void m0_cas_req_lock (struct m0_cas_req *req)
 
M0_INTERNAL void m0_cas_req_unlock (struct m0_cas_req *req)
 
M0_INTERNAL bool m0_cas_req_is_locked (const struct m0_cas_req *req)
 
static void cas_req_state_set (struct m0_cas_req *req, enum m0_cas_req_state state)
 
static void cas_req_reply_fini (struct m0_cas_req *req)
 
static void cas_req_fini (struct m0_cas_req *req)
 
M0_INTERNAL void m0_cas_req_fini (struct m0_cas_req *req)
 
M0_INTERNAL void m0_cas_req_fini_lock (struct m0_cas_req *req)
 
static void creq_kv_hold_down (struct m0_cas_rec *rec)
 
static void creq_fop_destroy (struct m0_cas_req *req)
 
static void creq_fop_release (struct m0_ref *ref)
 
static void creq_asmbl_fop_release (struct m0_ref *ref)
 
static int creq_fop_create (struct m0_cas_req *req, struct m0_fop_type *ftype, struct m0_cas_op *op)
 
static int creq_fop_create_and_prepare (struct m0_cas_req *req, struct m0_fop_type *ftype, struct m0_cas_op *op, enum m0_cas_req_state *next_state)
 
static struct m0_cas_reqitem_to_cas_req (struct m0_rpc_item *item)
 
static struct m0_rpc_itemcas_req_to_item (const struct m0_cas_req *req)
 
static struct m0_cas_repcas_rep (struct m0_rpc_item *reply)
 
M0_INTERNAL int m0_cas_req_generic_rc (const struct m0_cas_req *req)
 
static bool cas_rep_val_is_valid (struct m0_rpc_at_buf *val, struct m0_fid *idx_fid)
 
static int cas_rep__validate (const struct m0_fop_type *ftype, struct m0_cas_op *op, struct m0_cas_rep *rep)
 
static int cas_rep_validate (const struct m0_cas_req *req)
 
static void cas_req_failure (struct m0_cas_req *req, int32_t rc)
 
static void cas_req_failure_ast (struct m0_sm_group *grp, struct m0_sm_ast *ast)
 
static void cas_req_failure_ast_post (struct m0_cas_req *req, int32_t rc)
 
static void creq_item_prepare (const struct m0_cas_req *req, struct m0_rpc_item *item, const struct m0_rpc_item_ops *ops)
 
static void cas_fop_send (struct m0_cas_req *req)
 
static int creq_kv_buf_add (const struct m0_cas_req *req, const struct m0_bufvec *kv, uint32_t idx, struct m0_rpc_at_buf *buf)
 
static void creq_asmbl_fop_init (struct m0_cas_req *req, struct m0_fop_type *ftype, struct m0_cas_op *op)
 
static int greq_asmbl_add (struct m0_cas_req *req, struct m0_cas_rec *rec, uint64_t idx, uint64_t orig_idx, uint64_t vlen)
 
static uint64_t greq_asmbl_count (const struct m0_cas_req *req)
 
static int greq_asmbl_fill (struct m0_cas_req *req, struct m0_cas_op *op)
 
static bool greq_asmbl_post (struct m0_cas_req *req)
 
static bool creq_niter_invariant (struct creq_niter *it)
 
static void creq_niter_init (struct creq_niter *it, struct m0_cas_op *op, struct m0_cas_rep *rep)
 
static int creq_niter_next (struct creq_niter *it)
 
static void creq_niter_fini (struct creq_niter *it)
 
static int nreq_asmbl_prep (struct m0_cas_req *req, struct m0_cas_op *op)
 
static int nreq_asmbl_fill (struct m0_cas_req *req, struct m0_cas_op *op)
 
static bool nreq_asmbl_post (struct m0_cas_req *req)
 
static void creq_rep_override (struct m0_cas_rec *orig, struct m0_cas_rec *new)
 
static void nreq_asmbl_accept (struct m0_cas_req *req)
 
static void greq_asmbl_accept (struct m0_cas_req *req)
 
static void cas_req_fsync_remid_copy (struct m0_cas_req *req)
 
static int cas_req_reply_handle (struct m0_cas_req *req, bool *fragm_continue)
 
static void creq_asmbl_replied_ast (struct m0_sm_group *grp, struct m0_sm_ast *ast)
 
static void cas_req_replied_ast (struct m0_sm_group *grp, struct m0_sm_ast *ast)
 
static int cas_index_op_prepare (const struct m0_cas_req *req, const struct m0_cas_id *cids, uint64_t cids_nr, bool recv_val, uint32_t flags, struct m0_cas_op **out)
 
static void addb2_add_cas_req_attrs (const struct m0_cas_req *req)
 
static int cas_index_req_prepare (struct m0_cas_req *req, const struct m0_cas_id *cids, uint64_t cids_nr, uint64_t max_replies_nr, bool recv_val, uint32_t flags, struct m0_cas_op **op)
 
M0_INTERNAL uint64_t m0_cas_req_nr (const struct m0_cas_req *req)
 
M0_INTERNAL int m0_cas_req_wait (struct m0_cas_req *req, uint64_t states, m0_time_t to)
 
M0_INTERNAL int m0_cas_index_create (struct m0_cas_req *req, const struct m0_cas_id *cids, uint64_t cids_nr, struct m0_dtx *dtx)
 
static void cas_rep_copy (const struct m0_cas_req *req, uint64_t idx, struct m0_cas_rec_reply *rep)
 
M0_INTERNAL void m0_cas_index_create_rep (const struct m0_cas_req *req, uint64_t idx, struct m0_cas_rec_reply *rep)
 
M0_INTERNAL int m0_cas_index_delete (struct m0_cas_req *req, const struct m0_cas_id *cids, uint64_t cids_nr, struct m0_dtx *dtx, uint32_t flags)
 
M0_INTERNAL void m0_cas_index_delete_rep (const struct m0_cas_req *req, uint64_t idx, struct m0_cas_rec_reply *rep)
 
M0_INTERNAL int m0_cas_index_lookup (struct m0_cas_req *req, const struct m0_cas_id *cids, uint64_t cids_nr)
 
M0_INTERNAL void m0_cas_index_lookup_rep (const struct m0_cas_req *req, uint64_t idx, struct m0_cas_rec_reply *rep)
 
M0_INTERNAL int m0_cas_index_list (struct m0_cas_req *req, const struct m0_fid *start_fid, uint32_t indices_nr, uint32_t flags)
 
static int cas_next_rc (int64_t service_rc)
 
M0_INTERNAL void m0_cas_index_list_rep (struct m0_cas_req *req, uint32_t idx, struct m0_cas_ilist_reply *rep)
 
static int cas_records_op_prepare (const struct m0_cas_req *req, const struct m0_cas_id *index, const struct m0_bufvec *keys, const struct m0_bufvec *values, uint32_t flags, struct m0_cas_op **out)
 
static int cas_req_prep (struct m0_cas_req *req, const struct m0_cas_id *index, const struct m0_bufvec *keys, const struct m0_bufvec *values, uint64_t max_replies_nr, uint32_t flags, struct m0_cas_op **op)
 
M0_INTERNAL int m0_cas_put (struct m0_cas_req *req, struct m0_cas_id *index, const struct m0_bufvec *keys, const struct m0_bufvec *values, struct m0_dtx *dtx, uint32_t flags)
 
M0_INTERNAL void m0_cas_put_rep (struct m0_cas_req *req, uint64_t idx, struct m0_cas_rec_reply *rep)
 
static int m0_cas__get (struct m0_cas_req *req, struct m0_cas_id *index, const struct m0_bufvec *keys, int flags)
 
M0_INTERNAL int m0_cas_get (struct m0_cas_req *req, struct m0_cas_id *index, const struct m0_bufvec *keys)
 
M0_INTERNAL int m0_cas_versioned_get (struct m0_cas_req *req, struct m0_cas_id *index, const struct m0_bufvec *keys)
 
M0_INTERNAL void m0_cas_get_rep (const struct m0_cas_req *req, uint64_t idx, struct m0_cas_get_reply *rep)
 
M0_INTERNAL int m0_cas_next (struct m0_cas_req *req, struct m0_cas_id *index, struct m0_bufvec *start_keys, uint32_t *recs_nr, uint32_t flags)
 
M0_INTERNAL void m0_cas_rep_mlock (const struct m0_cas_req *req, uint64_t idx)
 
M0_INTERNAL void m0_cas_next_rep (const struct m0_cas_req *req, uint32_t idx, struct m0_cas_next_reply *rep)
 
M0_INTERNAL int m0_cas_del (struct m0_cas_req *req, struct m0_cas_id *index, struct m0_bufvec *keys, struct m0_dtx *dtx, uint32_t flags)
 
M0_INTERNAL void m0_cas_del_rep (struct m0_cas_req *req, uint64_t idx, struct m0_cas_rec_reply *rep)
 
M0_INTERNAL int m0_cas_sm_conf_init (void)
 
M0_INTERNAL void m0_cas_sm_conf_fini (void)
 

Variables

static const struct m0_rpc_item_ops cas_item_ops
 
static const struct m0_rpc_item_ops asmbl_item_ops
 
static struct m0_sm_state_descr cas_req_states []
 
static struct m0_sm_trans_descr cas_req_trans []
 
struct m0_sm_conf cas_req_sm_conf
 

Macro Definition Documentation

◆ M0_TRACE_SUBSYSTEM

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_CAS

Definition at line 23 of file client.c.