|
@@ -1474,13 +1474,6 @@ static ssize_t cgroup_common_file_write(struct cgroup *cgrp,
|
|
|
case FILE_TASKLIST:
|
|
|
retval = attach_task_by_pid(cgrp, buffer);
|
|
|
break;
|
|
|
- case FILE_NOTIFY_ON_RELEASE:
|
|
|
- clear_bit(CGRP_RELEASABLE, &cgrp->flags);
|
|
|
- if (simple_strtoul(buffer, NULL, 10) != 0)
|
|
|
- set_bit(CGRP_NOTIFY_ON_RELEASE, &cgrp->flags);
|
|
|
- else
|
|
|
- clear_bit(CGRP_NOTIFY_ON_RELEASE, &cgrp->flags);
|
|
|
- break;
|
|
|
default:
|
|
|
retval = -EINVAL;
|
|
|
goto out2;
|
|
@@ -2252,6 +2245,18 @@ static u64 cgroup_read_notify_on_release(struct cgroup *cgrp,
|
|
|
return notify_on_release(cgrp);
|
|
|
}
|
|
|
|
|
|
+static int cgroup_write_notify_on_release(struct cgroup *cgrp,
|
|
|
+ struct cftype *cft,
|
|
|
+ u64 val)
|
|
|
+{
|
|
|
+ clear_bit(CGRP_RELEASABLE, &cgrp->flags);
|
|
|
+ if (val)
|
|
|
+ set_bit(CGRP_NOTIFY_ON_RELEASE, &cgrp->flags);
|
|
|
+ else
|
|
|
+ clear_bit(CGRP_NOTIFY_ON_RELEASE, &cgrp->flags);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* for the common functions, 'private' gives the type of file
|
|
|
*/
|
|
@@ -2268,7 +2273,7 @@ static struct cftype files[] = {
|
|
|
{
|
|
|
.name = "notify_on_release",
|
|
|
.read_u64 = cgroup_read_notify_on_release,
|
|
|
- .write = cgroup_common_file_write,
|
|
|
+ .write_u64 = cgroup_write_notify_on_release,
|
|
|
.private = FILE_NOTIFY_ON_RELEASE,
|
|
|
},
|
|
|
};
|