linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] cgroups: show correct file mode
@ 2009-03-03  5:29 Li Zefan
  2009-03-03 20:27 ` Andrew Morton
  0 siblings, 1 reply; 6+ messages in thread
From: Li Zefan @ 2009-03-03  5:29 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Paul Menage, KAMEZAWA Hiroyuki, Balbir Singh, Dhaval Giani,
	Serge E. Hallyn, LKML, Linux Containers

Andrew, please drop these 2 patches:
  cgroup-allow-subsys-to-set-default-mode-of-its-own-file.patch
  cgroup-memcg-show-correct-file-mode.patch

Here is a patch to replace them.


=============


From: Li Zefan <lizf@cn.fujitsu.com>
Date: Tue, 3 Mar 2009 08:55:58 +0800
Subject: [PATCH] cgroups: show correct file mode

We have some read-only files and write-only files, but currently they
are all set to 0644, which is counter-intuitive and cause trouble
for some cgroup tools like libcgroup.

This patch adds 'mode' to struct cftype to allow cgroup subsys to set
it's own files' file mode, and for the most cases cft->mode can be
default to 0 and cgroup will figure out proper mode.

Acked-by: Paul Menage <menage@google.com>
Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
---
 include/linux/cgroup.h |    5 +++++
 kernel/cgroup.c        |   32 +++++++++++++++++++++++++++++++-
 kernel/cpuset.c        |    1 +
 3 files changed, 37 insertions(+), 1 deletions(-)

diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index 6ad1989..31cc1a9 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -258,6 +258,11 @@ struct cftype {
 	 */
 	char name[MAX_CFTYPE_NAME];
 	int private;
+	/*
+	 * If not 0, file mode is set to this value, otherwise it will
+	 * be figured out automatically
+	 */
+	int mode;
 
 	/*
 	 * If non-zero, defines the maximum length of string that can
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 379baa3..043b24e 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1750,6 +1750,33 @@ static int cgroup_create_dir(struct cgroup *cgrp, struct dentry *dentry,
 	return error;
 }
 
+/**
+ * cgroup_file_mode - deduce file mode of a control file
+ * @cft: the control file in question
+ *
+ * returns cft->mode if ->mode is not 0
+ * returns 0644 if it has both a read and a write handler
+ * returns 0444 if it has only a read handler
+ * returns 0200 if it has only a write hander
+ */
+static int cgroup_file_mode(const struct cftype *cft)
+{
+	int mode = 0;
+
+	if (cft->mode)
+		return cft->mode;
+
+	if (cft->read || cft->read_u64 || cft->read_s64 ||
+	    cft->read_map || cft->read_seq_string)
+		mode |= 0444;
+
+	if (cft->write || cft->write_u64 || cft->write_s64 ||
+	    cft->write_string || cft->trigger)
+		mode |= 0200;
+
+	return mode;
+}
+
 int cgroup_add_file(struct cgroup *cgrp,
 		       struct cgroup_subsys *subsys,
 		       const struct cftype *cft)
@@ -1757,6 +1784,7 @@ int cgroup_add_file(struct cgroup *cgrp,
 	struct dentry *dir = cgrp->dentry;
 	struct dentry *dentry;
 	int error;
+	int mode;
 
 	char name[MAX_CGROUP_TYPE_NAMELEN + MAX_CFTYPE_NAME + 2] = { 0 };
 	if (subsys && !test_bit(ROOT_NOPREFIX, &cgrp->root->flags)) {
@@ -1767,7 +1795,8 @@ int cgroup_add_file(struct cgroup *cgrp,
 	BUG_ON(!mutex_is_locked(&dir->d_inode->i_mutex));
 	dentry = lookup_one_len(name, dir, strlen(name));
 	if (!IS_ERR(dentry)) {
-		error = cgroup_create_file(dentry, 0644 | S_IFREG,
+		mode = cgroup_file_mode(cft);
+		error = cgroup_create_file(dentry, mode | S_IFREG,
 						cgrp->root->sb);
 		if (!error)
 			dentry->d_fsdata = (void *)cft;
@@ -2349,6 +2378,7 @@ static struct cftype files[] = {
 		.write_u64 = cgroup_tasks_write,
 		.release = cgroup_tasks_release,
 		.private = FILE_TASKLIST,
+		.mode = 0644,
 	},
 
 	{
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index a46d693..31e28b3 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -1678,6 +1678,7 @@ static struct cftype files[] = {
 		.read_u64 = cpuset_read_u64,
 		.write_u64 = cpuset_write_u64,
 		.private = FILE_MEMORY_PRESSURE,
+		.mode = 0444,
 	},
 
 	{
-- 
1.5.4.rc3



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] cgroups: show correct file mode
  2009-03-03  5:29 [PATCH] cgroups: show correct file mode Li Zefan
@ 2009-03-03 20:27 ` Andrew Morton
  2009-03-04  1:52   ` [PATCH] cgroups: show correct file mode, fix Li Zefan
  0 siblings, 1 reply; 6+ messages in thread
From: Andrew Morton @ 2009-03-03 20:27 UTC (permalink / raw)
  To: Li Zefan
  Cc: menage, kamezawa.hiroyu, balbir, dhaval, serue, linux-kernel, containers

On Tue, 03 Mar 2009 13:29:27 +0800
Li Zefan <lizf@cn.fujitsu.com> wrote:

> 
> We have some read-only files and write-only files, but currently they
> are all set to 0644, which is counter-intuitive and cause trouble
> for some cgroup tools like libcgroup.
> 
> This patch adds 'mode' to struct cftype to allow cgroup subsys to set
> it's own files' file mode, and for the most cases cft->mode can be
> default to 0 and cgroup will figure out proper mode.
> 
> Acked-by: Paul Menage <menage@google.com>
> Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
> ---
>  include/linux/cgroup.h |    5 +++++
>  kernel/cgroup.c        |   32 +++++++++++++++++++++++++++++++-
>  kernel/cpuset.c        |    1 +
>  3 files changed, 37 insertions(+), 1 deletions(-)
> 
> diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
> index 6ad1989..31cc1a9 100644
> --- a/include/linux/cgroup.h
> +++ b/include/linux/cgroup.h
> @@ -258,6 +258,11 @@ struct cftype {
>  	 */
>  	char name[MAX_CFTYPE_NAME];
>  	int private;
> +	/*
> +	 * If not 0, file mode is set to this value, otherwise it will
> +	 * be figured out automatically
> +	 */
> +	int mode;

Could/should this (and everything else) have type mode_t?

>  	/*
>  	 * If non-zero, defines the maximum length of string that can
> diff --git a/kernel/cgroup.c b/kernel/cgroup.c
> index 379baa3..043b24e 100644
> --- a/kernel/cgroup.c
> +++ b/kernel/cgroup.c
> @@ -1750,6 +1750,33 @@ static int cgroup_create_dir(struct cgroup *cgrp, struct dentry *dentry,
>  	return error;
>  }
>  
> +/**
> + * cgroup_file_mode - deduce file mode of a control file
> + * @cft: the control file in question
> + *
> + * returns cft->mode if ->mode is not 0
> + * returns 0644 if it has both a read and a write handler
> + * returns 0444 if it has only a read handler
> + * returns 0200 if it has only a write hander
> + */
> +static int cgroup_file_mode(const struct cftype *cft)
> +{
> +	int mode = 0;
> +
> +	if (cft->mode)
> +		return cft->mode;
> +
> +	if (cft->read || cft->read_u64 || cft->read_s64 ||
> +	    cft->read_map || cft->read_seq_string)
> +		mode |= 0444;

S_IRUGO?

> +	if (cft->write || cft->write_u64 || cft->write_s64 ||
> +	    cft->write_string || cft->trigger)
> +		mode |= 0200;

S_IWUSR?

> +	return mode;
> +}
> +
>  int cgroup_add_file(struct cgroup *cgrp,
>  		       struct cgroup_subsys *subsys,
>  		       const struct cftype *cft)
> @@ -1757,6 +1784,7 @@ int cgroup_add_file(struct cgroup *cgrp,
>  	struct dentry *dir = cgrp->dentry;
>  	struct dentry *dentry;
>  	int error;
> +	int mode;

mode_t.

>  	char name[MAX_CGROUP_TYPE_NAMELEN + MAX_CFTYPE_NAME + 2] = { 0 };
>  	if (subsys && !test_bit(ROOT_NOPREFIX, &cgrp->root->flags)) {
> @@ -1767,7 +1795,8 @@ int cgroup_add_file(struct cgroup *cgrp,
>  	BUG_ON(!mutex_is_locked(&dir->d_inode->i_mutex));
>  	dentry = lookup_one_len(name, dir, strlen(name));
>  	if (!IS_ERR(dentry)) {
> -		error = cgroup_create_file(dentry, 0644 | S_IFREG,
> +		mode = cgroup_file_mode(cft);
> +		error = cgroup_create_file(dentry, mode | S_IFREG,
>  						cgrp->root->sb);
>  		if (!error)
>  			dentry->d_fsdata = (void *)cft;
> @@ -2349,6 +2378,7 @@ static struct cftype files[] = {
>  		.write_u64 = cgroup_tasks_write,
>  		.release = cgroup_tasks_release,
>  		.private = FILE_TASKLIST,
> +		.mode = 0644,

S_IRUGO|S_IWUSR ?

>  	},
>  
>  	{
> diff --git a/kernel/cpuset.c b/kernel/cpuset.c
> index a46d693..31e28b3 100644
> --- a/kernel/cpuset.c
> +++ b/kernel/cpuset.c
> @@ -1678,6 +1678,7 @@ static struct cftype files[] = {
>  		.read_u64 = cpuset_read_u64,
>  		.write_u64 = cpuset_write_u64,
>  		.private = FILE_MEMORY_PRESSURE,
> +		.mode = 0444,

S_IRUGO?

>  	},
>  
>  	{
> -- 
> 1.5.4.rc3
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] cgroups: show correct file mode, fix
  2009-03-03 20:27 ` Andrew Morton
