|
@@ -157,6 +157,7 @@ enum wl_prio_t {
|
|
|
BE_WORKLOAD = 0,
|
|
|
RT_WORKLOAD = 1,
|
|
|
IDLE_WORKLOAD = 2,
|
|
|
+ CFQ_PRIO_NR,
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -181,10 +182,19 @@ struct cfq_group {
|
|
|
/* number of cfqq currently on this group */
|
|
|
int nr_cfqq;
|
|
|
|
|
|
- /* Per group busy queus average. Useful for workload slice calc. */
|
|
|
- unsigned int busy_queues_avg[2];
|
|
|
/*
|
|
|
- * rr lists of queues with requests, onle rr for each priority class.
|
|
|
+ * Per group busy queus average. Useful for workload slice calc. We
|
|
|
+ * create the array for each prio class but at run time it is used
|
|
|
+ * only for RT and BE class and slot for IDLE class remains unused.
|
|
|
+ * This is primarily done to avoid confusion and a gcc warning.
|
|
|
+ */
|
|
|
+ unsigned int busy_queues_avg[CFQ_PRIO_NR];
|
|
|
+ /*
|
|
|
+ * rr lists of queues with requests. We maintain service trees for
|
|
|
+ * RT and BE classes. These trees are subdivided in subclasses
|
|
|
+ * of SYNC, SYNC_NOIDLE and ASYNC based on workload type. For IDLE
|
|
|
+ * class there is no subclassification and all the cfq queues go on
|
|
|
+ * a single tree service_tree_idle.
|
|
|
* Counts are embedded in the cfq_rb_root
|
|
|
*/
|
|
|
struct cfq_rb_root service_trees[2][3];
|