cgroup: replace cftype->trigger() with cftype->write()
authorTejun Heo <tj@kernel.org>
Tue, 13 May 2014 16:16:21 +0000 (12:16 -0400)
committerTejun Heo <tj@kernel.org>
Tue, 13 May 2014 16:16:21 +0000 (12:16 -0400)
cftype->trigger() is pointless.  It's trivial to ignore the input
buffer from a regular ->write() operation.  Convert all ->trigger()
users to ->write() and remove ->trigger().

This patch doesn't introduce any visible behavior changes.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@suse.cz>
include/linux/cgroup.h
kernel/cgroup.c
mm/hugetlb_cgroup.c
mm/memcontrol.c
net/ipv4/tcp_memcontrol.c

index aecdc84fe128512ba48a5a5fedd61b613f2fca6c..08eb71ee600ba11575d290c16f506318a08c1fba 100644 (file)
@@ -499,14 +499,6 @@ struct cftype {
        int (*write_s64)(struct cgroup_subsys_state *css, struct cftype *cft,
                         s64 val);
 
-       /*
-        * trigger() callback can be used to get some kick from the
-        * userspace, when the actual string written is not important
-        * at all. The private field can be used to determine the
-        * kick type for multiplexing.
-        */
-       int (*trigger)(struct cgroup_subsys_state *css, unsigned int event);
-
        /*
         * write() is the generic write callback which maps directly to
         * kernfs write operation and overrides all other operations.
index 2a88ce7b24b624b4145e53f1f0ac78be950623cd..2f16aab03493e02e40b12b13bab1ddc6696c6ec8 100644 (file)
@@ -1034,8 +1034,7 @@ static umode_t cgroup_file_mode(const struct cftype *cft)
        if (cft->read_u64 || cft->read_s64 || cft->seq_show)
                mode |= S_IRUGO;
 
-       if (cft->write_u64 || cft->write_s64 || cft->write ||
-           cft->trigger)
+       if (cft->write_u64 || cft->write_s64 || cft->write)
                mode |= S_IWUSR;
 
        return mode;
@@ -2750,8 +2749,6 @@ static ssize_t cgroup_file_write(struct kernfs_open_file *of, char *buf,
                ret = kstrtoll(buf, 0, &v);
                if (!ret)
                        ret = cft->write_s64(css, cft, v);
-       } else if (cft->trigger) {
-               ret = cft->trigger(css, (unsigned int)cft->private);
        } else {
                ret = -EINVAL;
        }
index 191de26b0148391415f2b6bb505c7f0b8406aa3e..a380681ab3cfd632e2029367e7d73d54046c3b3c 100644 (file)
@@ -284,14 +284,14 @@ static ssize_t hugetlb_cgroup_write(struct kernfs_open_file *of,
        return ret ?: nbytes;
 }
 
-static int hugetlb_cgroup_reset(struct cgroup_subsys_state *css,
-                               unsigned int event)
+static ssize_t hugetlb_cgroup_reset(struct kernfs_open_file *of,
+                                   char *buf, size_t nbytes, loff_t off)
 {
        int idx, name, ret = 0;
-       struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(css);
+       struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(of_css(of));
 
-       idx = MEMFILE_IDX(event);
-       name = MEMFILE_ATTR(event);
+       idx = MEMFILE_IDX(of_cft(of)->private);
+       name = MEMFILE_ATTR(of_cft(of)->private);
 
        switch (name) {
        case RES_MAX_USAGE:
@@ -304,7 +304,7 @@ static int hugetlb_cgroup_reset(struct cgroup_subsys_state *css,
                ret = -EINVAL;
                break;
        }
-       return ret;
+       return ret ?: nbytes;
 }
 
 static char *mem_fmt(char *buf, int size, unsigned long hsize)
@@ -344,14 +344,14 @@ static void __init __hugetlb_cgroup_file_init(int idx)
        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->write = hugetlb_cgroup_reset;
        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->write = hugetlb_cgroup_reset;
        cft->read_u64 = hugetlb_cgroup_read_u64;
 
        /* NULL terminate the last cft */
index 7098a43f74478e6974941c7b23f81381bf4c5caa..b638a79209eedc19f9aff8bffedef91868725da1 100644 (file)
@@ -4887,14 +4887,15 @@ static int mem_cgroup_force_empty(struct mem_cgroup *memcg)
        return 0;
 }
 
-static int mem_cgroup_force_empty_write(struct cgroup_subsys_state *css,
-                                       unsigned int event)
+static ssize_t mem_cgroup_force_empty_write(struct kernfs_open_file *of,
+                                           char *buf, size_t nbytes,
+                                           loff_t off)
 {
-       struct mem_cgroup *memcg = mem_cgroup_from_css(css);
+       struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
 
        if (mem_cgroup_is_root(memcg))
                return -EINVAL;
-       return mem_cgroup_force_empty(memcg);
+       return mem_cgroup_force_empty(memcg) ?: nbytes;
 }
 
 static u64 mem_cgroup_hierarchy_read(struct cgroup_subsys_state *css,
@@ -5220,14 +5221,15 @@ out:
        *memsw_limit = min_memsw_limit;
 }
 
