ioc_gq
static void __propagate_weights(struct ioc_gq *iocg, u32 active, u32 inuse,
struct ioc_gq *parent = iocg->ancestors[lvl];
struct ioc_gq *child = iocg->ancestors[lvl + 1];
static void propagate_weights(struct ioc_gq *iocg, u32 active, u32 inuse,
static void current_hweight(struct ioc_gq *iocg, u32 *hw_activep, u32 *hw_inusep)
struct ioc_gq *parent = iocg->ancestors[lvl];
struct ioc_gq *child = iocg->ancestors[lvl + 1];
static u32 current_hweight_max(struct ioc_gq *iocg)
struct ioc_gq *parent = iocg->ancestors[lvl];
struct ioc_gq *child = iocg->ancestors[lvl + 1];
static void weight_updated(struct ioc_gq *iocg, struct ioc_now *now)
static bool iocg_activate(struct ioc_gq *iocg, struct ioc_now *now)
static bool iocg_kick_delay(struct ioc_gq *iocg, struct ioc_now *now)
static void iocg_incur_debt(struct ioc_gq *iocg, u64 abs_cost,
static void iocg_pay_debt(struct ioc_gq *iocg, u64 abs_vpay,
static void iocg_kick_waitq(struct ioc_gq *iocg, bool pay_debt,
struct ioc_gq *iocg = container_of(timer, struct ioc_gq, waitq_timer);
static bool iocg_is_idle(struct ioc_gq *iocg)
static void iocg_build_inner_walk(struct ioc_gq *iocg,
struct ioc_gq *inner = iocg->ancestors[lvl];
static void iocg_flush_stat_upward(struct ioc_gq *iocg)
static void iocg_flush_stat_leaf(struct ioc_gq *iocg, struct ioc_now *now)
struct ioc_gq *iocg, *tiocg;
static u32 hweight_after_donation(struct ioc_gq *iocg, u32 old_hwi, u32 hwm,
struct ioc_gq *iocg, *tiocg, *root_iocg;
root_iocg = list_first_entry(&inner_walk, struct ioc_gq, walk_list);
struct ioc_gq *parent = iocg->ancestors[iocg->level - 1];
struct ioc_gq *parent = iocg->ancestors[iocg->level - 1];
struct ioc_gq *parent = iocg->ancestors[iocg->level - 1];
struct ioc_gq *parent;
struct ioc_gq *parent = iocg->ancestors[iocg->level - 1];
struct ioc_gq *iocg;
struct ioc_gq *iocg, *tiocg;
struct ioc_gq *iocg, *tiocg;
static u64 adjust_inuse_and_calc_cost(struct ioc_gq *iocg, u64 vtime,
static void calc_vtime_cost_builtin(struct bio *bio, struct ioc_gq *iocg,
static u64 calc_vtime_cost(struct bio *bio, struct ioc_gq *iocg, bool is_merge)
struct ioc_gq *iocg = blkg_to_iocg(blkg);
struct ioc_gq *iocg = blkg_to_iocg(bio->bi_blkg);
struct ioc_gq *iocg = blkg_to_iocg(bio->bi_blkg);
struct ioc_gq *iocg;
struct ioc_gq *iocg = pd_to_iocg(pd);
struct ioc_gq *tiocg = blkg_to_iocg(tblkg);
struct ioc_gq *iocg = pd_to_iocg(pd);
struct ioc_gq *iocg = pd_to_iocg(pd);
struct ioc_gq *iocg = pd_to_iocg(pd);
struct ioc_gq *iocg;
struct ioc_gq *iocg = blkg_to_iocg(blkg);
struct ioc_gq *ancestors[];
struct ioc_gq *iocg;
static struct ioc_gq *pd_to_iocg(struct blkg_policy_data *pd)
return pd ? container_of(pd, struct ioc_gq, pd) : NULL;
static struct ioc_gq *blkg_to_iocg(struct blkcg_gq *blkg)
static struct blkcg_gq *iocg_to_blkg(struct ioc_gq *iocg)
static void iocg_commit_bio(struct ioc_gq *iocg, struct bio *bio,
static void iocg_lock(struct ioc_gq *iocg, bool lock_ioc, unsigned long *flags)
static void iocg_unlock(struct ioc_gq *iocg, bool unlock_ioc, unsigned long *flags)
TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now,
TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now,
TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now,
TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now,
TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now,
TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now,
struct ioc_gq;
TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now,
TP_PROTO(struct ioc_gq *iocg, const char *path, struct ioc_now *now,