throtl_grp
struct throtl_grp *parent_tg = sq_to_tg(parent_sq);
struct throtl_grp *tg_to_put = NULL;
static int throtl_dispatch_tg(struct throtl_grp *tg)
struct throtl_grp *tg;
struct throtl_grp *tg = sq_to_tg(sq);
struct throtl_grp *__tg = sq_to_tg((sq)); \
struct throtl_grp *tg = pd_to_tg(pd);
struct throtl_grp *tg = pd_to_tg(pd);
static void tg_conf_updated(struct throtl_grp *tg, bool global)
struct throtl_grp *this_tg = blkg_to_tg(blkg);
struct throtl_grp *tg;
static void throtl_qnode_init(struct throtl_qnode *qn, struct throtl_grp *tg)
.private = offsetof(struct throtl_grp, bps[READ]),
.private = offsetof(struct throtl_grp, bps[WRITE]),
.private = offsetof(struct throtl_grp, iops[READ]),
.private = offsetof(struct throtl_grp, iops[WRITE]),
.private = offsetof(struct throtl_grp, stat_bytes),
.private = offsetof(struct throtl_grp, stat_bytes),
.private = offsetof(struct throtl_grp, stat_ios),
.private = offsetof(struct throtl_grp, stat_ios),
struct throtl_grp *tg = pd_to_tg(pd);
struct throtl_grp *tg;
static void tg_flush_bios(struct throtl_grp *tg)
static bool tg_within_limit(struct throtl_grp *tg, struct bio *bio, bool rw)
struct throtl_grp *tg = blkg_to_tg(blkg);
struct throtl_grp **tg_to_put, bool rw)
struct throtl_grp *tg;
#define rb_entry_tg(node) rb_entry((node), struct throtl_grp, rb_node)
struct throtl_grp *tg = pd_to_tg(pd);
static void tg_update_has_rules(struct throtl_grp *tg)
struct throtl_grp *parent_tg = sq_to_tg(tg->service_queue.parent_sq);
struct throtl_grp *tg = pd_to_tg(pd);
struct throtl_grp *tg = pd_to_tg(pd);
static struct throtl_grp *
struct throtl_grp *tg;
static void tg_service_queue_add(struct throtl_grp *tg)
struct throtl_grp *__tg;
static void throtl_enqueue_tg(struct throtl_grp *tg)
static void throtl_dequeue_tg(struct throtl_grp *tg)
static inline struct blkcg_gq *tg_to_blkg(struct throtl_grp *tg)
static inline void throtl_start_new_slice_with_credit(struct throtl_grp *tg,
static inline void throtl_start_new_slice(struct throtl_grp *tg, bool rw,
static inline void throtl_set_slice_end(struct throtl_grp *tg, bool rw,
static inline void throtl_extend_slice(struct throtl_grp *tg, bool rw,
static bool throtl_slice_used(struct throtl_grp *tg, bool rw)
static struct throtl_grp *sq_to_tg(struct throtl_service_queue *sq)
static long long throtl_trim_bps(struct throtl_grp *tg, bool rw,
return container_of(sq, struct throtl_grp, service_queue);
static int throtl_trim_iops(struct throtl_grp *tg, bool rw,
static inline void throtl_trim_slice(struct throtl_grp *tg, bool rw)
static void __tg_update_carryover(struct throtl_grp *tg, bool rw,
static void tg_update_carryover(struct throtl_grp *tg)
static unsigned long tg_within_iops_limit(struct throtl_grp *tg, struct bio *bio,
struct throtl_grp *tg = sq_to_tg(sq);
static unsigned long tg_within_bps_limit(struct throtl_grp *tg, struct bio *bio,
static void throtl_charge_bps_bio(struct throtl_grp *tg, struct bio *bio)
static void throtl_charge_iops_bio(struct throtl_grp *tg, struct bio *bio)
static uint64_t tg_bps_limit(struct throtl_grp *tg, int rw)
static void tg_update_slice(struct throtl_grp *tg, bool rw)
static unsigned long tg_dispatch_bps_time(struct throtl_grp *tg, struct bio *bio)
static unsigned long tg_dispatch_iops_time(struct throtl_grp *tg, struct bio *bio)
static unsigned long tg_dispatch_time(struct throtl_grp *tg, struct bio *bio)
struct throtl_grp *tg)
static unsigned int tg_iops_limit(struct throtl_grp *tg, int rw)
static void tg_update_disptime(struct throtl_grp *tg)
static void start_parent_slice_with_credit(struct throtl_grp *child_tg,
struct throtl_grp *parent_tg, bool rw)
static void tg_dispatch_one_bio(struct throtl_grp *tg, bool rw)
static inline struct throtl_grp *pd_to_tg(struct blkg_policy_data *pd)
return pd ? container_of(pd, struct throtl_grp, pd) : NULL;
static inline struct throtl_grp *blkg_to_tg(struct blkcg_gq *blkg)
struct throtl_grp *tg;
struct throtl_grp *tg; /* tg this qnode belongs to */