Commit d5dfd6c9 authored by Li Nan's avatar Li Nan
Browse files

cgroup: Support iocost for cgroup v1

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I8ND38



---------------------------

Since iocost can only be used in cgroup v2, add it to v1 now.
Provide config BLK_CGROUP_LEGACY_IOCOST to control this feature.

Signed-off-by: default avatarLi Nan <linan122@huawei.com>
parent a98f9d74
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -188,6 +188,16 @@ config BLK_CGROUP_IOCOST
	distributes IO capacity between different groups based on
	their share of the overall weight distribution.

config BLK_CGROUP_LEGACY_IOCOST
	bool "Enable iocost in cgroup v1"
	default n
	depends on BLK_CGROUP_IOCOST=y
	help
	Enabling this option enables the .cost.weight interface for cost
	model based proportional IO control when cgroup is version 1.

	If unsure, say N.

config BLK_CGROUP_IOPRIO
	bool "Cgroup I/O controller for assigning an I/O priority class"
	depends on BLK_CGROUP
+27 −0
Original line number Diff line number Diff line
@@ -3490,6 +3490,30 @@ static ssize_t ioc_cost_model_write(struct kernfs_open_file *of, char *input,
	return ret;
}

#ifdef CONFIG_BLK_CGROUP_LEGACY_IOCOST
static struct cftype ioc_legacy_files[] = {
	{
		.name = "cost.weight",
		.flags = CFTYPE_NOT_ON_ROOT,
		.seq_show = ioc_weight_show,
		.write = ioc_weight_write,
	},
	{
		.name = "cost.qos",
		.flags = CFTYPE_ONLY_ON_ROOT,
		.seq_show = ioc_qos_show,
		.write = ioc_qos_write,
	},
	{
		.name = "cost.model",
		.flags = CFTYPE_ONLY_ON_ROOT,
		.seq_show = ioc_cost_model_show,
		.write = ioc_cost_model_write,
	},
	{}
};
#endif

static struct cftype ioc_files[] = {
	{
		.name = "weight",
@@ -3514,6 +3538,9 @@ static struct cftype ioc_files[] = {

static struct blkcg_policy blkcg_policy_iocost = {
	.dfl_cftypes	= ioc_files,
#ifdef CONFIG_BLK_CGROUP_LEGACY_IOCOST
	.legacy_cftypes = ioc_legacy_files,
#endif
	.cpd_alloc_fn	= ioc_cpd_alloc,
	.cpd_free_fn	= ioc_cpd_free,
	.pd_alloc_fn	= ioc_pd_alloc,