Skip to content

Commit

Permalink
hugetlb_cgroup: convert away from cftype->read()
Browse files Browse the repository at this point in the history
In preparation of conversion to kernfs, cgroup file handling is being
consolidated so that it can be easily mapped to the seq_file based
interface of kernfs.

All users of cftype->read() can be easily served, usually better, by
seq_file and other methods.  Update hugetlb_cgroup_read() to return
u64 instead of printing itself and rename it to
hugetlb_cgroup_read_u64().

This patch doesn't make any visible behavior changes.

Signed-off-by: Tejun Heo <[email protected]>
Reviewed-by: Michal Hocko <[email protected]>
Acked-by: Li Zefan <[email protected]>
Cc: Aneesh Kumar K.V <[email protected]>
Cc: Johannes Weiner <[email protected]>
  • Loading branch information
htejun committed Dec 5, 2013
1 parent e92e113 commit 716f479
Showing 1 changed file with 8 additions and 14 deletions.
22 changes: 8 additions & 14 deletions mm/hugetlb_cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -242,22 +242,16 @@ void hugetlb_cgroup_uncharge_cgroup(int idx, unsigned long nr_pages,
return;
}

static ssize_t hugetlb_cgroup_read(struct cgroup_subsys_state *css,
struct cftype *cft, struct file *file,
char __user *buf, size_t nbytes,
loff_t *ppos)
static u64 hugetlb_cgroup_read_u64(struct cgroup_subsys_state *css,
struct cftype *cft)
{
u64 val;
char str[64];
int idx, name, len;
int idx, name;
struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(css);

idx = MEMFILE_IDX(cft->private);
name = MEMFILE_ATTR(cft->private);

val = res_counter_read_u64(&h_cg->hugepage[idx], name);
len = scnprintf(str, sizeof(str), "%llu\n", (unsigned long long)val);
return simple_read_from_buffer(buf, nbytes, ppos, str, len);
return res_counter_read_u64(&h_cg->hugepage[idx], name);
}

static int hugetlb_cgroup_write(struct cgroup_subsys_state *css,
Expand Down Expand Up @@ -337,28 +331,28 @@ static void __init __hugetlb_cgroup_file_init(int idx)
cft = &h->cgroup_files[0];
snprintf(cft->name, MAX_CFTYPE_NAME, "%s.limit_in_bytes", buf);
cft->private = MEMFILE_PRIVATE(idx, RES_LIMIT);
cft->read = hugetlb_cgroup_read;
cft->read_u64 = hugetlb_cgroup_read_u64;
cft->write_string = hugetlb_cgroup_write;

/* Add the usage file */
cft = &h->cgroup_files[1];
snprintf(cft->name, MAX_CFTYPE_NAME, "%s.usage_in_bytes", buf);
cft->private = MEMFILE_PRIVATE(idx, RES_USAGE);
cft->read = hugetlb_cgroup_read;
cft->read_u64 = hugetlb_cgroup_read_u64;

/* Add the MAX usage file */
cft = &h->cgroup_files[2];
snprintf(cft->name, MAX_CFTYPE_NAME, "%s.max_usage_in_bytes", buf);
cft->private = MEMFILE_PRIVATE(idx, RES_MAX_USAGE);
cft->trigger = hugetlb_cgroup_reset;
cft->read = hugetlb_cgroup_read;
cft->read_u64 = hugetlb_cgroup_read_u64;

/* Add the failcntfile */
cft = &h->cgroup_files[3];
snprintf(cft->name, MAX_CFTYPE_NAME, "%s.failcnt", buf);
cft->private = MEMFILE_PRIVATE(idx, RES_FAILCNT);
cft->trigger = hugetlb_cgroup_reset;
cft->read = hugetlb_cgroup_read;
cft->read_u64 = hugetlb_cgroup_read_u64;

/* NULL terminate the last cft */
cft = &h->cgroup_files[4];
Expand Down

0 comments on commit 716f479

Please sign in to comment.