-static int mem_cgroup_reset(struct cgroup_subsys_state *css, unsigned int event)
+static ssize_t mem_cgroup_reset(struct kernfs_open_file *of, char *buf,
+                               size_t nbytes, loff_t off)
 {
-       struct mem_cgroup *memcg = mem_cgroup_from_css(css);
+       struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
        int name;
        enum res_type type;
 
-       type = MEMFILE_TYPE(event);
-       name = MEMFILE_ATTR(event);
+       type = MEMFILE_TYPE(of_cft(of)->private);
+       name = MEMFILE_ATTR(of_cft(of)->private);
 
        switch (name) {
        case RES_MAX_USAGE:
@@ -5252,7 +5254,7 @@ static int mem_cgroup_reset(struct cgroup_subsys_state *css, unsigned int event)
                break;
        }
 
-       return 0;
+       return nbytes;
 }
 
 static u64 mem_cgroup_move_charge_read(struct cgroup_subsys_state *css,
@@ -6105,7 +6107,7 @@ static struct cftype mem_cgroup_files[] = {
        {
                .name = "max_usage_in_bytes",
                .private = MEMFILE_PRIVATE(_MEM, RES_MAX_USAGE),
-               .trigger = mem_cgroup_reset,
+               .write = mem_cgroup_reset,
                .read_u64 = mem_cgroup_read_u64,
        },
        {
@@ -6123,7 +6125,7 @@ static struct cftype mem_cgroup_files[] = {
        {
                .name = "failcnt",
                .private = MEMFILE_PRIVATE(_MEM, RES_FAILCNT),
-               .trigger = mem_cgroup_reset,
+               .write = mem_cgroup_reset,
                .read_u64 = mem_cgroup_read_u64,
        },
        {
@@ -6132,7 +6134,7 @@ static struct cftype mem_cgroup_files[] = {
        },
        {
                .name = "force_empty",
-               .trigger = mem_cgroup_force_empty_write,
+               .write = mem_cgroup_force_empty_write,
        },
        {
                .name = "use_hierarchy",
@@ -6186,13 +6188,13 @@ static struct cftype mem_cgroup_files[] = {
        {
                .name = "kmem.failcnt",
                .private = MEMFILE_PRIVATE(_KMEM, RES_FAILCNT),
-               .trigger = mem_cgroup_reset,
+               .write = mem_cgroup_reset,
                .read_u64 = mem_cgroup_read_u64,
        },
        {
                .name = "kmem.max_usage_in_bytes",
                .private = MEMFILE_PRIVATE(_KMEM, RES_MAX_USAGE),
-               .trigger = mem_cgroup_reset,
+               .write = mem_cgroup_reset,
                .read_u64 = mem_cgroup_read_u64,
        },
 #ifdef CONFIG_SLABINFO
@@ -6215,7 +6217,7 @@ static struct cftype memsw_cgroup_files[] = {
        {
                .name = "memsw.max_usage_in_bytes",
                .private = MEMFILE_PRIVATE(_MEMSWAP, RES_MAX_USAGE),
-               .trigger = mem_cgroup_reset,
+               .write = mem_cgroup_reset,
                .read_u64 = mem_cgroup_read_u64,
        },
        {
@@ -6227,7 +6229,7 @@ static struct cftype memsw_cgroup_files[] = {
        {
                .name = "memsw.failcnt",
                .private = MEMFILE_PRIVATE(_MEMSWAP, RES_FAILCNT),
-               .trigger = mem_cgroup_reset,
+               .write = mem_cgroup_reset,
                .read_u64 = mem_cgroup_read_u64,
        },
        { },    /* terminate */
index 841fd3fa937a4e4fdce2cae362f0166010271eea..f7a2ec3ac584573f52287e8d6bd1514637beb561 100644 (file)
@@ -170,17 +170,18 @@ static u64 tcp_cgroup_read(struct cgroup_subsys_state *css, struct cftype *cft)
        return val;
 }
 
-static int tcp_cgroup_reset(struct cgroup_subsys_state *css, unsigned int event)
+static ssize_t tcp_cgroup_reset(struct kernfs_open_file *of,
+                               char *buf, size_t nbytes, loff_t off)
 {
        struct mem_cgroup *memcg;
        struct cg_proto *cg_proto;
 
-       memcg = mem_cgroup_from_css(css);
+       memcg = mem_cgroup_from_css(of_css(of));
        cg_proto = tcp_prot.proto_cgroup(memcg);
        if (!cg_proto)
-               return 0;
+               return nbytes;
 
-       switch (event) {
+       switch (of_cft(of)->private) {
        case RES_MAX_USAGE:
                res_counter_reset_max(&cg_proto->memory_allocated);
                break;
@@ -189,7 +190,7 @@ static int tcp_cgroup_reset(struct cgroup_subsys_state *css, unsigned int event)
                break;
        }
 
-       return 0;
+       return nbytes;
 }
 
 static struct cftype tcp_files[] = {
@@ -207,13 +208,13 @@ static struct cftype tcp_files[] = {
        {
                .name = "kmem.tcp.failcnt",
                .private = RES_FAILCNT,
-               .trigger = tcp_cgroup_reset,
+               .write = tcp_cgroup_reset,
                .read_u64 = tcp_cgroup_read,
        },
        {
                .name = "kmem.tcp.max_usage_in_bytes",
                .private = RES_MAX_USAGE,
-               .trigger = tcp_cgroup_reset,
+               .write = tcp_cgroup_reset,
                .read_u64 = tcp_cgroup_read,
        },
        { }     /* terminate */
This page took 0.03633 seconds and 5 git commands to generate.