ioc_gqRegular
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 ✅