30 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_BE 115 ld_start_tlink_init(ldi);
150 while (ldi !=
NULL) {
153 ld_start_tlink_fini(ldi);
270 }
while (ldi != sync_item);
480 M0_INTERNAL
struct m0_ext *
486 #undef M0_TRACE_SUBSYSTEM M0_INTERNAL void m0_be_log_discard_item_finished(struct m0_be_log_discard *ld, struct m0_be_log_discard_item *ldi)
static void be_log_discard_sync_done_cb(struct m0_be_op *op, void *param)
struct m0_be_op * lds_flush_op
#define M0_ALLOC_ARR(arr, nr)
M0_TL_DESCR_DEFINE(ld_start, "m0_be_log_discard::lds_start_q", static, struct m0_be_log_discard_item, ldi_start_link, ldi_magic, M0_BE_LOG_DISCARD_MAGIC, M0_BE_LOG_DISCARD_HEAD_MAGIC)
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
void(* sa_cb)(struct m0_sm_group *grp, struct m0_sm_ast *)
struct m0_be_log_discard_item * lds_sync_item
const m0_time_t M0_TIME_NEVER
m0_time_t lds_sync_deadline
static void be_log_discard_unlock(struct m0_be_log_discard *ld)
static struct m0_sm_group * grp
#define M0_LOG(level,...)
struct m0_locality * ldsc_loc
static void be_log_discard_flush_finished(struct m0_be_log_discard *ld)
M0_INTERNAL void m0_sm_ast_post(struct m0_sm_group *grp, struct m0_sm_ast *ast)
M0_INTERNAL void m0_be_log_discard_flush(struct m0_be_log_discard *ld, struct m0_be_op *op)
void(* ldsc_sync)(struct m0_be_log_discard *ld, struct m0_be_op *op, struct m0_be_log_discard_item *ldi)
M0_INTERNAL void m0_be_log_discard_item_starting(struct m0_be_log_discard *ld, struct m0_be_log_discard_item *ldi)
struct m0_semaphore lds_discard_wait_sem
M0_BE_POOL_DEFINE(ld, static, struct m0_be_log_discard_item)
uint32_t ldsc_items_pending_max
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)
#define container_of(ptr, type, member)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
int m0_locality_call(struct m0_locality *loc, int(*cb)(void *), void *data)
struct m0_tlink ldi_start_link
static void be_log_discard_check_sync(struct m0_be_log_discard *ld, bool force)
struct m0_sm_ast lds_discard_ast
bool lds_sync_in_progress
enum be_log_discard_item_state ldi_state
M0_INTERNAL int m0_be_log_discard_init(struct m0_be_log_discard *ld, struct m0_be_log_discard_cfg *ld_cfg)
struct m0_be_pool_item ldi_pool_item
static struct m0_sm_ast ast[NR]
struct m0_be_log_discard_cfg lds_cfg
struct m0_be_log_discard_item * lds_item
static void be_log_discard_item_reset(struct m0_be_log_discard *ld, struct m0_be_log_discard_item *ldi)
return M0_ERR(-EOPNOTSUPP)
struct m0_be_log_discard * ldi_ld
M0_INTERNAL void m0_be_log_discard_item_get(struct m0_be_log_discard *ld, struct m0_be_op *op, struct m0_be_log_discard_item **ldi)
M0_INTERNAL void m0_be_log_discard_item_put(struct m0_be_log_discard *ld, struct m0_be_log_discard_item *ldi)
M0_INTERNAL bool m0_mutex_is_locked(const struct m0_mutex *mutex)
static void be_log_discard_item_trydiscard(struct m0_be_log_discard *ld, struct m0_be_log_discard_item *ldi)
m0_time_t m0_time_now(void)
static int be_log_discard_timer_cancel_loc(void *param)
uint32_t ldsc_items_threshold
bool lds_discard_ast_posted
static void be_log_discard_wait(struct m0_be_log_discard *ld)
M0_INTERNAL void m0_be_log_discard_item_ext_set(struct m0_be_log_discard_item *ldi, struct m0_ext *ext)
m0_time_t ldi_time_finish
M0_INTERNAL int m0_semaphore_init(struct m0_semaphore *semaphore, unsigned value)
M0_INTERNAL void m0_mutex_init(struct m0_mutex *mutex)
struct m0_sm_group * lo_grp
static bool be_log_discard_is_locked(struct m0_be_log_discard *ld)
M0_INTERNAL void m0_be_op_done(struct m0_be_op *op)
struct m0_be_op lds_sync_op
struct m0_be_pool lds_item_pool
M0_INTERNAL void m0_be_log_discard_fini(struct m0_be_log_discard *ld)
M0_INTERNAL struct m0_locality * m0_locality_here(void)
void(* ldsc_discard)(struct m0_be_log_discard *ld, struct m0_be_log_discard_item *ldi)
static void be_log_discard_item_discard(struct m0_be_log_discard *ld, struct m0_be_log_discard_item *ldi)
static void be_log_discard_timer_cancel(struct m0_be_log_discard *ld)
M0_INTERNAL void m0_be_op_reset(struct m0_be_op *op)
struct m0_sm_timer lds_sync_timer
M0_INTERNAL void m0_be_op_active(struct m0_be_op *op)
static void be_log_discard_lock(struct m0_be_log_discard *ld)
M0_INTERNAL void m0_sm_timer_cancel(struct m0_sm_timer *timer)
M0_INTERNAL void m0_be_log_discard_sync(struct m0_be_log_discard *ld)
be_log_discard_item_state
M0_INTERNAL void m0_semaphore_fini(struct m0_semaphore *semaphore)
M0_BE_POOL_DESCR_DEFINE(ld, "m0_be_log_discard::lds_item_pool", static, struct m0_be_log_discard_item, ldi_pool_item, ldi_pool_magic, M0_BE_LOG_DISCARD_POOL_MAGIC)
M0_INTERNAL void m0_be_op_fini(struct m0_be_op *op)
static void be_log_discard_ast(struct m0_sm_group *grp, struct m0_sm_ast *ast)
M0_INTERNAL void m0_mutex_fini(struct m0_mutex *mutex)
M0_TL_DEFINE(ld_start, static, struct m0_be_log_discard_item)
M0_INTERNAL void * m0_be_log_discard_item_user_data(struct m0_be_log_discard_item *ldi)
#define M0_ASSERT_INFO(cond, fmt,...)
static int be_log_discard_timer_start_loc(void *param)
M0_INTERNAL struct m0_ext * m0_be_log_discard_item_ext(struct m0_be_log_discard_item *ldi)
M0_INTERNAL void m0_semaphore_down(struct m0_semaphore *semaphore)
M0_INTERNAL void m0_semaphore_up(struct m0_semaphore *semaphore)
M0_INTERNAL void m0_sm_timer_fini(struct m0_sm_timer *timer)
M0_INTERNAL void m0_be_log_discard_item_user_data_set(struct m0_be_log_discard_item *ldi, void *data)
M0_INTERNAL void m0_sm_timer_init(struct m0_sm_timer *timer)
m0_time_t ldsc_sync_timeout
#define m0_tl_for(name, head, obj)
M0_INTERNAL void m0_be_op_init(struct m0_be_op *op)
static void be_log_discard_timer_cb(struct m0_sm_timer *timer)
M0_INTERNAL int m0_sm_timer_start(struct m0_sm_timer *timer, struct m0_sm_group *group, void(*cb)(struct m0_sm_timer *), m0_time_t deadline)
static void be_log_discard_timer_start(struct m0_be_log_discard *ld)