@ 2009-03-04  1:52   ` Li Zefan
  2009-03-04  1:54     ` KAMEZAWA Hiroyuki
  0 siblings, 1 reply; 6+ messages in thread
From: Li Zefan @ 2009-03-04  1:52 UTC (permalink / raw)
  To: Andrew Morton
  Cc: menage, kamezawa.hiroyu, balbir, dhaval, serue, linux-kernel, containers

- 'mode' should have type mode_t
- use S_IRUGO/S_IWUSR instead of 0444/0200

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
---

against cgroups-show-correct-file-mode.patch

---
 include/linux/cgroup.h |    2 +-
 kernel/cgroup.c        |   24 ++++++++++++------------
 kernel/cpuset.c        |    2 +-
 3 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index 31cc1a9..665fa70 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -262,7 +262,7 @@ struct cftype {
 	 * If not 0, file mode is set to this value, otherwise it will
 	 * be figured out automatically
 	 */
-	int mode;
+	mode_t mode;
 
 	/*
 	 * If non-zero, defines the maximum length of string that can
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 043b24e..ad10c5d 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1686,7 +1686,7 @@ static struct inode_operations cgroup_dir_inode_operations = {
 	.rename = cgroup_rename,
 };
 
-static int cgroup_create_file(struct dentry *dentry, int mode,
+static int cgroup_create_file(struct dentry *dentry, mode_t mode,
 				struct super_block *sb)
 {
 	static struct dentry_operations cgroup_dops = {
@@ -1732,7 +1732,7 @@ static int cgroup_create_file(struct dentry *dentry, int mode,
  * @mode: mode to set on new directory.
  */
 static int cgroup_create_dir(struct cgroup *cgrp, struct dentry *dentry,
-				int mode)
+				mode_t mode)
 {
 	struct dentry *parent;
 	int error = 0;
@@ -1755,24 +1755,24 @@ static int cgroup_create_dir(struct cgroup *cgrp, struct dentry *dentry,
  * @cft: the control file in question
  *
  * returns cft->mode if ->mode is not 0
- * returns 0644 if it has both a read and a write handler
- * returns 0444 if it has only a read handler
- * returns 0200 if it has only a write hander
+ * returns S_IRUGO|S_IWUSR if it has both a read and a write handler
+ * returns S_IRUGO if it has only a read handler
+ * returns S_IWUSR if it has only a write hander
  */
-static int cgroup_file_mode(const struct cftype *cft)
+static mode_t cgroup_file_mode(const struct cftype *cft)
 {
-	int mode = 0;
+	mode_t mode = 0;
 
 	if (cft->mode)
 		return cft->mode;
 
 	if (cft->read || cft->read_u64 || cft->read_s64 ||
 	    cft->read_map || cft->read_seq_string)
-		mode |= 0444;
+		mode |= S_IRUGO;
 
 	if (cft->write || cft->write_u64 || cft->write_s64 ||
 	    cft->write_string || cft->trigger)
-		mode |= 0200;
+		mode |= S_IWUSR;
 
 	return mode;
 }
@@ -1784,7 +1784,7 @@ int cgroup_add_file(struct cgroup *cgrp,
 	struct dentry *dir = cgrp->dentry;
 	struct dentry *dentry;
 	int error;
-	int mode;
+	mode_t mode;
 
 	char name[MAX_CGROUP_TYPE_NAMELEN + MAX_CFTYPE_NAME + 2] = { 0 };
 	if (subsys && !test_bit(ROOT_NOPREFIX, &cgrp->root->flags)) {
@@ -2378,7 +2378,7 @@ static struct cftype files[] = {
 		.write_u64 = cgroup_tasks_write,
 		.release = cgroup_tasks_release,
 		.private = FILE_TASKLIST,
-		.mode = 0644,
+		.mode = S_IRUGO | S_IWUSR,
 	},
 
 	{
@@ -2479,7 +2479,7 @@ static void cgroup_unlock_hierarchy(struct cgroupfs_root *root)
  * Must be called with the mutex on the parent inode held
  */
 static long cgroup_create(struct cgroup *parent, struct dentry *dentry,
-			     int mode)
+			     mode_t mode)
 {
 	struct cgroup *cgrp;
 	struct cgroupfs_root *root = parent->root;
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 31e28b3..0619f10 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -1678,7 +1678,7 @@ static struct cftype files[] = {
 		.read_u64 = cpuset_read_u64,
 		.write_u64 = cpuset_write_u64,
 		.private = FILE_MEMORY_PRESSURE,
-		.mode = 0444,
+		.mode = S_IRUGO,
 	},
 
 	{
-- 
1.5.4.rc3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] cgroups: show correct file mode, fix
  2009-03-04  1:52   ` [PATCH] cgroups: show correct file mode, fix Li Zefan
@ 2009-03-04  1:54     ` KAMEZAWA Hiroyuki
  2009-03-04  1:59       ` Li Zefan
  0 siblings, 1 reply; 6+ messages in thread
From: KAMEZAWA Hiroyuki @ 2009-03-04  1:54 UTC (permalink / raw)
  To: Li Zefan
  Cc: Andrew Morton, menage, balbir, dhaval, serue, linux-kernel, containers

On Wed, 04 Mar 2009 09:52:57 +0800
Li Zefan <lizf@cn.fujitsu.com> wrote:

> - 'mode' should have type mode_t
> - use S_IRUGO/S_IWUSR instead of 0444/0200
> 
> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>

Thank you for quick work. I'll write memcg part on this.

Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

> ---
> 
> against cgroups-show-correct-file-mode.patch
> 
> ---
>  include/linux/cgroup.h |    2 +-
>  kernel/cgroup.c        |   24 ++++++++++++------------
>  kernel/cpuset.c        |    2 +-
>  3 files changed, 14 insertions(+), 14 deletions(-)
> 
> diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
> index 31cc1a9..665fa70 100644
> --- a/include/linux/cgroup.h
> +++ b/include/linux/cgroup.h
> @@ -262,7 +262,7 @@ struct cftype {
>  	 * If not 0, file mode is set to this value, otherwise it will
>  	 * be figured out automatically
>  	 */
> -	int mode;
> +	mode_t mode;
>  
>  	/*
>  	 * If non-zero, defines the maximum length of string that can
> diff --git a/kernel/cgroup.c b/kernel/cgroup.c
> index 043b24e..ad10c5d 100644
> --- a/kernel/cgroup.c
> +++ b/kernel/cgroup.c
> @@ -1686,7 +1686,7 @@ static struct inode_operations cgroup_dir_inode_operations = {
>  	.rename = cgroup_rename,
>  };
>  
> -static int cgroup_create_file(struct dentry *dentry, int mode,
> +static int cgroup_create_file(struct dentry *dentry, mode_t mode,
>  				struct super_block *sb)
>  {
>  	static struct dentry_operations cgroup_dops = {
> @@ -1732,7 +1732,7 @@ static int cgroup_create_file(struct dentry *dentry, int mode,
>   * @mode: mode to set on new directory.
>   */
>  static int cgroup_create_dir(struct cgroup *cgrp, struct dentry *dentry,
> -				int mode)
> +				mode_t mode)
>  {
>  	struct dentry *parent;
>  	int error = 0;
> @@ -1755,24 +1755,24 @@ static int cgroup_create_dir(struct cgroup *cgrp, struct dentry *dentry,
>   * @cft: the control file in question
>   *
>   * returns cft->mode if ->mode is not 0
> - * returns 0644 if it has both a read and a write handler
> - * returns 0444 if it has only a read handler
> - * returns 0200 if it has only a write hander
> + * returns S_IRUGO|S_IWUSR if it has both a read and a write handler
> + * returns S_IRUGO if it has only a read handler
> + * returns S_IWUSR if it has only a write hander
>   */
> -static int cgroup_file_mode(const struct cftype *cft)
> +static mode_t cgroup_file_mode(const struct cftype *cft)
>  {
> -	int mode = 0;
> +	mode_t mode = 0;
>  
>  	if (cft->mode)
>  		return cft->mode;
>  
>  	if (cft->read || cft->read_u64 || cft->read_s64 ||
>  	    cft->read_map || cft->read_seq_string)
> -		mode |= 0444;
> +		mode |= S_IRUGO;
>  
>  	if (cft->write || cft->write_u64 || cft->write_s64 ||
>  	    cft->write_string || cft->trigger)
> -		mode |= 0200;
> +		mode |= S_IWUSR;
>  
>  	return mode;
>  }
> @@ -1784,7 +1784,7 @@ int cgroup_add_file(struct cgroup *cgrp,
>  	struct dentry *dir = cgrp->dentry;
>  	struct dentry *dentry;
>  	int error;
> -	int mode;
> +	mode_t mode;
>  
>  	char name[MAX_CGROUP_TYPE_NAMELEN + MAX_CFTYPE_NAME + 2] = { 0 };
>  	if (subsys && !test_bit(ROOT_NOPREFIX, &cgrp->root->flags)) {
> @@ -2378,7 +2378,7 @@ static struct cftype files[] = {
>  		.write_u64 = cgroup_tasks_write,
>  		.release = cgroup_tasks_release,
>  		.private = FILE_TASKLIST,
> -		.mode = 0644,
> +		.mode = S_IRUGO | S_IWUSR,
>  	},
>  
>  	{
> @@ -2479,7 +2479,7 @@ static void cgroup_unlock_hierarchy(struct cgroupfs_root *root)
>   * Must be called with the mutex on the parent inode held
>   */
>  static long cgroup_create(struct cgroup *parent, struct dentry *dentry,
> -			     int mode)
> +			     mode_t mode)
>  {
>  	struct cgroup *cgrp;
>  	struct cgroupfs_root *root = parent->root;
> diff --git a/kernel/cpuset.c b/kernel/cpuset.c
> index 31e28b3..0619f10 100644
> --- a/kernel/cpuset.c
> +++ b/kernel/cpuset.c
> @@ -1678,7 +1678,7 @@ static struct cftype files[] = {
>  		.read_u64 = cpuset_read_u64,
>  		.write_u64 = cpuset_write_u64,
>  		.private = FILE_MEMORY_PRESSURE,
> -		.mode = 0444,
> +		.mode = S_IRUGO,
>  	},
>  
>  	{
> -- 
> 1.5.4.rc3
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] cgroups: show correct file mode, fix
  2009-03-04  1:54     ` KAMEZAWA Hiroyuki
@ 2009-03-04  1:59       ` Li Zefan
  2009-03-04  2:05         ` KAMEZAWA Hiroyuki
  0 siblings, 1 reply; 6+ messages in thread
From: Li Zefan @ 2009-03-04  1:59 UTC (permalink / raw)
  To: KAMEZAWA Hiroyuki
  Cc: Andrew Morton, menage, balbir, dhaval, serue, linux-kernel, containers

KAMEZAWA Hiroyuki wrote:
> On Wed, 04 Mar 2009 09:52:57 +0800
> Li Zefan <lizf@cn.fujitsu.com> wrote:
> 
>> - 'mode' should have type mode_t
>> - use S_IRUGO/S_IWUSR instead of 0444/0200
>>
>> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
> 
> Thank you for quick work. I'll write memcg part on this.
> 

Ah, you don't need to do so. All the files in memcg will show their
correct file mode, which is what this patch does.



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] cgroups: show correct file mode, fix
  2009-03-04  1:59       ` Li Zefan
@ 2009-03-04  2:05         ` KAMEZAWA Hiroyuki
  0 siblings, 0 replies; 6+ messages in thread
From: KAMEZAWA Hiroyuki @ 2009-03-04  2:05 UTC (permalink / raw)
  To: Li Zefan
  Cc: Andrew Morton, menage, balbir, dhaval, serue, linux-kernel, containers

On Wed, 04 Mar 2009 09:59:53 +0800
Li Zefan <lizf@cn.fujitsu.com> wrote:

> KAMEZAWA Hiroyuki wrote:
> > On Wed, 04 Mar 2009 09:52:57 +0800
> > Li Zefan <lizf@cn.fujitsu.com> wrote:
> > 
> >> - 'mode' should have type mode_t
> >> - use S_IRUGO/S_IWUSR instead of 0444/0200
> >>
> >> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
> > 
> > Thank you for quick work. I'll write memcg part on this.
> > 
> 
> Ah, you don't need to do so. All the files in memcg will show their
> correct file mode, which is what this patch does.
> 
I see.

Thanks,
-Kame 


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-03-04  2:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-03  5:29 [PATCH] cgroups: show correct file mode Li Zefan
2009-03-03 20:27 ` Andrew Morton
2009-03-04  1:52   ` [PATCH] cgroups: show correct file mode, fix Li Zefan
2009-03-04  1:54     ` KAMEZAWA Hiroyuki
2009-03-04  1:59       ` Li Zefan
2009-03-04  2:05         ` KAMEZAWA Hiroyuki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).