37 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_CLIENT 70 m0_op_common_bob_check(oc));
76 m0_ast_rc_bob_check(
ar));
82 m0_op_obj_bob_check(oo) &&
165 return obj->ob_attr.oa_pver;
177 &
obj->ob_attr.oa_pver) !=
NULL);
231 &
op->op_entity->en_id) < 0);
245 switch (
op->op_code) {
331 m0_op_common_bob_fini(&oo->
oo_oc);
332 m0_ast_rc_bob_fini(&oo->
oo_ar);
333 m0_op_obj_bob_fini(oo);
337 #ifdef CLIENT_FOR_M0T1FS 368 &
obj->ob_attr.oa_pver);
377 obj->ob_attr.oa_pver = (*pv)->pv_id;
420 if (layout !=
NULL) {
429 #ifdef CLIENT_FOR_M0T1FS 468 uint64_t obj_container;
485 if (
op->op_size <
sizeof *oo) {
538 #ifdef CLIENT_FOR_M0T1FS 573 lid = &
obj->ob_attr.oa_layout_id;
578 obj->ob_attr.oa_buf_size);
582 *lid = M0_DEFAULT_LAYOUT_ID;
641 #ifdef CLIENT_FOR_M0T1FS 646 m0_op_obj_bob_init(oo);
647 m0_ast_rc_bob_init(&oo->
oo_ar);
670 bool alloced =
false;
692 size_t cached_size = (*op)->op_size;
694 if ((*op)->op_size <
sizeof *oo)
698 memset(*
op, 0, cached_size);
699 (*op)->op_size = cached_size;
702 spti_tlist_init(&(*op)->op_pending_tx);
712 m0_op_common_bob_init(oc);
748 bool pre_allocated =
false;
763 pre_allocated = (*
op !=
NULL);
786 M0_POST((*op)->op_sm.sm_rc == 0);
792 if (!pre_allocated) {
861 uint64_t lid = M0_DEFAULT_LAYOUT_ID;
871 if (
instance->m0c_config->mc_layout_id != 0)
872 lid =
instance->m0c_config->mc_layout_id;
907 #undef M0_TRACE_SUBSYSTEM M0_INTERNAL int m0_uint128_cmp(const struct m0_uint128 *u0, const struct m0_uint128 *u1)
M0_INTERNAL struct m0_layout * m0_layout_find(struct m0_layout_domain *dom, uint64_t lid)
struct m0_fid m0c_root_fid
static void obj_optimal_lid_set(struct m0_obj *obj, struct m0_layout_domain *ldom)
const struct m0_bob_type oo_bobtype
enum m0_client_layout_type m0_obj_layout_type(struct m0_obj *obj)
M0_INTERNAL void m0_fid_gob_make(struct m0_fid *gob_fid, uint32_t container, uint64_t key)
M0_INTERNAL struct m0_client * m0__oo_instance(struct m0_op_obj *oo)
M0_INTERNAL bool entity_invariant_full(struct m0_entity *ent)
M0_INTERNAL int m0__obj_pool_version_get(struct m0_obj *obj, struct m0_pool_version **pv)
static size_t locality(const struct m0_fom *fom)
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)
M0_INTERNAL enum m0_client_layout_type m0__obj_layout_type(struct m0_obj *obj)
struct m0_pool_version * pv
#define M0_LOG(level,...)
static int obj_op_prepare(struct m0_entity *entity, struct m0_op **op, enum m0_entity_opcode opcode)
struct m0_sm_group * oo_sm_grp
static void obj_namei_cb_cancel(struct m0_op_common *oc)
uint64_t m0_obj_unit_size_to_layout_id(int unit_size)
#define M0_OBJ_LAYOUT_TYPE(lid)
M0_INTERNAL int obj_fid_make_name(char *name, size_t name_len, const struct m0_fid *fid)
M0_INTERNAL void m0_buf_init(struct m0_buf *buf, void *data, uint32_t nob)
M0_INTERNAL int m0_op_init(struct m0_op *op, const struct m0_sm_conf *conf, struct m0_entity *entity)
M0_INTERNAL bool m0__obj_pool_version_is_valid(const struct m0_obj *obj)
uint64_t m0_client_layout_id(const struct m0_client *instance)
M0_INTERNAL void m0__obj_attr_set(struct m0_obj *obj, struct m0_fid pver, uint64_t layout_id)
M0_INTERNAL uint64_t m0__obj_layout_id_get(struct m0_op_obj *oo)
M0_INTERNAL int m0__obj_namei_send(struct m0_op_obj *oo)
M0_INTERNAL bool m0_fid_is_set(const struct m0_fid *fid)
M0_INTERNAL int m0_layout_instance_build(struct m0_layout *l, const struct m0_fid *fid, struct m0_layout_instance **out)
const struct m0_uint128 M0_ID_APP
M0_INTERNAL int m0_idx_op_namei(struct m0_entity *entity, struct m0_op **op, enum m0_entity_opcode opcode)
M0_INTERNAL bool m0_op_obj_invariant(struct m0_op_obj *oo)
static uint32_t unit_size
M0_INTERNAL struct m0_pool_version * m0_pool_version_md_get(const struct m0_pools_common *pc)
M0_INTERNAL int m0__obj_namei_cancel(struct m0_op *op)
M0_INTERNAL void m0_sm_group_unlock(struct m0_sm_group *grp)
int m0_obj_layout_id_to_unit_size(uint64_t layout_id)
M0_INTERNAL struct m0_obj * m0__obj_entity(struct m0_entity *entity)
struct m0_pools_common m0c_pools_common
#define M0_OBJ_LAYOUT_ID(lid)
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_pool_version2layout_id(const struct m0_fid *pv_fid, uint64_t lid)
M0_INTERNAL int m0_pool_version_get(struct m0_pools_common *pc, const struct m0_fid *pool, struct m0_pool_version **pv)
#define M0_AMB(obj, ptr, field)
static void obj_namei_cb_launch(struct m0_op_common *oc)
static void obj_namei_cb_free(struct m0_op_common *oc)
#define bob_of(ptr, type, field, bt)
static void obj_namei_cb_fini(struct m0_op_common *oc)
void * m0_alloc(size_t size)
static void * obj_key(const struct m0_ht_descr *hd, void *obj)
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
static bool obj_layout_id_invariant(uint64_t layout_id)
M0_INTERNAL uint64_t m0__obj_lid(struct m0_obj *obj)
struct m0_layout_domain rh_ldom
void(* oc_cb_fini)(struct m0_op_common *oc)
M0_INTERNAL void m0_buf_free(struct m0_buf *buf)
struct m0_op_common oo_oc
bool m0_conf_fid_is_valid(const struct m0_fid *fid)
static struct m0_pool pool
#define MOTR_MDCOB_LOOKUP_SKIP
int m0_entity_create(struct m0_fid *pool, struct m0_entity *entity, struct m0_op **op)
static struct m0_client cinst
M0_INTERNAL int64_t m0_layout_find_by_buffsize(struct m0_layout_domain *dom, struct m0_fid *pver, size_t buffsize)
struct m0_realm * en_realm
struct m0_sm_group en_sm_group
static bool m0_op_common_invariant(struct m0_op_common *oc)
M0_INTERNAL bool m0_op_obj_ast_rc_invariant(struct m0_ast_rc *ar)
const int m0_lid_to_unit_map_nr
static int obj_namei_op_init(struct m0_entity *entity, struct m0_op *op)
#define M0_FI_ENABLED(tag)
struct m0_entity * op_entity
M0_INTERNAL struct m0_locality * m0__locality_pick(struct m0_client *cinst)
M0_INTERNAL struct m0_fid m0__obj_pver(struct m0_obj *obj)
void(* oc_cb_cancel)(struct m0_op_common *oc)
struct m0_entity ob_entity
M0_INTERNAL void m0_sm_move(struct m0_sm *mach, int32_t rc, int state)
static int entity_namei_op(struct m0_entity *entity, struct m0_op **op, enum m0_entity_opcode opcode)
static struct m0 instance
M0_INTERNAL void m0_sm_group_lock(struct m0_sm_group *grp)
M0_INTERNAL struct m0_client * m0__obj_instance(const struct m0_obj *obj)
M0_INTERNAL int m0_op_alloc(struct m0_op **op, size_t op_size)
int m0_entity_delete(struct m0_entity *entity, struct m0_op **op)
static int obj_op_obj_init(struct m0_op_obj *oo)
M0_INTERNAL void m0_layout_instance_fini(struct m0_layout_instance *li)
struct m0_client * re_instance
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)
struct m0_pool_version * pc_cur_pver
#define OP_OBJ2CODE(op_obj)
M0_INTERNAL void m0_layout_put(struct m0_layout *l)
void m0_op_free(struct m0_op *op)
struct m0_layout_instance * oo_layout_instance
int m0_entity_open(struct m0_entity *entity, struct m0_op **op)
M0_INTERNAL bool m0_fid_is_valid(const struct m0_fid *fid)
void(* oc_cb_launch)(struct m0_op_common *oc)
static bool obj_op_obj_invariant(struct m0_op_obj *oo)
enum m0_entity_type en_type
M0_INTERNAL bool m0_sm_group_is_locked(const struct m0_sm_group *grp)
struct m0_sm_conf m0_op_conf
#define M0_IMPOSSIBLE(fmt,...)
M0_INTERNAL struct m0_client * m0__entity_instance(const struct m0_entity *entity)