30 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_BE 46 struct m0_be_io, bio_sched_link, bio_sched_magic,
57 sched_io_tlist_init(&sched->
bis_ios);
66 sched_io_tlist_fini(&sched->
bis_ios);
90 sched_io_tlist_next(&sched->
bis_ios,
io)->bio_ext.e_start);
100 io = sched_io_tlist_head(&sched->
bis_ios);
105 "io->bio_ext.e_start=%"PRIu64,
135 sched_io_tlink_del_fini(
io);
154 for (io_prev = sched_io_tlist_tail(&sched->
bis_ios);
156 io_prev = sched_io_tlist_prev(&sched->
bis_ios, io_prev)) {
161 io_next = sched_io_tlist_next(&sched->
bis_ios, io_prev);
164 io_next = sched_io_tlist_next(&sched->
bis_ios, io_prev);
167 sched_io_tlink_init(
io);
171 sched_io_tlist_add_after(io_prev,
io);
191 io->bio_sched = sched;
193 io_last = sched_io_tlist_tail(&sched->
bis_ios);
196 io->bio_ext.e_end =
io->bio_ext.e_start;
206 io->bio_sched_op_user =
op;
210 #undef M0_TRACE_SUBSYSTEM
M0_INTERNAL m0_bcount_t m0_be_io_size(struct m0_be_io *bio)
m0_bcount_t bisc_pos_start
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
#define M0_LOG(level,...)
static void be_io_sched_insert(struct m0_be_io_sched *sched, struct m0_be_io *io)
M0_INTERNAL void m0_be_op_callback_set(struct m0_be_op *op, m0_be_op_cb_t cb, void *param, enum m0_be_op_state state)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
static void be_io_sched_cb(struct m0_be_op *op, void *param)
#define M0_EXT(start, end)
static void be_io_sched_launch_next_locked(struct m0_be_io_sched *sched)
M0_INTERNAL int m0_be_io_sched_init(struct m0_be_io_sched *sched, struct m0_be_io_sched_cfg *cfg)
M0_INTERNAL bool m0_be_io_sched_is_locked(struct m0_be_io_sched *sched)
M0_INTERNAL bool m0_mutex_is_locked(const struct m0_mutex *mutex)
M0_INTERNAL void m0_ext_init(struct m0_ext *ext)
M0_INTERNAL void m0_be_io_sched_lock(struct m0_be_io_sched *sched)
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
M0_INTERNAL void m0_be_io_sched_fini(struct m0_be_io_sched *sched)
M0_INTERNAL void m0_be_op_done(struct m0_be_op *op)
static struct m0_stob_io io
M0_INTERNAL bool m0_ext_is_empty(const struct m0_ext *ext)
M0_TL_DESCR_DEFINE(sched_io, "be log scheduler IOs", static, struct m0_be_io, bio_sched_link, bio_sched_magic, M0_BE_IO_SCHED_MAGIC, M0_BE_IO_SCHED_HEAD_MAGIC)
M0_INTERNAL bool m0_be_io_is_empty(struct m0_be_io *bio)
M0_INTERNAL void m0_be_op_active(struct m0_be_op *op)
M0_INTERNAL void m0_be_io_sched_unlock(struct m0_be_io_sched *sched)
M0_INTERNAL enum m0_stob_io_opcode m0_be_io_opcode(struct m0_be_io *io)
M0_INTERNAL void m0_be_op_fini(struct m0_be_op *op)
static bool be_io_sched_invariant(struct m0_be_io_sched *sched)
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
M0_INTERNAL void m0_be_io_sched_add(struct m0_be_io_sched *sched, struct m0_be_io *io, struct m0_ext *ext, struct m0_be_op *op)
static void be_io_sched_launch_next(struct m0_be_io_sched *sched)
M0_INTERNAL void m0_be_op_init(struct m0_be_op *op)
struct m0_be_io_sched_cfg bis_cfg
M0_INTERNAL void m0_be_io_launch(struct m0_be_io *bio, struct m0_be_op *op)
#define m0_tl_forall(name, var, head,...)
M0_TL_DEFINE(sched_io, static, struct m0_be_io)