23 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_IOSERVICE 48 .sd_name =
"ios_start_init",
55 .sd_name =
"ios_start_be_create",
60 .sd_name =
"ios_start_be_result",
66 .sd_name =
"ios_start_mkfs",
71 .sd_name =
"ios_start_mkfs_result",
77 .sd_name =
"ios_start_buffer_pool_create",
83 .sd_name =
"ios_start_failure",
87 .sd_name =
"ios_start_fini",
137 M0_LOG(
M0_DEBUG,
"IO start sm:%p, state_change:[%s -> %s]", ios_sm,
185 "Ignoring rc2=%d from m0_cob_domain_destroy()", rc2);
226 if (tx_sm->
sm_rc != 0)
298 m0_get()->i_ios_cdom_key);
346 M0_ENTRY(
"key init for reqh=%p, key=%d",
475 #undef M0_TRACE_SUBSYSTEM
M0_INTERNAL int m0_ios_start_sm_init(struct m0_ios_start_sm *ios_sm, struct m0_reqh_service *service, struct m0_sm_group *grp)
struct m0_be_domain * bs_domain
M0_INTERNAL void m0_sm_fail(struct m0_sm *mach, int fail_state, int32_t rc)
static void ios_start_ast_cdom_create(struct m0_sm_group *grp, struct m0_sm_ast *ast)
M0_INTERNAL int m0_cob_domain_mkfs(struct m0_cob_domain *dom, const struct m0_fid *rootfid, struct m0_be_tx *tx)
M0_INTERNAL void m0_clink_init(struct m0_clink *link, m0_chan_cb_t cb)
M0_INTERNAL void m0_clink_del(struct m0_clink *link)
void(* sa_cb)(struct m0_sm_group *grp, struct m0_sm_ast *)
static void ios_start_ast_mkfs_result(struct m0_sm_group *grp, struct m0_sm_ast *ast)
M0_INTERNAL void m0_ios_start_unlock(struct m0_ios_start_sm *ios_sm)
static struct m0_ios_start_sm * ios_start_ast2sm(struct m0_sm_ast *ast)
static void ios_start_cob_tx_open(struct m0_ios_start_sm *ios_sm)
static struct m0_sm_group * grp
#define M0_LOG(level,...)
static void ios_start_tx_open(struct m0_ios_start_sm *ios_sm, bool exclusive)
M0_INTERNAL void m0_sm_ast_post(struct m0_sm_group *grp, struct m0_sm_ast *ast)
static struct m0_ios_start_sm * ios_start_clink2sm(struct m0_clink *cl)
M0_INTERNAL void m0_be_tx_fini(struct m0_be_tx *tx)
M0_INTERNAL void m0_be_tx_exclusive_open(struct m0_be_tx *tx)
void m0_cob_domain_fini(struct m0_cob_domain *dom)
M0_INTERNAL void m0_rwlock_write_lock(struct m0_rwlock *lock)
M0_INTERNAL const char * m0_sm_state_name(const struct m0_sm *mach, int state)
M0_INTERNAL void m0_be_tx_prep(struct m0_be_tx *tx, const struct m0_be_tx_credit *credit)
M0_INTERNAL int m0_cob_domain_credit_add(struct m0_cob_domain *dom, struct m0_be_domain *bedom, struct m0_be_seg *seg, const struct m0_cob_domain_id *cdid, struct m0_be_tx_credit *cred)
M0_INTERNAL struct m0 * m0_get(void)
struct m0_clink ism_clink
#define container_of(ptr, type, member)
struct m0_rwlock rh_rwlock
static void ios_start_sm_failure(struct m0_ios_start_sm *ios_sm, int rc)
static void ios_start_tx_close(struct m0_ios_start_sm *ios_sm)
static bool ios_start_is_locked(const struct m0_ios_start_sm *ios_sm)
M0_INTERNAL void m0_cob_tx_credit(struct m0_cob_domain *dom, enum m0_cob_op optype, struct m0_be_tx_credit *accum)
static struct m0_sm_ast ast[NR]
M0_INTERNAL void m0_sm_group_unlock(struct m0_sm_group *grp)
return M0_ERR(-EOPNOTSUPP)
struct m0_cob_domain * ism_dom
M0_INTERNAL const struct m0_fid M0_MDSERVICE_SLASH_FID
M0_INTERNAL int m0_cob_domain_create_prepared(struct m0_cob_domain **out, struct m0_sm_group *grp, const struct m0_cob_domain_id *cdid, struct m0_be_domain *bedom, struct m0_be_seg *seg, struct m0_be_tx *tx)
M0_INTERNAL bool m0_mutex_is_locked(const struct m0_mutex *mutex)
void m0_sm_state_set(struct m0_sm *mach, int state)
int m0_cob_domain_destroy(struct m0_cob_domain *dom, struct m0_sm_group *grp, struct m0_be_domain *bedom)
static bool ios_start_tx_open_wait_cb(struct m0_clink *cl)
static void ios_start_sm_tick(struct m0_ios_start_sm *ios_sm)
M0_INTERNAL void m0_be_tx_close(struct m0_be_tx *tx)
static void ios_start_ast_start(struct m0_sm_group *grp, struct m0_sm_ast *ast)
struct m0_sm_group * sm_grp
struct m0_reqh * ism_reqh
M0_INTERNAL void m0_rwlock_write_unlock(struct m0_rwlock *lock)
static struct m0_sm_state_descr ios_start_sm_states[]
M0_INTERNAL void m0_ios_delete_buffer_pool(struct m0_reqh_service *service)
int m0_cob_domain_init(struct m0_cob_domain *dom, struct m0_be_seg *seg)
M0_INTERNAL void m0_be_tx_init(struct m0_be_tx *tx, uint64_t tid, struct m0_be_domain *dom, struct m0_sm_group *sm_group, m0_be_tx_cb_t persistent, m0_be_tx_cb_t discarded, void(*filler)(struct m0_be_tx *tx, void *payload), void *datum)
static void ios_start_ast_mkfs(struct m0_sm_group *grp, struct m0_sm_ast *ast)
static void ios_start_state_set(struct m0_ios_start_sm *ios_sm, enum m0_ios_start_state state)
M0_INTERNAL void m0_sm_init(struct m0_sm *mach, const struct m0_sm_conf *conf, uint32_t state, struct m0_sm_group *grp)
M0_INTERNAL void m0_clink_add(struct m0_chan *chan, struct m0_clink *link)
M0_INTERNAL void m0_ios_start_sm_fini(struct m0_ios_start_sm *ios_sm)
static const struct m0_sm_conf ios_start_sm_conf
M0_INTERNAL void m0_be_tx_open(struct m0_be_tx *tx)
static void ios_start_ast_cdom_create_res(struct m0_sm_group *grp, struct m0_sm_ast *ast)
M0_INTERNAL void m0_clink_fini(struct m0_clink *link)
M0_INTERNAL void m0_rwlock_read_lock(struct m0_rwlock *lock)
struct m0_be_seg * rh_beseg
M0_INTERNAL void m0_sm_group_lock(struct m0_sm_group *grp)
static void ios_start_cdom_tx_open(struct m0_ios_start_sm *ios_sm)
struct m0_cob_domain_id ism_cdom_id
static struct m0_be_seg * seg
static bool ios_start_tx_done_wait_cb(struct m0_clink *cl)
static void ios_start_tx_waiter(struct m0_clink *cl, uint32_t flag)
M0_INTERNAL void m0_rwlock_read_unlock(struct m0_rwlock *lock)
static enum m0_ios_start_state ios_start_state_get(const struct m0_ios_start_sm *ios_sm)
M0_INTERNAL void m0_ios_start_sm_exec(struct m0_ios_start_sm *ios_sm)
M0_INTERNAL int m0_ios_create_buffer_pool(struct m0_reqh_service *service)
static struct m0_reqh_service * service[REQH_IN_UT_MAX]
M0_INTERNAL void m0_ios_start_lock(struct m0_ios_start_sm *ios_sm)
struct m0_reqh_service * ism_service
static void ios_start_buffer_pool_create(struct m0_ios_start_sm *ios_sm)
M0_INTERNAL void m0_sm_fini(struct m0_sm *mach)