mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 14:11:20 +00:00
cpuset: Use descriptive text when reading/writing cpuset.sched.partition
Currently, cpuset.sched.partition returns the values, 0, 1 or -1 on read. A person who is not familiar with the partition code may not understand what they mean. In order to make cpuset.sched.partition more user-friendly, it will now display the following descriptive text on read: "root" - A partition root (top cpuset of a partition) "member" - A non-root member of a partition "root invalid" - An invalid partition root Note that there is at least one partition in the whole cgroup hierarchy. The top cpuset is the root of that partition. The rests are either a root if it starts a new partition or a member of a partition. The cpuset.sched.partition file will now also accept "root" and "member" besides 1 and 0 as valid input values. The "root invalid" value is internal only and cannot be written to the file. Suggested-by: Tejun Heo <tj@kernel.org> Signed-off-by: Waiman Long <longman@redhat.com> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
5776ceccd4
commit
bb5b553c33
1 changed files with 51 additions and 7 deletions
|
@ -2278,9 +2278,6 @@ static int cpuset_write_s64(struct cgroup_subsys_state *css, struct cftype *cft,
|
||||||
case FILE_SCHED_RELAX_DOMAIN_LEVEL:
|
case FILE_SCHED_RELAX_DOMAIN_LEVEL:
|
||||||
retval = update_relax_domain_level(cs, val);
|
retval = update_relax_domain_level(cs, val);
|
||||||
break;
|
break;
|
||||||
case FILE_PARTITION_ROOT:
|
|
||||||
retval = update_prstate(cs, val);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
retval = -EINVAL;
|
retval = -EINVAL;
|
||||||
break;
|
break;
|
||||||
|
@ -2431,8 +2428,6 @@ static s64 cpuset_read_s64(struct cgroup_subsys_state *css, struct cftype *cft)
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case FILE_SCHED_RELAX_DOMAIN_LEVEL:
|
case FILE_SCHED_RELAX_DOMAIN_LEVEL:
|
||||||
return cs->relax_domain_level;
|
return cs->relax_domain_level;
|
||||||
case FILE_PARTITION_ROOT:
|
|
||||||
return cs->partition_root_state;
|
|
||||||
default:
|
default:
|
||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
|
@ -2441,6 +2436,55 @@ static s64 cpuset_read_s64(struct cgroup_subsys_state *css, struct cftype *cft)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int sched_partition_show(struct seq_file *seq, void *v)
|
||||||
|
{
|
||||||
|
struct cpuset *cs = css_cs(seq_css(seq));
|
||||||
|
|
||||||
|
switch (cs->partition_root_state) {
|
||||||
|
case PRS_ENABLED:
|
||||||
|
seq_puts(seq, "root\n");
|
||||||
|
break;
|
||||||
|
case PRS_DISABLED:
|
||||||
|
seq_puts(seq, "member\n");
|
||||||
|
break;
|
||||||
|
case PRS_ERROR:
|
||||||
|
seq_puts(seq, "root invalid\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ssize_t sched_partition_write(struct kernfs_open_file *of, char *buf,
|
||||||
|
size_t nbytes, loff_t off)
|
||||||
|
{
|
||||||
|
struct cpuset *cs = css_cs(of_css(of));
|
||||||
|
int val;
|
||||||
|
int retval = -ENODEV;
|
||||||
|
|
||||||
|
buf = strstrip(buf);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert "root"/"1" to 1, and convert "member"/"0" to 0.
|
||||||
|
*/
|
||||||
|
if (!strcmp(buf, "root") || !strcmp(buf, "1"))
|
||||||
|
val = PRS_ENABLED;
|
||||||
|
else if (!strcmp(buf, "member") || !strcmp(buf, "0"))
|
||||||
|
val = PRS_DISABLED;
|
||||||
|
else
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
css_get(&cs->css);
|
||||||
|
mutex_lock(&cpuset_mutex);
|
||||||
|
if (!is_cpuset_online(cs))
|
||||||
|
goto out_unlock;
|
||||||
|
|
||||||
|
retval = update_prstate(cs, val);
|
||||||
|
out_unlock:
|
||||||
|
mutex_unlock(&cpuset_mutex);
|
||||||
|
css_put(&cs->css);
|
||||||
|
return retval ?: nbytes;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* for the common functions, 'private' gives the type of file
|
* for the common functions, 'private' gives the type of file
|
||||||
*/
|
*/
|
||||||
|
@ -2584,8 +2628,8 @@ static struct cftype dfl_files[] = {
|
||||||
|
|
||||||
{
|
{
|
||||||
.name = "sched.partition",
|
.name = "sched.partition",
|
||||||
.read_s64 = cpuset_read_s64,
|
.seq_show = sched_partition_show,
|
||||||
.write_s64 = cpuset_write_s64,
|
.write = sched_partition_write,
|
||||||
.private = FILE_PARTITION_ROOT,
|
.private = FILE_PARTITION_ROOT,
|
||||||
.flags = CFTYPE_NOT_ON_ROOT,
|
.flags = CFTYPE_NOT_ON_ROOT,
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue