35 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_CLIENT 144 for (j =
i+1; j <
SEG_NR(ivec) &&
COUNT(ivec, j); ++j) {
170 _0C(m0_op_io_bob_check(ioo)) &&
186 #ifdef BLOCK_ATTR_SUPPORTED 429 m0_op_io_bob_fini(ioo);
453 oo =
M0_AMB(oo, oc, oo_oc);
472 uint64_t max_svc_failures;
473 uint64_t max_node_failures;
487 m0_op_io_bob_init(ioo);
507 for (
i = 0;
i < max_svc_failures; ++
i)
517 for (
i = 0;
i < max_node_failures; ++
i)
567 entity = &
obj->ob_entity;
585 m0_op_common_bob_init(oc);
586 m0_op_obj_bob_init(oo);
606 obj->ob_entity.en_id.u_lo);
608 &
obj->ob_attr.oa_pver) !=
NULL);
639 (1ULL <<
obj->ob_attr.oa_bshift) == 0);
644 #ifdef BLOCK_ATTR_SUPPORTED 657 return instance->m0c_config->mc_is_read_verify;
693 struct m0_op *parent;
701 if (parent ==
NULL) {
727 bool op_pre_allocated =
true;
728 bool layout_alloc =
false;
743 op_pre_allocated =
false;
759 obj->ob_layout->ml_obj =
obj;
783 rc =
obj->ob_layout->ml_ops->lo_io_build(&io_args,
op);
790 if (!op_pre_allocated) {
822 #undef M0_TRACE_SUBSYSTEM M0_INTERNAL int m0_uint128_cmp(const struct m0_uint128 *u0, const struct m0_uint128 *u1)
M0_INTERNAL int m0__obj_io_build(struct m0_io_args *args, struct m0_op **op)
M0_INTERNAL void m0_chan_wait(struct m0_clink *link)
void(* iro_iosm_handle_launch)(struct m0_sm_group *grp, struct m0_sm_ast *ast)
const struct m0_bob_type oo_bobtype
#define M0_ALLOC_ARR(arr, nr)
M0_INTERNAL void m0_fid_gob_make(struct m0_fid *gob_fid, uint32_t container, uint64_t key)
M0_INTERNAL int m0_op_get(struct m0_op **op, size_t size)
const struct m0_op_io_ops ioo_ops
static void addb2_add_ioo_attrs(const struct m0_op_io *ioo, int rmw)
#define m0_htable_for(name, var, htable)
int const char const void size_t int flags
M0_INTERNAL void m0_clink_init(struct m0_clink *link, m0_chan_cb_t cb)
M0_INTERNAL struct m0_rm_domain * m0_rm_svc_domain_get(const struct m0_reqh_service *svc)
struct m0_atomic64 nxr_rdbulk_nr
M0_INTERNAL void m0_clink_del_lock(struct m0_clink *link)
uint64_t * ioo_failed_nodes
static size_t locality(const struct m0_fom *fom)
void(* sa_cb)(struct m0_sm_group *grp, struct m0_sm_ast *)
M0_INTERNAL int m0_client__layout_get(struct m0_client_layout *layout)
static void obj_io_cb_launch(struct m0_op_common *oc)
void m0_op_fini(struct m0_op *op)
M0_INTERNAL struct m0_pool_version * m0_pool_version_find(struct m0_pools_common *pc, const struct m0_fid *id)
static void obj_io_args_check(struct m0_obj *obj, enum m0_obj_opcode opcode, struct m0_indexvec *ext, struct m0_bufvec *data, struct m0_bufvec *attr, uint64_t mask)
M0_INTERNAL struct m0_fid m0__obj_pver(struct m0_obj *obj)
static struct m0_sm_group * grp
const struct m0_uint128 m0_rm_group
struct m0_pool_version * pv
struct m0_poolmach pv_mach
#define M0_LOG(level,...)
const struct m0_op_io_ops * ioo_ops
M0_INTERNAL void m0_sm_ast_post(struct m0_sm_group *grp, struct m0_sm_ast *ast)
struct m0_sm_group * oo_sm_grp
#define M0_OBJ_LAYOUT_TYPE(lid)
static int obj_io_init(struct m0_obj *obj, enum m0_obj_opcode opcode, struct m0_indexvec *ext, struct m0_bufvec *data, struct m0_bufvec *attr, uint64_t mask, uint32_t flags, struct m0_op *op)
struct m0_sm_conf io_sm_conf
struct m0_sm_group m0c_sm_group
M0_INTERNAL int m0_op_init(struct m0_op *op, const struct m0_sm_conf *conf, struct m0_entity *entity)
static struct m0_bob_type iofop_bobtype
static void obj_io_cb_free(struct m0_op_common *oc)
#define container_of(ptr, type, member)
M0_ADDB2_ADD(M0_AVI_FS_CREATE, new_fid.f_container, new_fid.f_key, mode, rc)
M0_INTERNAL bool m0_sm_addb2_counter_init(struct m0_sm *sm)
const struct m0_uint128 M0_ID_APP
int m0_obj_op(struct m0_obj *obj, enum m0_obj_opcode opcode, struct m0_indexvec *ext, struct m0_bufvec *data, struct m0_bufvec *attr, uint64_t mask, uint32_t flags, struct m0_op **op)
#define M0_ASSERT_EX(cond)
static struct m0_sm_ast ast[NR]
uint64_t * ioo_failed_session
const struct m0_bob_type ioo_bobtype
M0_INTERNAL bool m0_vec_is_empty(const struct m0_vec *vec)
struct m0_pools_common m0c_pools_common
struct nw_xfer_request ioo_nwxfer
int(* nxo_distribute)(struct nw_xfer_request *xfer)
const struct m0_bob_type oc_bobtype
void(* oc_cb_free)(struct m0_op_common *oc)
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL uint64_t m0__obj_layout_id_get(struct m0_op_obj *oo)
M0_INTERNAL struct m0_poolmach * ioo_to_poolmach(struct m0_op_io *ioo)
struct m0_client_layout * m0_client_layout_alloc(enum m0_client_layout_type type)
struct m0_chan ioo_completion
M0_INTERNAL struct m0_client * m0__op_instance(const struct m0_op *op)
M0_INTERNAL uint64_t m0_pool_version2layout_id(const struct m0_fid *pv_fid, uint64_t lid)
enum sns_repair_state ioo_sns_state
struct m0_indexvec ioo_ext
#define M0_AMB(obj, ptr, field)
static void attr(struct m0_addb2__context *ctx, const uint64_t *v, char *buf)
M0_INTERNAL bool m0_op_io_invariant(const struct m0_op_io *ioo)
void m0_client_layout_free(struct m0_client_layout *layout)
M0_INTERNAL void m0_chan_init(struct m0_chan *chan, struct m0_mutex *ch_guard)
static bool indexvec_segments_overlap(struct m0_indexvec *ivec)
const struct nw_xfer_ops * nxr_ops
#define bob_of(ptr, type, field, bt)
struct m0_bufvec ioo_data
M0_INTERNAL uint32_t m0_no_of_bits_set(uint64_t val)
M0_INTERNAL struct m0_rm_domain * rm_domain_get(struct m0_client *cinst)
void(* iro_iomaps_destroy)(struct m0_op_io *ioo)
enum pargrp_iomap_rmwtype pi_rtype
static bool nw_xfer_request_invariant(const struct nw_xfer_request *xfer)
M0_INTERNAL void target_ioreq_cancel(struct target_ioreq *ti)
static uint64_t tolerance_of_level(struct io_request *req, uint64_t lv)
M0_INTERNAL void m0_client_init_io_op(void)
void(* oc_cb_fini)(struct m0_op_common *oc)
struct m0_htable nxr_tioreqs_hash
static void target_ioreq_fini(struct target_ioreq *ti)
struct m0_op_common oo_oc
static void obj_io_cb_fini(struct m0_op_common *oc)
M0_INTERNAL bool addr_is_network_aligned(void *addr)
M0_INTERNAL struct m0_op * m0__ioo_to_op(struct m0_op_io *ioo)
M0_INTERNAL void m0_chan_signal_lock(struct m0_chan *chan)
M0_INTERNAL m0_bcount_t m0_vec_count(const struct m0_vec *vec)
static int64_t m0_atomic64_get(const struct m0_atomic64 *a)
void m0_clink_add_lock(struct m0_chan *chan, struct m0_clink *link)
static struct m0_client cinst
static void obj_io_ast_fini(struct m0_sm_group *grp, struct m0_sm_ast *ast)
struct m0_reqh_service_type m0_rms_type
static const struct m0_bob_type tioreq_bobtype
M0_INTERNAL void m0__obj_op_done(struct m0_op *op)
M0_INTERNAL struct m0_reqh_service * m0_reqh_service_find(const struct m0_reqh_service_type *st, const struct m0_reqh *reqh)
static void segments_sort(struct m0_indexvec *ivec, struct m0_bufvec *data, struct m0_bufvec *attr)
struct m0_sm_group op_sm_group
M0_INTERNAL bool m0__obj_is_cksum_validation_allowed(struct m0_op_io *ioo)
static void nw_xfer_request_fini(struct nw_xfer_request *xfer)
#define M0_FI_ENABLED(tag)
M0_INTERNAL void m0_sm_init(struct m0_sm *mach, const struct m0_sm_conf *conf, uint32_t state, struct m0_sm_group *grp)
struct m0_entity * op_entity
static bool pargrp_iomap_invariant_nr(struct io_request *req)
M0_INTERNAL struct m0_locality * m0__locality_pick(struct m0_client *cinst)
static M0_UNUSED void indexvec_dump(struct m0_indexvec *ivec)
static int obj_op_init(struct m0_obj *obj, enum m0_obj_opcode opcode, struct m0_op *op)
enum nw_xfer_state nxr_state
void(* oc_cb_cancel)(struct m0_op_common *oc)
static struct m0_net_test_service svc
M0_INTERNAL bool m0__obj_is_parity_verify_mode(struct m0_client *instance)
static void nw_xfer_request_init(struct nw_xfer_request *xfer)
struct m0_entity ob_entity
M0_INTERNAL void m0_clink_fini(struct m0_clink *link)
struct m0_atomic64 nxr_iofop_nr
int(* iro_iomaps_prepare)(struct m0_op_io *ioo)
static struct m0 instance
static struct m0_be_seg * seg
#define M0_UINT128(hi, lo)
static uint32_t ioreq_sm_state(const struct io_request *req)
M0_INTERNAL bool m0__obj_is_di_enabled(struct m0_op_io *ioo)
M0_INTERNAL void m0_layout_instance_fini(struct m0_layout_instance *li)
void m0_op_free(struct m0_op *op)
M0_INTERNAL uint64_t m0__page_size(const struct m0_op_io *ioo)
struct m0_layout_instance * oo_layout_instance
M0_INTERNAL bool m0_fid_is_valid(const struct m0_fid *fid)
void(* oc_cb_launch)(struct m0_op_common *oc)
M0_INTERNAL int m0__obj_layout_instance_build(struct m0_client *cinst, const uint64_t layout_id, const struct m0_fid *fid, struct m0_layout_instance **linst)
M0_INTERNAL uint64_t m0_sm_id_get(const struct m0_sm *sm)
M0_INTERNAL void m0_chan_fini_lock(struct m0_chan *chan)
struct m0_bufvec ioo_attr
static void obj_io_cb_cancel(struct m0_op_common *oc)
M0_INTERNAL void m0_bob_type_tlist_init(struct m0_bob_type *bt, const struct m0_tl_descr *td)
M0_INTERNAL bool m0_sm_group_is_locked(const struct m0_sm_group *grp)
struct m0_sm_conf m0_op_conf
struct m0_obj_attr ob_attr
struct pargrp_iomap ** ioo_iomaps
#define M0_IMPOSSIBLE(fmt,...)
M0_INTERNAL struct m0_client * m0__entity_instance(const struct m0_entity *entity)
M0_INTERNAL void m0_sm_fini(struct m0_sm *mach)