|
@@ -1632,11 +1632,11 @@ static u64 cfqg_prfill_weight_device(struct seq_file *sf,
|
|
|
return __blkg_prfill_u64(sf, pd, cfqg->dev_weight);
|
|
|
}
|
|
|
|
|
|
-static int cfqg_print_weight_device(struct cgroup_subsys_state *css,
|
|
|
- struct cftype *cft, struct seq_file *sf)
|
|
|
+static int cfqg_print_weight_device(struct seq_file *sf, void *v)
|
|
|
{
|
|
|
- blkcg_print_blkgs(sf, css_to_blkcg(css), cfqg_prfill_weight_device,
|
|
|
- &blkcg_policy_cfq, 0, false);
|
|
|
+ blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
|
|
|
+ cfqg_prfill_weight_device, &blkcg_policy_cfq,
|
|
|
+ 0, false);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1650,26 +1650,23 @@ static u64 cfqg_prfill_leaf_weight_device(struct seq_file *sf,
|
|
|
return __blkg_prfill_u64(sf, pd, cfqg->dev_leaf_weight);
|
|
|
}
|
|
|
|
|
|
-static int cfqg_print_leaf_weight_device(struct cgroup_subsys_state *css,
|
|
|
- struct cftype *cft,
|
|
|
- struct seq_file *sf)
|
|
|
+static int cfqg_print_leaf_weight_device(struct seq_file *sf, void *v)
|
|
|
{
|
|
|
- blkcg_print_blkgs(sf, css_to_blkcg(css), cfqg_prfill_leaf_weight_device,
|
|
|
- &blkcg_policy_cfq, 0, false);
|
|
|
+ blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
|
|
|
+ cfqg_prfill_leaf_weight_device, &blkcg_policy_cfq,
|
|
|
+ 0, false);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int cfq_print_weight(struct cgroup_subsys_state *css, struct cftype *cft,
|
|
|
- struct seq_file *sf)
|
|
|
+static int cfq_print_weight(struct seq_file *sf, void *v)
|
|
|
{
|
|
|
- seq_printf(sf, "%u\n", css_to_blkcg(css)->cfq_weight);
|
|
|
+ seq_printf(sf, "%u\n", css_to_blkcg(seq_css(sf))->cfq_weight);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int cfq_print_leaf_weight(struct cgroup_subsys_state *css,
|
|
|
- struct cftype *cft, struct seq_file *sf)
|
|
|
+static int cfq_print_leaf_weight(struct seq_file *sf, void *v)
|
|
|
{
|
|
|
- seq_printf(sf, "%u\n", css_to_blkcg(css)->cfq_leaf_weight);
|
|
|
+ seq_printf(sf, "%u\n", css_to_blkcg(seq_css(sf))->cfq_leaf_weight);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1762,23 +1759,17 @@ static int cfq_set_leaf_weight(struct cgroup_subsys_state *css,
|
|
|
return __cfq_set_weight(css, cft, val, true);
|
|
|
}
|
|
|
|
|
|
-static int cfqg_print_stat(struct cgroup_subsys_state *css, struct cftype *cft,
|
|
|
- struct seq_file *sf)
|
|
|
+static int cfqg_print_stat(struct seq_file *sf, void *v)
|
|
|
{
|
|
|
- struct blkcg *blkcg = css_to_blkcg(css);
|
|
|
-
|
|
|
- blkcg_print_blkgs(sf, blkcg, blkg_prfill_stat, &blkcg_policy_cfq,
|
|
|
- cft->private, false);
|
|
|
+ blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), blkg_prfill_stat,
|
|
|
+ &blkcg_policy_cfq, seq_cft(sf)->private, false);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int cfqg_print_rwstat(struct cgroup_subsys_state *css,
|
|
|
- struct cftype *cft, struct seq_file *sf)
|
|
|
+static int cfqg_print_rwstat(struct seq_file *sf, void *v)
|
|
|
{
|
|
|
- struct blkcg *blkcg = css_to_blkcg(css);
|
|
|
-
|
|
|
- blkcg_print_blkgs(sf, blkcg, blkg_prfill_rwstat, &blkcg_policy_cfq,
|
|
|
- cft->private, true);
|
|
|
+ blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), blkg_prfill_rwstat,
|
|
|
+ &blkcg_policy_cfq, seq_cft(sf)->private, true);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1798,23 +1789,19 @@ static u64 cfqg_prfill_rwstat_recursive(struct seq_file *sf,
|
|
|
return __blkg_prfill_rwstat(sf, pd, &sum);
|
|
|
}
|
|
|
|
|
|
-static int cfqg_print_stat_recursive(struct cgroup_subsys_state *css,
|
|
|
- struct cftype *cft, struct seq_file *sf)
|
|
|
+static int cfqg_print_stat_recursive(struct seq_file *sf, void *v)
|
|
|
{
|
|
|
- struct blkcg *blkcg = css_to_blkcg(css);
|
|
|
-
|
|
|
- blkcg_print_blkgs(sf, blkcg, cfqg_prfill_stat_recursive,
|
|
|
- &blkcg_policy_cfq, cft->private, false);
|
|
|
+ blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
|
|
|
+ cfqg_prfill_stat_recursive, &blkcg_policy_cfq,
|
|
|
+ seq_cft(sf)->private, false);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int cfqg_print_rwstat_recursive(struct cgroup_subsys_state *css,
|
|
|
- struct cftype *cft, struct seq_file *sf)
|
|
|
+static int cfqg_print_rwstat_recursive(struct seq_file *sf, void *v)
|
|
|
{
|
|
|
- struct blkcg *blkcg = css_to_blkcg(css);
|
|
|
-
|
|
|
- blkcg_print_blkgs(sf, blkcg, cfqg_prfill_rwstat_recursive,
|
|
|
- &blkcg_policy_cfq, cft->private, true);
|
|
|
+ blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
|
|
|
+ cfqg_prfill_rwstat_recursive, &blkcg_policy_cfq,
|
|
|
+ seq_cft(sf)->private, true);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1835,13 +1822,11 @@ static u64 cfqg_prfill_avg_queue_size(struct seq_file *sf,
|
|
|
}
|
|
|
|
|
|
/* print avg_queue_size */
|
|
|
-static int cfqg_print_avg_queue_size(struct cgroup_subsys_state *css,
|
|
|
- struct cftype *cft, struct seq_file *sf)
|
|
|
+static int cfqg_print_avg_queue_size(struct seq_file *sf, void *v)
|
|
|
{
|
|
|
- struct blkcg *blkcg = css_to_blkcg(css);
|
|
|
-
|
|
|
- blkcg_print_blkgs(sf, blkcg, cfqg_prfill_avg_queue_size,
|
|
|
- &blkcg_policy_cfq, 0, false);
|
|
|
+ blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)),
|
|
|
+ cfqg_prfill_avg_queue_size, &blkcg_policy_cfq,
|
|
|
+ 0, false);
|
|
|
return 0;
|
|
|
}
|
|
|
#endif /* CONFIG_DEBUG_BLK_CGROUP */
|
|
@@ -1851,14 +1836,14 @@ static struct cftype cfq_blkcg_files[] = {
|
|
|
{
|
|
|
.name = "weight_device",
|
|
|
.flags = CFTYPE_ONLY_ON_ROOT,
|
|
|
- .read_seq_string = cfqg_print_leaf_weight_device,
|
|
|
+ .seq_show = cfqg_print_leaf_weight_device,
|
|
|
.write_string = cfqg_set_leaf_weight_device,
|
|
|
.max_write_len = 256,
|
|
|
},
|
|
|
{
|
|
|
.name = "weight",
|
|
|
.flags = CFTYPE_ONLY_ON_ROOT,
|
|
|
- .read_seq_string = cfq_print_leaf_weight,
|
|
|
+ .seq_show = cfq_print_leaf_weight,
|
|
|
.write_u64 = cfq_set_leaf_weight,
|
|
|
},
|
|
|
|
|
@@ -1866,26 +1851,26 @@ static struct cftype cfq_blkcg_files[] = {
|
|
|
{
|
|
|
.name = "weight_device",
|
|
|
.flags = CFTYPE_NOT_ON_ROOT,
|
|
|
- .read_seq_string = cfqg_print_weight_device,
|
|
|
+ .seq_show = cfqg_print_weight_device,
|
|
|
.write_string = cfqg_set_weight_device,
|
|
|
.max_write_len = 256,
|
|
|
},
|
|
|
{
|
|
|
.name = "weight",
|
|
|
.flags = CFTYPE_NOT_ON_ROOT,
|
|
|
- .read_seq_string = cfq_print_weight,
|
|
|
+ .seq_show = cfq_print_weight,
|
|
|
.write_u64 = cfq_set_weight,
|
|
|
},
|
|
|
|
|
|
{
|
|
|
.name = "leaf_weight_device",
|
|
|
- .read_seq_string = cfqg_print_leaf_weight_device,
|
|
|
+ .seq_show = cfqg_print_leaf_weight_device,
|
|
|
.write_string = cfqg_set_leaf_weight_device,
|
|
|
.max_write_len = 256,
|
|
|
},
|
|
|
{
|
|
|
.name = "leaf_weight",
|
|
|
- .read_seq_string = cfq_print_leaf_weight,
|
|
|
+ .seq_show = cfq_print_leaf_weight,
|
|
|
.write_u64 = cfq_set_leaf_weight,
|
|
|
},
|
|
|
|
|
@@ -1893,114 +1878,114 @@ static struct cftype cfq_blkcg_files[] = {
|
|
|
{
|
|
|
.name = "time",
|
|
|
.private = offsetof(struct cfq_group, stats.time),
|
|
|
- .read_seq_string = cfqg_print_stat,
|
|
|
+ .seq_show = cfqg_print_stat,
|
|
|
},
|
|
|
{
|
|
|
.name = "sectors",
|
|
|
.private = offsetof(struct cfq_group, stats.sectors),
|
|
|
- .read_seq_string = cfqg_print_stat,
|
|
|
+ .seq_show = cfqg_print_stat,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_service_bytes",
|
|
|
.private = offsetof(struct cfq_group, stats.service_bytes),
|
|
|
- .read_seq_string = cfqg_print_rwstat,
|
|
|
+ .seq_show = cfqg_print_rwstat,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_serviced",
|
|
|
.private = offsetof(struct cfq_group, stats.serviced),
|
|
|
- .read_seq_string = cfqg_print_rwstat,
|
|
|
+ .seq_show = cfqg_print_rwstat,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_service_time",
|
|
|
.private = offsetof(struct cfq_group, stats.service_time),
|
|
|
- .read_seq_string = cfqg_print_rwstat,
|
|
|
+ .seq_show = cfqg_print_rwstat,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_wait_time",
|
|
|
.private = offsetof(struct cfq_group, stats.wait_time),
|
|
|
- .read_seq_string = cfqg_print_rwstat,
|
|
|
+ .seq_show = cfqg_print_rwstat,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_merged",
|
|
|
.private = offsetof(struct cfq_group, stats.merged),
|
|
|
- .read_seq_string = cfqg_print_rwstat,
|
|
|
+ .seq_show = cfqg_print_rwstat,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_queued",
|
|
|
.private = offsetof(struct cfq_group, stats.queued),
|
|
|
- .read_seq_string = cfqg_print_rwstat,
|
|
|
+ .seq_show = cfqg_print_rwstat,
|
|
|
},
|
|
|
|
|
|
/* the same statictics which cover the cfqg and its descendants */
|
|
|
{
|
|
|
.name = "time_recursive",
|
|
|
.private = offsetof(struct cfq_group, stats.time),
|
|
|
- .read_seq_string = cfqg_print_stat_recursive,
|
|
|
+ .seq_show = cfqg_print_stat_recursive,
|
|
|
},
|
|
|
{
|
|
|
.name = "sectors_recursive",
|
|
|
.private = offsetof(struct cfq_group, stats.sectors),
|
|
|
- .read_seq_string = cfqg_print_stat_recursive,
|
|
|
+ .seq_show = cfqg_print_stat_recursive,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_service_bytes_recursive",
|
|
|
.private = offsetof(struct cfq_group, stats.service_bytes),
|
|
|
- .read_seq_string = cfqg_print_rwstat_recursive,
|
|
|
+ .seq_show = cfqg_print_rwstat_recursive,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_serviced_recursive",
|
|
|
.private = offsetof(struct cfq_group, stats.serviced),
|
|
|
- .read_seq_string = cfqg_print_rwstat_recursive,
|
|
|
+ .seq_show = cfqg_print_rwstat_recursive,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_service_time_recursive",
|
|
|
.private = offsetof(struct cfq_group, stats.service_time),
|
|
|
- .read_seq_string = cfqg_print_rwstat_recursive,
|
|
|
+ .seq_show = cfqg_print_rwstat_recursive,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_wait_time_recursive",
|
|
|
.private = offsetof(struct cfq_group, stats.wait_time),
|
|
|
- .read_seq_string = cfqg_print_rwstat_recursive,
|
|
|
+ .seq_show = cfqg_print_rwstat_recursive,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_merged_recursive",
|
|
|
.private = offsetof(struct cfq_group, stats.merged),
|
|
|
- .read_seq_string = cfqg_print_rwstat_recursive,
|
|
|
+ .seq_show = cfqg_print_rwstat_recursive,
|
|
|
},
|
|
|
{
|
|
|
.name = "io_queued_recursive",
|
|
|
.private = offsetof(struct cfq_group, stats.queued),
|
|
|
- .read_seq_string = cfqg_print_rwstat_recursive,
|
|
|
+ .seq_show = cfqg_print_rwstat_recursive,
|
|
|
},
|
|
|
#ifdef CONFIG_DEBUG_BLK_CGROUP
|
|
|
{
|
|
|
.name = "avg_queue_size",
|
|
|
- .read_seq_string = cfqg_print_avg_queue_size,
|
|
|
+ .seq_show = cfqg_print_avg_queue_size,
|
|
|
},
|
|
|
{
|
|
|
.name = "group_wait_time",
|
|
|
.private = offsetof(struct cfq_group, stats.group_wait_time),
|
|
|
- .read_seq_string = cfqg_print_stat,
|
|
|
+ .seq_show = cfqg_print_stat,
|
|
|
},
|
|
|
{
|
|
|
.name = "idle_time",
|
|
|
.private = offsetof(struct cfq_group, stats.idle_time),
|
|
|
- .read_seq_string = cfqg_print_stat,
|
|
|
+ .seq_show = cfqg_print_stat,
|
|
|
},
|
|
|
{
|
|
|
.name = "empty_time",
|
|
|
.private = offsetof(struct cfq_group, stats.empty_time),
|
|
|
- .read_seq_string = cfqg_print_stat,
|
|
|
+ .seq_show = cfqg_print_stat,
|
|
|
},
|
|
|
{
|
|
|
.name = "dequeue",
|
|
|
.private = offsetof(struct cfq_group, stats.dequeue),
|
|
|
- .read_seq_string = cfqg_print_stat,
|
|
|
+ .seq_show = cfqg_print_stat,
|
|
|
},
|
|
|
{
|
|
|
.name = "unaccounted_time",
|
|
|
.private = offsetof(struct cfq_group, stats.unaccounted_time),
|
|
|
- .read_seq_string = cfqg_print_stat,
|
|
|
+ .seq_show = cfqg_print_stat,
|
|
|
},
|
|
|
#endif /* CONFIG_DEBUG_BLK_CGROUP */
|
|
|
{ } /* terminate */
|