23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_RM 230 #undef M0_TRACE_SUBSYSTEM M0_INTERNAL int rm_write_lock_get(struct m0_rpc_machine *rpc_mach, const char *rm_ep)
static void wlock_ctx_owner_windup(struct wlock_ctx *wlx)
struct m0_rw_lockable wlc_rwlock
struct m0_rm_remote * ro_creditor
void(* rio_complete)(struct m0_rm_incoming *in, int32_t rc)
const m0_time_t M0_TIME_NEVER
static struct io_request req
static void write_lock_complete(struct m0_rm_incoming *in, int32_t rc)
static int wlock_ctx_connect(struct wlock_ctx *wlx)
#define M0_LOG(level,...)
M0_INTERNAL void m0_rm_rwlock_req_init(struct m0_rm_incoming *req, struct m0_rm_owner *owner, const struct m0_rm_incoming_ops *ops, enum m0_rm_incoming_flags flags, enum m0_rm_rwlock_req_type type)
int m0_rpc_session_destroy(struct m0_rpc_session *session, m0_time_t abs_timeout)
M0_INTERNAL void m0_rm_remote_init(struct m0_rm_remote *rem, struct m0_rm_resource *res)
struct m0_rpc_session * rem_session
M0_INTERNAL void m0_rw_lockable_fini(struct m0_rw_lockable *lockable)
M0_INTERNAL int m0_rm_owner_timedwait(struct m0_rm_owner *owner, uint64_t state, const m0_time_t abs_timeout)
struct m0_rpc_machine * wlc_rmach
M0_INTERNAL void m0_rm_rwlock_owner_init(struct m0_rm_owner *owner, struct m0_fid *fid, struct m0_rw_lockable *lockable, struct m0_rm_remote *creditor)
static struct m0_rm_incoming_ops ri_ops
#define M0_ERR_INFO(rc, fmt,...)
return M0_ERR(-EOPNOTSUPP)
M0_INTERNAL int m0_rpc_client_connect(struct m0_rpc_conn *conn, struct m0_rpc_session *session, struct m0_rpc_machine *rpc_mach, const char *remote_addr, struct m0_fid *svc_fid, uint64_t max_rpcs_in_flight, m0_time_t abs_timeout)
M0_INTERNAL void m0_rm_rwlock_owner_fini(struct m0_rm_owner *owner)
struct m0_semaphore wlc_sem
M0_INTERNAL void m0_fid_tgenerate(struct m0_fid *fid, const uint8_t tid)
M0_INTERNAL void m0_rw_lockable_init(struct m0_rw_lockable *lockable, const struct m0_fid *fid, struct m0_rm_domain *dom)
int m0_rpc_conn_destroy(struct m0_rpc_conn *conn, m0_time_t abs_timeout)
M0_INTERNAL int m0_semaphore_init(struct m0_semaphore *semaphore, unsigned value)
static void _write_lock_put(struct wlock_ctx *wlx)
static void _write_lock_get(struct wlock_ctx *wlx)
const struct m0_fid M0_RWLOCK_FID
static void write_lock_conflict(struct m0_rm_incoming *in)
struct m0_rm_owner wlc_owner
struct m0_rm_incoming wlc_req
M0_INTERNAL int m0_rwlockable_domain_type_init(struct m0_rm_domain *rwl_dom, struct m0_rm_resource_type *rwl_rt)
struct m0_fid wlc_owner_fid
static int wlock_ctx_create(struct m0_rpc_machine *rpc_mach, const char *rm_ep)
M0_INTERNAL void m0_rm_credit_put(struct m0_rm_incoming *in)
struct m0_rpc_session wlc_sess
static uint8_t fail[DATA_UNIT_COUNT_MAX+PARITY_UNIT_COUNT_MAX]
static void wlock_ctx_destroy(struct wlock_ctx *wlx)
M0_INTERNAL void m0_rm_remote_fini(struct m0_rm_remote *rem)
M0_INTERNAL void rm_write_lock_put()
M0_INTERNAL void m0_rm_owner_windup(struct m0_rm_owner *owner)
struct m0_rm_resource_type wlc_rt
M0_INTERNAL void m0_rm_incoming_fini(struct m0_rm_incoming *in)
M0_INTERNAL void m0_rm_owner_creditor_reset(struct m0_rm_owner *owner, struct m0_rm_remote *creditor)
struct m0_rm_domain wlc_dom
struct m0_rm_remote wlc_creditor
M0_INTERNAL void m0_semaphore_down(struct m0_semaphore *semaphore)
static void wlock_ctx_creditor_unset(struct wlock_ctx *wlx)
static void wlock_ctx_creditor_setup(struct wlock_ctx *wlx)
M0_INTERNAL void m0_semaphore_up(struct m0_semaphore *semaphore)
static void wlock_ctx_disconnect(struct wlock_ctx *wlx)
M0_INTERNAL void m0_rwlockable_domain_type_fini(struct m0_rm_domain *rwl_dom, struct m0_rm_resource_type *rwl_rt)
struct m0_rpc_conn wlc_conn
M0_INTERNAL void m0_rm_credit_get(struct m0_rm_incoming *in)
struct m0_rm_resource * ro_resource