ioc_gq
Regular
4.4
: Absent ⚠️
4.8
: Absent ⚠️
4.10
: Absent ⚠️
4.13
: Absent ⚠️
4.15
: Absent ⚠️
4.18
: Absent ⚠️
5.0
: Absent ⚠️
5.3
: Absent ⚠️
5.4
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
atomic64_t abs_vdebt;
u64 last_vtime;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
bool has_surplus;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
struct hrtimer delay_timer;
int usage_idx;
u32 usages[3];
int level;
struct ioc_gq * ancestors[0];
};
5.8
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
u64 abs_vdebt;
u64 last_vtime;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
bool has_surplus;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
struct hrtimer delay_timer;
int usage_idx;
u32 usages[3];
int level;
struct ioc_gq * ancestors[0];
};
5.11
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
s64 saved_margin;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
u64 abs_vdebt;
u64 delay;
u64 delay_at;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
u64 child_adjusted_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
u32 hweight_donating;
u32 hweight_after_donation;
struct list_head walk_list;
struct list_head surplus_list;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
u64 activated_at;
struct iocg_pcpu_stat *pcpu_stat;
struct iocg_stat local_stat;
struct iocg_stat desc_stat;
struct iocg_stat last_stat;
u64 last_stat_abs_vusage;
u64 usage_delta_us;
u64 wait_since;
u64 indebt_since;
u64 indelay_since;
int level;
struct ioc_gq * ancestors[0];
};
5.13
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
s64 saved_margin;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
u64 abs_vdebt;
u64 delay;
u64 delay_at;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
u64 child_adjusted_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
u32 hweight_donating;
u32 hweight_after_donation;
struct list_head walk_list;
struct list_head surplus_list;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
u64 activated_at;
struct iocg_pcpu_stat *pcpu_stat;
struct iocg_stat local_stat;
struct iocg_stat desc_stat;
struct iocg_stat last_stat;
u64 last_stat_abs_vusage;
u64 usage_delta_us;
u64 wait_since;
u64 indebt_since;
u64 indelay_since;
int level;
struct ioc_gq * ancestors[0];
};
5.15
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
s64 saved_margin;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
u64 abs_vdebt;
u64 delay;
u64 delay_at;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
u64 child_adjusted_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
u32 hweight_donating;
u32 hweight_after_donation;
struct list_head walk_list;
struct list_head surplus_list;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
u64 activated_at;
struct iocg_pcpu_stat *pcpu_stat;
struct iocg_stat local_stat;
struct iocg_stat desc_stat;
struct iocg_stat last_stat;
u64 last_stat_abs_vusage;
u64 usage_delta_us;
u64 wait_since;
u64 indebt_since;
u64 indelay_since;
int level;
struct ioc_gq * ancestors[0];
};
5.19
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
s64 saved_margin;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
u64 abs_vdebt;
u64 delay;
u64 delay_at;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
u64 child_adjusted_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
u32 hweight_donating;
u32 hweight_after_donation;
struct list_head walk_list;
struct list_head surplus_list;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
u64 activated_at;
struct iocg_pcpu_stat *pcpu_stat;
struct iocg_stat stat;
struct iocg_stat last_stat;
u64 last_stat_abs_vusage;
u64 usage_delta_us;
u64 wait_since;
u64 indebt_since;
u64 indelay_since;
int level;
struct ioc_gq * ancestors[0];
};
6.2
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
s64 saved_margin;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
u64 abs_vdebt;
u64 delay;
u64 delay_at;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
u64 child_adjusted_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
u32 hweight_donating;
u32 hweight_after_donation;
struct list_head walk_list;
struct list_head surplus_list;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
u64 activated_at;
struct iocg_pcpu_stat *pcpu_stat;
struct iocg_stat stat;
struct iocg_stat last_stat;
u64 last_stat_abs_vusage;
u64 usage_delta_us;
u64 wait_since;
u64 indebt_since;
u64 indelay_since;
int level;
struct ioc_gq * ancestors[0];
};
6.5
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
s64 saved_margin;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
u64 abs_vdebt;
u64 delay;
u64 delay_at;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
u64 child_adjusted_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
u32 hweight_donating;
u32 hweight_after_donation;
struct list_head walk_list;
struct list_head surplus_list;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
u64 activated_at;
struct iocg_pcpu_stat *pcpu_stat;
struct iocg_stat stat;
struct iocg_stat last_stat;
u64 last_stat_abs_vusage;
u64 usage_delta_us;
u64 wait_since;
u64 indebt_since;
u64 indelay_since;
int level;
struct ioc_gq * ancestors[0];
};
6.8
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
s64 saved_margin;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
u64 abs_vdebt;
u64 delay;
u64 delay_at;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
u64 child_adjusted_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
u32 hweight_donating;
u32 hweight_after_donation;
struct list_head walk_list;
struct list_head surplus_list;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
u64 activated_at;
struct iocg_pcpu_stat *pcpu_stat;
struct iocg_stat stat;
struct iocg_stat last_stat;
u64 last_stat_abs_vusage;
u64 usage_delta_us;
u64 wait_since;
u64 indebt_since;
u64 indelay_since;
int level;
struct ioc_gq * ancestors[0];
};
arm64
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
atomic64_t abs_vdebt;
u64 last_vtime;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
bool has_surplus;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
struct hrtimer delay_timer;
int usage_idx;
u32 usages[3];
int level;
struct ioc_gq * ancestors[0];
};
armhf
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
atomic64_t abs_vdebt;
u64 last_vtime;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
bool has_surplus;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
struct hrtimer delay_timer;
int usage_idx;
u32 usages[3];
int level;
struct ioc_gq * ancestors[0];
};
ppc64el
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
atomic64_t abs_vdebt;
u64 last_vtime;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
bool has_surplus;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
struct hrtimer delay_timer;
int usage_idx;
u32 usages[3];
int level;
struct ioc_gq * ancestors[0];
};
riscv64
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
atomic64_t abs_vdebt;
u64 last_vtime;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
bool has_surplus;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
struct hrtimer delay_timer;
int usage_idx;
u32 usages[3];
int level;
struct ioc_gq * ancestors[0];
};
aws
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
atomic64_t abs_vdebt;
u64 last_vtime;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
bool has_surplus;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
struct hrtimer delay_timer;
int usage_idx;
u32 usages[3];
int level;
struct ioc_gq * ancestors[0];
};
azure
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
atomic64_t abs_vdebt;
u64 last_vtime;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
bool has_surplus;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
struct hrtimer delay_timer;
int usage_idx;
u32 usages[3];
int level;
struct ioc_gq * ancestors[0];
};
gcp
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
atomic64_t abs_vdebt;
u64 last_vtime;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
bool has_surplus;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
struct hrtimer delay_timer;
int usage_idx;
u32 usages[3];
int level;
struct ioc_gq * ancestors[0];
};
lowlatency
: ✅struct ioc_gq {
struct blkg_policy_data pd;
struct ioc *ioc;
u32 cfg_weight;
u32 weight;
u32 active;
u32 inuse;
u32 last_inuse;
sector_t cursor;
atomic64_t vtime;
atomic64_t done_vtime;
atomic64_t abs_vdebt;
u64 last_vtime;
atomic64_t active_period;
struct list_head active_list;
u64 child_active_sum;
u64 child_inuse_sum;
int hweight_gen;
u32 hweight_active;
u32 hweight_inuse;
bool has_surplus;
struct wait_queue_head waitq;
struct hrtimer waitq_timer;
struct hrtimer delay_timer;
int usage_idx;
u32 usages[3];
int level;
struct ioc_gq * ancestors[0];
};
Regular
5.4
and 5.8
⚠️atomic64_t abs_vdebt
➡️ u64 abs_vdebt
5.8
and 5.11
⚠️s64 saved_margin
u64 delay
u64 delay_at
u64 child_adjusted_sum
u32 hweight_donating
u32 hweight_after_donation
struct list_head walk_list
struct list_head surplus_list
u64 activated_at
struct iocg_pcpu_stat *pcpu_stat
struct iocg_stat local_stat
struct iocg_stat desc_stat
struct iocg_stat last_stat
u64 last_stat_abs_vusage
u64 usage_delta_us
u64 wait_since
u64 indebt_since
u64 indelay_since
u64 last_vtime
bool has_surplus
struct hrtimer delay_timer
int usage_idx
u32 usages[3]
5.11
and 5.13
✅
5.13
and 5.15
✅
5.15
and 5.19
⚠️struct iocg_stat stat
struct iocg_stat local_stat
struct iocg_stat desc_stat
5.19
and 6.2
✅
6.2
and 6.5
✅
6.5
and 6.8
✅
amd64
and arm64
✅
amd64
and armhf
✅
amd64
and ppc64el
✅
amd64
and riscv64
✅
generic
and aws
✅
generic
and azure
✅
generic
and gcp
✅
generic
and lowlatency
✅