All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC Aufs2 #3 0/2] 'debug' module parm and /sys/fs/aufs entries
@ 2009-03-19  5:12 J. R. Okajima
  2009-03-19  5:12 ` [RFC Aufs2 #3 1/2] replace /sys/fs/aufs/debug by /sys/module/aufs/parmaters/debug J. R. Okajima
  2009-03-19  5:12 ` [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs J. R. Okajima
  0 siblings, 2 replies; 18+ messages in thread
From: J. R. Okajima @ 2009-03-19  5:12 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, linux-fsdevel, J. R. Okajima

Some entires under /sys/fs/aufs still print an abosule path. While sysfs
(and procfs?) limits the length of an entry upto PAGE_SIZE, the abs path
can be any length. I don't think it is important to support longer path
than PAGE_SIZE, so aufs simply returns -EFBIG (regardless this patch).

Following the comments from Greg KH, split /sys/fs/aufs/si_<id>/xino
into some files in order to keep "one value per file".

J. R. Okajima (2):
  replace /sys/fs/aufs/debug by /sys/module/aufs/parmaters/debug
  split 'xino' entry under sysfs

 Documentation/ABI/testing/sysfs-aufs  |   62 ++++++++
 Documentation/filesystems/aufs/aufs.5 |    8 +
 fs/aufs/branch.h                      |    6 +
 fs/aufs/debug.c                       |    4 +-
 fs/aufs/debug.h                       |   12 +-
 fs/aufs/sysaufs.c                     |    6 +-
 fs/aufs/sysaufs.h                     |   13 +-
 fs/aufs/sysfs.c                       |  260 ++++++++++++++++-----------------
 8 files changed, 224 insertions(+), 147 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-aufs


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

* [RFC Aufs2 #3 1/2] replace /sys/fs/aufs/debug by /sys/module/aufs/parmaters/debug
  2009-03-19  5:12 [RFC Aufs2 #3 0/2] 'debug' module parm and /sys/fs/aufs entries J. R. Okajima
@ 2009-03-19  5:12 ` J. R. Okajima
  2009-03-19  5:12 ` [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs J. R. Okajima
  1 sibling, 0 replies; 18+ messages in thread
From: J. R. Okajima @ 2009-03-19  5:12 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, linux-fsdevel, J. R. Okajima

Follow the comments from Greg KH on LKML.
- remove the global variable 'au_cond'.
- new global variable 'aufs_debug' as a module parameter.
- describe the new module parameter 'debug' in the manual.
- remove the global variable 'sysaufs_ktype', debug_show(),
  debug_store(), au_debug_attr, au_attr_show(), au_attr_store(), and
  sysaufs_ktype_body.
- make au_attr empty.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>
---
 Documentation/filesystems/aufs/aufs.5 |    8 ++++
 fs/aufs/debug.c                       |    4 +-
 fs/aufs/debug.h                       |   12 ++---
 fs/aufs/sysaufs.h                     |    2 -
 fs/aufs/sysfs.c                       |   73 ---------------------------------
 5 files changed, 16 insertions(+), 83 deletions(-)

diff --git a/Documentation/filesystems/aufs/aufs.5 b/Documentation/filesystems/aufs/aufs.5
index 0b485ea..b3bca05 100644
--- a/Documentation/filesystems/aufs/aufs.5
+++ b/Documentation/filesystems/aufs/aufs.5
@@ -361,6 +361,14 @@ If your linux version is linux\-2.6.24 and earlier, you need to enable
 CONFIG_AUFS_SYSAUFS too.
 Currently this is for developers only.
 The default is \[oq]a\[cq].
+.
+.TP
+.B debug= 0 | 1
+Specifies disable(0) or enable(1) debug print in aufs.
+This parameter can be changed dynamically.
+You need to enable CONFIG_AUFS_DEBUG.
+Currently this is for developers only.
+The default is \[oq]0\[cq] (disable).
 
 .\" ----------------------------------------------------------------------
 .SH Branch Syntax
diff --git a/fs/aufs/debug.c b/fs/aufs/debug.c
index e8bc59c..63ec24f 100644
--- a/fs/aufs/debug.c
+++ b/fs/aufs/debug.c
@@ -13,7 +13,9 @@
 
 #include "aufs.h"
 
-atomic_t au_cond = ATOMIC_INIT(0);
+int aufs_debug;
+MODULE_PARM_DESC(debug, "debug print");
+module_param_named(debug, aufs_debug, int, S_IRUGO | S_IWUSR | S_IWGRP);
 
 char *au_plevel = KERN_DEBUG;
 #define dpri(fmt, arg...) do { \
diff --git a/fs/aufs/debug.h b/fs/aufs/debug.h
index 0b377a8..36ff0ea 100644
--- a/fs/aufs/debug.h
+++ b/fs/aufs/debug.h
@@ -25,20 +25,18 @@
 
 #ifdef CONFIG_AUFS_DEBUG
 #define AuDebugOn(a)		BUG_ON(a)
-extern atomic_t au_cond;
+
+/* module parameter */
+extern int aufs_debug;
 static inline void au_debug(int n)
 {
-	atomic_set(&au_cond, n);
+	aufs_debug = n;
 	smp_mb();
 }
 
 static inline int au_debug_test(void)
 {
-	int ret;
-
-	ret = atomic_read(&au_cond);
-	smp_mb();
-	return ret;
+	return aufs_debug;
 }
 #else
 #define AuDebugOn(a)		do {} while (0)
diff --git a/fs/aufs/sysaufs.h b/fs/aufs/sysaufs.h
index 04ffab2..60b18a8 100644
--- a/fs/aufs/sysaufs.h
+++ b/fs/aufs/sysaufs.h
@@ -47,7 +47,6 @@ struct au_branch;
 #ifdef CONFIG_SYSFS
 /* sysfs.c */
 extern struct attribute_group *sysaufs_attr_group;
-extern struct kobj_type *sysaufs_ktype;
 
 int sysaufs_si_xino(struct seq_file *seq, struct super_block *sb);
 ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr,
@@ -61,7 +60,6 @@ void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex);
 
 #else
 #define sysaufs_attr_group	NULL
-#define sysaufs_ktype		NULL
 
 static inline
 int sysaufs_si_xino(struct seq_file *seq, struct super_block *sb)
diff --git a/fs/aufs/sysfs.c b/fs/aufs/sysfs.c
index b03c2f7..2112f3b 100644
--- a/fs/aufs/sysfs.c
+++ b/fs/aufs/sysfs.c
@@ -16,36 +16,7 @@
 #include <linux/sysfs.h>
 #include "aufs.h"
 
-#ifdef CONFIG_AUFS_DEBUG
-static ssize_t debug_show(struct kobject *kobj __maybe_unused,
-			  struct kobj_attribute *attr __maybe_unused,
-			  char *buf)
-{
-	return sprintf(buf, "%d\n", au_debug_test());
-}
-
-static ssize_t debug_store(struct kobject *kobj __maybe_unused,
-			   struct kobj_attribute *attr __maybe_unused,
-			   const char *buf, size_t sz)
-{
-	if (unlikely(!sz || (*buf != '0' && *buf != '1')))
-		return -EOPNOTSUPP;
-
-	if (*buf == '0')
-		au_debug(0);
-	else if (*buf == '1')
-		au_debug(1);
-	return sz;
-}
-
-static struct kobj_attribute au_debug_attr = __ATTR(debug, S_IRUGO | S_IWUSR,
-						    debug_show, debug_store);
-#endif
-
 static struct attribute *au_attr[] = {
-#ifdef CONFIG_AUFS_DEBUG
-	&au_debug_attr.attr,
-#endif
 	NULL,	/* need to NULL terminate the list of attributes */
 };
 
@@ -57,50 +28,6 @@ struct attribute_group *sysaufs_attr_group = &sysaufs_attr_group_body;
 
 /* ---------------------------------------------------------------------- */
 
-/*
- * they are copied from linux/lib/kobject.c,
- * and will be exported in the future.
- */
-static ssize_t au_attr_show(struct kobject *kobj, struct attribute *attr,
-			    char *buf)
-{
-	struct kobj_attribute *kattr;
-	ssize_t ret = -EIO;
-
-	kattr = container_of(attr, struct kobj_attribute, attr);
-	if (kattr->show)
-		ret = kattr->show(kobj, kattr, buf);
-	return ret;
-}
-
-#ifdef CONFIG_AUFS_DEBUG
-static ssize_t au_attr_store(struct kobject *kobj, struct attribute *attr,
-			     const char *buf, size_t count)
-{
-	struct kobj_attribute *kattr;
-	ssize_t ret = -EIO;
-
-	kattr = container_of(attr, struct kobj_attribute, attr);
-	if (kattr->store)
-		ret = kattr->store(kobj, kattr, buf, count);
-	return ret;
-}
-#endif
-
-static struct sysfs_ops sysaufs_ops = {
-	.show   = au_attr_show,
-#ifdef CONFIG_AUFS_DEBUG
-	.store  = au_attr_store
-#endif
-};
-
-static struct kobj_type sysaufs_ktype_body = {
-	.sysfs_ops = &sysaufs_ops
-};
-struct kobj_type *sysaufs_ktype = &sysaufs_ktype_body;
-
-/* ---------------------------------------------------------------------- */
-
 static int sysaufs_sbi_xi(struct seq_file *seq, struct file *xf,
 			  struct kstat *st)
 {
-- 
1.6.1.284.g5dc13


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

* [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs
  2009-03-19  5:12 [RFC Aufs2 #3 0/2] 'debug' module parm and /sys/fs/aufs entries J. R. Okajima
  2009-03-19  5:12 ` [RFC Aufs2 #3 1/2] replace /sys/fs/aufs/debug by /sys/module/aufs/parmaters/debug J. R. Okajima
@ 2009-03-19  5:12 ` J. R. Okajima
  2009-03-20  0:45   ` Greg KH
  1 sibling, 1 reply; 18+ messages in thread
From: J. R. Okajima @ 2009-03-19  5:12 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, linux-fsdevel, J. R. Okajima

Follow the comments from Greg KH on LKML.
- make all entries "one value per file".
- split 'xino' into 'xi_path', 'xib' and 'xi0'...'xiN'.
- new members in struct au_xino_file for xi[0-9]* entry.
- remove sysaufs_si_attr_xino.
- sysaufs_si_xino() shows only a size info of one xino file.
- new variables sysaufs_si_attr_xi_path and sysaufs_si_attr_xib.
- new functions sysaufs_si_xi_path() and sysaufs_si_xib().
- rename sysaufs_sbi_xi() to sysaufs_xi_attr().
- sysaufs_si_show() supports xiN.
- sysaufs_br_init() initializes br->br_xino.xi_attr too.
- sysaufs_brs_del() and sysaufs_brs_add() always handle
  br->br_xino.xi_attr.
- new static function sysaufs_brs_do_add() to generate brN and xiN
  names.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>
---
 Documentation/ABI/testing/sysfs-aufs |   62 +++++++++++
 fs/aufs/branch.h                     |    6 +
 fs/aufs/sysaufs.c                    |    6 +-
 fs/aufs/sysaufs.h                    |   11 ++-
 fs/aufs/sysfs.c                      |  195 +++++++++++++++++++++++-----------
 5 files changed, 212 insertions(+), 68 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-aufs

diff --git a/Documentation/ABI/testing/sysfs-aufs b/Documentation/ABI/testing/sysfs-aufs
new file mode 100644
index 0000000..1552d3e
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-aufs
@@ -0,0 +1,62 @@
+What:		/sys/fs/aufs/si_<id>/
+Date:		March 2009
+Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
+Description:
+		Under /sys/fs/aufs, a directory named si_<id> is created
+		per aufs mount, where <id> is a unique id generated
+		internally.
+
+What:		/sys/fs/aufs/si_<id>/br0, br1 ... brN
+Date:		March 2009
+Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
+Description:
+		It shows the abolute path of a member directory (which
+		is called branch) in aufs, and its permission.
+
+What:		/sys/fs/aufs/si_<id>/xi_path
+Date:		March 2009
+Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
+Description:
+		It shows the abolute path of XINO (External Inode Number
+		Bitmap, Translation Table and Generation Table) file
+		even if it is the default path.
+		When the aufs mount option 'noxino' is specified, it
+		will be empty. About XINO files, see
+		Documentation/filesystems/aufs/aufs.5 in detail.
+
+What:		/sys/fs/aufs/si_<id>/xib
+Date:		March 2009
+Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
+Description:
+		It shows the consumed blocks by xib (External Inode Number
+		Bitmap), its block size and file size.
+		When the aufs mount option 'noxino' is specified, it
+		will be empty. About XINO files, see
+		Documentation/filesystems/aufs/aufs.5 in detail.
+
+What:		/sys/fs/aufs/si_<id>/xino0, xino1 ... xinoN
+Date:		March 2009
+Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
+Description:
+		It shows the consumed blocks by xino (External Inode Number
+		Translation Table), its link count, block size and file
+		size.
+		When the aufs mount option 'noxino' is specified, it
+		will be empty. About XINO files, see
+		Documentation/filesystems/aufs/aufs.5 in detail.
+
+What:		/sys/fs/aufs/si_<id>/xigen
+Date:		March 2009
+Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
+Description:
+		It shows the consumed blocks by xigen (External Inode
+		Generation Table), its block size and file size.
+		If CONFIG_AUFS_EXPORT is disabled, this entry will not
+		be created.
+		When the aufs mount option 'noxino' is specified, it
+		will be empty. About XINO files, see
+		Documentation/filesystems/aufs/aufs.5 in detail.
+
+# Local variables: ;
+# mode: text;
+# End: ;
diff --git a/fs/aufs/branch.h b/fs/aufs/branch.h
index 5a7fed4..838648f 100644
--- a/fs/aufs/branch.h
+++ b/fs/aufs/branch.h
@@ -31,6 +31,12 @@ struct au_xino_file {
 	struct mutex		xi_nondir_mtx;
 
 	/* todo: make xino files an array to support huge inode number */
+
+#ifdef CONFIG_SYSFS
+	/* an entry under sysfs per mount-point */
+	char			xi_name[8];
+	struct attribute	xi_attr;
+#endif
 };
 
 /* members for writable branch only */
diff --git a/fs/aufs/sysaufs.c b/fs/aufs/sysaufs.c
index 47ffbfd..c6fde2c 100644
--- a/fs/aufs/sysaufs.c
+++ b/fs/aufs/sysaufs.c
@@ -25,9 +25,11 @@ struct kset *sysaufs_ket;
 	.show   = sysaufs_si_##_name,				\
 }
 
-static struct sysaufs_si_attr sysaufs_si_attr_xino = AuSiAttr(xino);
+static struct sysaufs_si_attr sysaufs_si_attr_xi_path = AuSiAttr(xi_path),
+	sysaufs_si_attr_xib = AuSiAttr(xib);
 struct attribute *sysaufs_si_attrs[] = {
-	&sysaufs_si_attr_xino.attr,
+	&sysaufs_si_attr_xi_path.attr,
+	&sysaufs_si_attr_xib.attr,
 	NULL,
 };
 
diff --git a/fs/aufs/sysaufs.h b/fs/aufs/sysaufs.h
index 60b18a8..71a0bba 100644
--- a/fs/aufs/sysaufs.h
+++ b/fs/aufs/sysaufs.h
@@ -48,7 +48,8 @@ struct au_branch;
 /* sysfs.c */
 extern struct attribute_group *sysaufs_attr_group;
 
-int sysaufs_si_xino(struct seq_file *seq, struct super_block *sb);
+int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb);
+int sysaufs_si_xib(struct seq_file *seq, struct super_block *sb);
 ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr,
 			 char *buf);
 
@@ -62,7 +63,13 @@ void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex);
 #define sysaufs_attr_group	NULL
 
 static inline
-int sysaufs_si_xino(struct seq_file *seq, struct super_block *sb)
+int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb)
+{
+	return 0;
+}
+
+static inline
+int sysaufs_si_xib(struct seq_file *seq, struct super_block *sb)
 {
 	return 0;
 }
diff --git a/fs/aufs/sysfs.c b/fs/aufs/sysfs.c
index 2112f3b..9bcdce2 100644
--- a/fs/aufs/sysfs.c
+++ b/fs/aufs/sysfs.c
@@ -28,55 +28,65 @@ struct attribute_group *sysaufs_attr_group = &sysaufs_attr_group_body;
 
 /* ---------------------------------------------------------------------- */
 
-static int sysaufs_sbi_xi(struct seq_file *seq, struct file *xf,
-			  struct kstat *st)
+int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb)
+{
+	int err;
+
+	err = 0;
+	if (au_opt_test(au_mntflags(sb), XINO)) {
+		err = au_xino_path(seq, au_sbi(sb)->si_xib);
+		seq_putc(seq, '\n');
+	}
+	return err;
+}
+
+static int sysaufs_xi_attr(struct seq_file *seq, struct file *xf,
+			   struct kstat *st)
 {
 	int err;
 
 	err = vfs_getattr(xf->f_vfsmnt, xf->f_dentry, st);
-	if (!err) {
-		seq_printf(seq, "%llux%lu %lld",
+	if (!err)
+		seq_printf(seq, "%llux%lu %lld\n",
 			   st->blocks, st->blksize, (long long)st->size);
-		seq_putc(seq, '\n');
-	} else
+	else
 		seq_printf(seq, "err %d\n", err);
 
 	return err;
 }
 
-int sysaufs_si_xino(struct seq_file *seq, struct super_block *sb)
+int sysaufs_si_xib(struct seq_file *seq, struct super_block *sb)
+{
+	int err;
+	struct kstat st;
+
+	err = 0;
+	if (au_opt_test(au_mntflags(sb), XINO))
+		err = sysaufs_xi_attr(seq, au_sbi(sb)->si_xib, &st);
+	return err;
+}
+
+static int sysaufs_si_xino(struct seq_file *seq, struct super_block *sb,
+			   aufs_bindex_t bindex)
 {
 	int err;
-	aufs_bindex_t bend, bindex;
 	struct kstat st;
-	struct au_sbinfo *sbinfo;
 	struct file *xf;
 
 	err = 0;
-	sbinfo = au_sbi(sb);
 	if (!au_opt_test(au_mntflags(sb), XINO))
 		goto out; /* success */
 
-	xf = sbinfo->si_xib;
-	err = au_xino_path(seq, xf);
-	seq_putc(seq, '\n');
-	if (!err)
-		err = sysaufs_sbi_xi(seq, xf, &st);
-
-	bend = au_sbend(sb);
-	for (bindex = 0; !err && bindex <= bend; bindex++) {
-		xf = au_sbr(sb, bindex)->br_xino.xi_file;
-		if (!xf)
-			continue;
+	AuDbg("b%d\n", bindex);
 
-		seq_printf(seq, "%d: ", bindex);
+	xf = au_sbr(sb, bindex)->br_xino.xi_file;
+	if (xf) {
 		err = vfs_getattr(xf->f_vfsmnt, xf->f_dentry, &st);
-		if (!err) {
-			seq_printf(seq, "%ld, %llux%lu %lld",
+		if (!err)
+			seq_printf(seq, "%ld, %llux%lu %lld\n",
 				   (long)file_count(xf), st.blocks, st.blksize,
 				   (long long)st.size);
-			seq_putc(seq, '\n');
-		} else
+		else
 			seq_printf(seq, "err %d\n", err);
 	}
 
@@ -89,20 +99,15 @@ int sysaufs_si_xino(struct seq_file *seq, struct super_block *sb)
  * sysfs handles the lifetime of the entry, and never call ->show() after it is
  * unlinked.
  */
-#define SysaufsBr_PREFIX "br"
-static int sysaufs_sbi_br(struct seq_file *seq, struct super_block *sb,
-			  aufs_bindex_t bindex)
+static int sysaufs_si_br(struct seq_file *seq, struct super_block *sb,
+			 aufs_bindex_t bindex)
 {
-	int err;
 	struct path path;
 	struct dentry *root;
 	struct au_branch *br;
 
-	err = -ENOENT;
-	if (unlikely(au_sbend(sb) < bindex))
-		goto out;
+	AuDbg("b%d\n", bindex);
 
-	err = 0;
 	root = sb->s_root;
 	di_read_lock_parent(root, !AuLock_IR);
 	br = au_sbr(sb, bindex);
@@ -111,9 +116,7 @@ static int sysaufs_sbi_br(struct seq_file *seq, struct super_block *sb,
 	au_seq_path(seq, &path);
 	di_read_unlock(root, !AuLock_IR);
 	seq_printf(seq, "=%s\n", au_optstr_br_perm(br->br_perm));
-
- out:
-	return err;
+	return 0;
 }
 
 /* ---------------------------------------------------------------------- */
@@ -134,17 +137,41 @@ static struct seq_file *au_seq(char *p, ssize_t len)
 	return seq;
 }
 
+#define SysaufsBr_PREFIX "br"
+#define SysaufsXi_PREFIX "xi"
+
 /* todo: file size may exceed PAGE_SIZE */
 ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr,
 			 char *buf)
 {
 	ssize_t err;
 	long l;
+	aufs_bindex_t bend;
 	struct au_sbinfo *sbinfo;
 	struct super_block *sb;
 	struct seq_file *seq;
 	char *name;
 	struct attribute **cattr;
+	static struct {
+		const int prefix_len;
+		char *prefix;
+		int (*func)(struct seq_file *seq, struct super_block *sb,
+			    aufs_bindex_t bindex);
+	} a[] = {
+		{
+			.prefix_len	= sizeof(SysaufsBr_PREFIX) - 1,
+			.prefix		= SysaufsBr_PREFIX,
+			.func		= sysaufs_si_br
+		},
+		{
+			.prefix_len	= sizeof(SysaufsXi_PREFIX) - 1,
+			.prefix		= SysaufsXi_PREFIX,
+			.func		= sysaufs_si_xino
+		},
+		{
+			.prefix_len	= 0
+		}
+	}, *p;
 
 	sbinfo = container_of(kobj, struct au_sbinfo, si_kobj);
 	sb = sbinfo->si_sb;
@@ -166,12 +193,22 @@ ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr,
 		cattr++;
 	}
 
-	if (!strncmp(name, SysaufsBr_PREFIX, sizeof(SysaufsBr_PREFIX) - 1)) {
-		name += sizeof(SysaufsBr_PREFIX) - 1;
-		err = strict_strtol(name, 10, &l);
-		if (!err)
-			err = sysaufs_sbi_br(seq, sb, (aufs_bindex_t)l);
-		goto out_seq;
+	p = a;
+	bend = au_sbend(sb);
+	while (p->prefix_len) {
+		if (!strncmp(name, p->prefix, p->prefix_len)) {
+			name += p->prefix_len;
+			err = strict_strtol(name, 10, &l);
+			if (!err) {
+				if (l <= bend)
+					err = p->func(seq, sb,
+						      (aufs_bindex_t)l);
+				else
+					err = -ENOENT;
+			}
+			goto out_seq;
+		}
+		p++;
 	}
 	BUG();
 
@@ -192,44 +229,74 @@ ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr,
 
 void sysaufs_br_init(struct au_branch *br)
 {
+	struct au_xino_file *xi;
+
 	br->br_attr.name = br->br_name;
 	br->br_attr.mode = S_IRUGO;
 	br->br_attr.owner = THIS_MODULE;
+
+	xi = &br->br_xino;
+	xi->xi_attr.name = xi->xi_name;
+	xi->xi_attr.mode = S_IRUGO;
+	xi->xi_attr.owner = THIS_MODULE;
 }
 
 void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex)
 {
-	struct au_sbinfo *sbinfo;
-	aufs_bindex_t bend;
-
-	if (!sysaufs_brs)
-		return;
+	struct au_branch *br;
+	struct au_xino_file *xi;
+	struct kobject *kobj;
+	aufs_bindex_t bend, bi;
 
-	sbinfo = au_sbi(sb);
+	kobj = &au_sbi(sb)->si_kobj;
 	bend = au_sbend(sb);
-	for (; bindex <= bend; bindex++)
-		sysfs_remove_file(&sbinfo->si_kobj,
-				  &au_sbr(sb, bindex)->br_attr);
+	for (bi = bindex; bi <= bend; bi++) {
+		br = au_sbr(sb, bi);
+		xi = &br->br_xino;
+		sysfs_remove_file(kobj, &xi->xi_attr);
+	}
+
+	if (sysaufs_brs)
+		for (; bindex <= bend; bindex++) {
+			br = au_sbr(sb, bindex);
+			sysfs_remove_file(kobj, &br->br_attr);
+		}
 }
 
-void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex)
+static void sysaufs_brs_do_add(struct kobject *kobj, struct attribute *attr,
+			       char name[], int nlen, char prefix[],
+			       aufs_bindex_t bindex)
 {
 	int err;
-	aufs_bindex_t bend;
+
+	snprintf(name, nlen, "%s%d", prefix, bindex);
+	err = sysfs_create_file(kobj, attr);
+	if (unlikely(err))
+		AuWarn("failed %s under sysfs(%d)\n", name, err);
+}
+
+void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex)
+{
+	aufs_bindex_t bend, bi;
 	struct kobject *kobj;
 	struct au_branch *br;
-
-	if (!sysaufs_brs)
-		return;
+	struct au_xino_file *xi;
 
 	kobj = &au_sbi(sb)->si_kobj;
 	bend = au_sbend(sb);
-	for (; bindex <= bend; bindex++) {
-		br = au_sbr(sb, bindex);
-		snprintf(br->br_name, sizeof(br->br_name),
-			 SysaufsBr_PREFIX "%d", bindex);
-		err = sysfs_create_file(kobj, &br->br_attr);
-		if (unlikely(err))
-			AuWarn("failed %s under sysfs(%d)\n", br->br_name, err);
+	for (bi = bindex; bi <= bend; bi++) {
+		br = au_sbr(sb, bi);
+		xi = &br->br_xino;
+		/* todo: create link for shared xino */
+		sysaufs_brs_do_add(kobj, &xi->xi_attr, xi->xi_name,
+				   sizeof(xi->xi_name), SysaufsXi_PREFIX, bi);
 	}
+
+	if (sysaufs_brs)
+		for (; bindex <= bend; bindex++) {
+			br = au_sbr(sb, bindex);
+			sysaufs_brs_do_add(kobj, &br->br_attr, br->br_name,
+					   sizeof(br->br_name),
+					   SysaufsBr_PREFIX, bindex);
+		}
 }
-- 
1.6.1.284.g5dc13


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

* Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs
  2009-03-19  5:12 ` [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs J. R. Okajima
@ 2009-03-20  0:45   ` Greg KH
  2009-03-20  2:25     ` hooanon05
  0 siblings, 1 reply; 18+ messages in thread
From: Greg KH @ 2009-03-20  0:45 UTC (permalink / raw)
  To: J. R. Okajima; +Cc: linux-kernel, linux-fsdevel

On Thu, Mar 19, 2009 at 02:12:45PM +0900, J. R. Okajima wrote:
> Follow the comments from Greg KH on LKML.
> - make all entries "one value per file".
> - split 'xino' into 'xi_path', 'xib' and 'xi0'...'xiN'.
> - new members in struct au_xino_file for xi[0-9]* entry.
> - remove sysaufs_si_attr_xino.
> - sysaufs_si_xino() shows only a size info of one xino file.
> - new variables sysaufs_si_attr_xi_path and sysaufs_si_attr_xib.
> - new functions sysaufs_si_xi_path() and sysaufs_si_xib().
> - rename sysaufs_sbi_xi() to sysaufs_xi_attr().
> - sysaufs_si_show() supports xiN.
> - sysaufs_br_init() initializes br->br_xino.xi_attr too.
> - sysaufs_brs_del() and sysaufs_brs_add() always handle
>   br->br_xino.xi_attr.
> - new static function sysaufs_brs_do_add() to generate brN and xiN
>   names.
> 
> Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>
> ---
>  Documentation/ABI/testing/sysfs-aufs |   62 +++++++++++
>  fs/aufs/branch.h                     |    6 +
>  fs/aufs/sysaufs.c                    |    6 +-
>  fs/aufs/sysaufs.h                    |   11 ++-
>  fs/aufs/sysfs.c                      |  195 +++++++++++++++++++++++-----------
>  5 files changed, 212 insertions(+), 68 deletions(-)
>  create mode 100644 Documentation/ABI/testing/sysfs-aufs
> 
> diff --git a/Documentation/ABI/testing/sysfs-aufs b/Documentation/ABI/testing/sysfs-aufs
> new file mode 100644
> index 0000000..1552d3e
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-aufs
> @@ -0,0 +1,62 @@
> +What:		/sys/fs/aufs/si_<id>/
> +Date:		March 2009
> +Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
> +Description:
> +		Under /sys/fs/aufs, a directory named si_<id> is created
> +		per aufs mount, where <id> is a unique id generated
> +		internally.
> +
> +What:		/sys/fs/aufs/si_<id>/br0, br1 ... brN
> +Date:		March 2009
> +Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
> +Description:
> +		It shows the abolute path of a member directory (which
> +		is called branch) in aufs, and its permission.
> +
> +What:		/sys/fs/aufs/si_<id>/xi_path
> +Date:		March 2009
> +Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
> +Description:
> +		It shows the abolute path of XINO (External Inode Number
> +		Bitmap, Translation Table and Generation Table) file
> +		even if it is the default path.
> +		When the aufs mount option 'noxino' is specified, it
> +		will be empty. About XINO files, see
> +		Documentation/filesystems/aufs/aufs.5 in detail.
> +
> +What:		/sys/fs/aufs/si_<id>/xib
> +Date:		March 2009
> +Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
> +Description:
> +		It shows the consumed blocks by xib (External Inode Number
> +		Bitmap), its block size and file size.
> +		When the aufs mount option 'noxino' is specified, it
> +		will be empty. About XINO files, see
> +		Documentation/filesystems/aufs/aufs.5 in detail.

Sysfs files are one value per file.  This violates that rule.

> +What:		/sys/fs/aufs/si_<id>/xino0, xino1 ... xinoN
> +Date:		March 2009
> +Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
> +Description:
> +		It shows the consumed blocks by xino (External Inode Number
> +		Translation Table), its link count, block size and file
> +		size.
> +		When the aufs mount option 'noxino' is specified, it
> +		will be empty. About XINO files, see
> +		Documentation/filesystems/aufs/aufs.5 in detail.
> +
> +What:		/sys/fs/aufs/si_<id>/xigen
> +Date:		March 2009
> +Contact:	J. R. Okajima <hooanon05@yahoo.co.jp>
> +Description:
> +		It shows the consumed blocks by xigen (External Inode
> +		Generation Table), its block size and file size.
> +		If CONFIG_AUFS_EXPORT is disabled, this entry will not
> +		be created.
> +		When the aufs mount option 'noxino' is specified, it
> +		will be empty. About XINO files, see
> +		Documentation/filesystems/aufs/aufs.5 in detail.

Are all of these things something that a "normal" user would care about?
or are they development / debugging things?

> +# Local variables: ;
> +# mode: text;
> +# End: ;

I don't think you ment to add this to the file :)

And why are you using seq_file for a sysfs file?  That's not allowed,
and a sure sign you are doing something wrong, please remove all of
that.

thanks,

greg k-h

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

* Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs
  2009-03-20  0:45   ` Greg KH
@ 2009-03-20  2:25     ` hooanon05
  2009-03-20  2:42       ` Greg KH
  0 siblings, 1 reply; 18+ messages in thread
From: hooanon05 @ 2009-03-20  2:25 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel, linux-fsdevel


Greg KH:
> > +Description:
> > +		It shows the consumed blocks by xib (External Inode Number
> > +		Bitmap), its block size and file size.
> > +		When the aufs mount option 'noxino' is specified, it
> > +		will be empty. About XINO files, see
> > +		Documentation/filesystems/aufs/aufs.5 in detail.
> 
> Sysfs files are one value per file.  This violates that rule.

Current print format is 
	"%llux%lu %lld\n", st->blocks, st->blksize, (long long)st->size

Do you mean this has three values and violates the rule?
And aufs should create three entries such like xib/blocks, xib/blksize
and xib/size?
If I change it "<blocks>x<blksize>", is it still violation?


> Are all of these things something that a "normal" user would care about?
> or are they development / debugging things?

Normal users want to care them, I guess.
Since XINO files grow only, some heavy users had met ENOSPC
actually. Currently aufs supports automatic truncation for XINO files in
tmpfs only.


> And why are you using seq_file for a sysfs file?  That's not allowed,
> and a sure sign you are doing something wrong, please remove all of
> that.

I just wanted to set limit its size to PAGE_SIZE to print the absolute
path. Is there another better approach?


Thank you for reviewing
J. R. Okajima

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

* Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs
  2009-03-20  2:25     ` hooanon05
@ 2009-03-20  2:42       ` Greg KH
  2009-03-20  2:55         ` hooanon05
  0 siblings, 1 reply; 18+ messages in thread
From: Greg KH @ 2009-03-20  2:42 UTC (permalink / raw)
  To: hooanon05; +Cc: linux-kernel, linux-fsdevel

On Fri, Mar 20, 2009 at 11:25:49AM +0900, hooanon05@yahoo.co.jp wrote:
> 
> Greg KH:
> > > +Description:
> > > +		It shows the consumed blocks by xib (External Inode Number
> > > +		Bitmap), its block size and file size.
> > > +		When the aufs mount option 'noxino' is specified, it
> > > +		will be empty. About XINO files, see
> > > +		Documentation/filesystems/aufs/aufs.5 in detail.
> > 
> > Sysfs files are one value per file.  This violates that rule.
> 
> Current print format is 
> 	"%llux%lu %lld\n", st->blocks, st->blksize, (long long)st->size
> 
> Do you mean this has three values and violates the rule?

Hm, rule is "one value per file", since this file has 3 values, what do
you think?  :)

> And aufs should create three entries such like xib/blocks, xib/blksize
> and xib/size?

Yes.

> If I change it "<blocks>x<blksize>", is it still violation?

I don't understand.

> > Are all of these things something that a "normal" user would care about?
> > or are they development / debugging things?
> 
> Normal users want to care them, I guess.

Really?  Try leaving them out for now and see if anyone notices :)

> > And why are you using seq_file for a sysfs file?  That's not allowed,
> > and a sure sign you are doing something wrong, please remove all of
> > that.
> 
> I just wanted to set limit its size to PAGE_SIZE to print the absolute
> path. Is there another better approach?

Do you really need to print these paths?  And are they going to bigger
than PATH_MAX?

thanks,

greg k-h

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

* Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs
  2009-03-20  2:42       ` Greg KH
@ 2009-03-20  2:55         ` hooanon05
  2009-03-20  3:06           ` Greg KH
  0 siblings, 1 reply; 18+ messages in thread
From: hooanon05 @ 2009-03-20  2:55 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel, linux-fsdevel


Greg KH:
> Really?  Try leaving them out for now and see if anyone notices :)

Ok, then I will move them to debugfs.
Does the rule "one value per file" applied to debugfs too?


> Do you really need to print these paths?  And are they going to bigger
> than PATH_MAX?

Printing is necessary, and PATH_MAX will be sufficient.
I just wanted to forbid over-running when the path is incredibly longer.


J. R. Okajima

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

* Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs
  2009-03-20  2:55         ` hooanon05
@ 2009-03-20  3:06           ` Greg KH
  2009-03-20  3:59             ` hooanon05
  0 siblings, 1 reply; 18+ messages in thread
From: Greg KH @ 2009-03-20  3:06 UTC (permalink / raw)
  To: hooanon05; +Cc: linux-kernel, linux-fsdevel

On Fri, Mar 20, 2009 at 11:55:09AM +0900, hooanon05@yahoo.co.jp wrote:
> 
> Greg KH:
> > Really?  Try leaving them out for now and see if anyone notices :)
> 
> Ok, then I will move them to debugfs.
> Does the rule "one value per file" applied to debugfs too?

The only rule that debugfs has is:
	debugfs has no rules!

You can do whatever you want in there, have fun.

thanks,

greg k-h

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

* Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs
  2009-03-20  3:06           ` Greg KH
@ 2009-03-20  3:59             ` hooanon05
  2009-03-20  4:18               ` Greg KH
  0 siblings, 1 reply; 18+ messages in thread
From: hooanon05 @ 2009-03-20  3:59 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel, linux-fsdevel


Greg KH:
> > Greg KH:
> > > Really?  Try leaving them out for now and see if anyone notices :)
> > 
> > Ok, then I will move them to debugfs.
> > Does the rule "one value per file" applied to debugfs too?
> 
> The only rule that debugfs has is:
> 	debugfs has no rules!

To make sure, how do you think this change?

(current)
/sys/fs/aufs/si_<id>/
+ br0 ... brN
+ xi0 ... xiN
+ xi_path
+ xib
+ xigen

(future)
/sys/fs/aufs/si_<id>/
+ br0 ... brN
+ xi_path

/debug/aufs/si_<id>/
+ xi0 ... xiN
+ xib
+ xigen
xiN and xib may be consolidated into a single file.


J. R. Okajima

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

* Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs
  2009-03-20  3:59             ` hooanon05
@ 2009-03-20  4:18               ` Greg KH
  2009-03-20  5:15                 ` hooanon05
  0 siblings, 1 reply; 18+ messages in thread
From: Greg KH @ 2009-03-20  4:18 UTC (permalink / raw)
  To: hooanon05; +Cc: linux-kernel, linux-fsdevel

On Fri, Mar 20, 2009 at 12:59:41PM +0900, hooanon05@yahoo.co.jp wrote:
> 
> Greg KH:
> > > Greg KH:
> > > > Really?  Try leaving them out for now and see if anyone notices :)
> > > 
> > > Ok, then I will move them to debugfs.
> > > Does the rule "one value per file" applied to debugfs too?
> > 
> > The only rule that debugfs has is:
> > 	debugfs has no rules!
> 
> To make sure, how do you think this change?
> 
> (current)
> /sys/fs/aufs/si_<id>/
> + br0 ... brN
> + xi0 ... xiN
> + xi_path
> + xib
> + xigen
> 
> (future)
> /sys/fs/aufs/si_<id>/
> + br0 ... brN
> + xi_path
> 
> /debug/aufs/si_<id>/
> + xi0 ... xiN
> + xib
> + xigen
> xiN and xib may be consolidated into a single file.

Looks like a good start, if you are _sure_ you need sysfs files :)

thanks,

greg k-h

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

* Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs
  2009-03-20  4:18               ` Greg KH
@ 2009-03-20  5:15                 ` hooanon05
  2009-03-20  5:44                   ` Greg KH
  0 siblings, 1 reply; 18+ messages in thread
From: hooanon05 @ 2009-03-20  5:15 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel, linux-fsdevel


Greg KH:
> Looks like a good start, if you are _sure_ you need sysfs files :)

I believe those paths are important to users.
When CONFIG_SYSFS is disabled, they are printed in /proc/mounts (and has
severer limit).

Addition to set limit, there is one more reason to adopt seq_file.
Because the printed string is a path, it may contain unprintable
characters. seq_file has a good interface seq_path() which supports
escaping such characters.


J. R. Okajima

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

* Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs
  2009-03-20  5:15                 ` hooanon05
@ 2009-03-20  5:44                   ` Greg KH
  2009-03-24  8:16                     ` Q. DEBUG_FS and SYSFS config (Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs) hooanon05
  0 siblings, 1 reply; 18+ messages in thread
From: Greg KH @ 2009-03-20  5:44 UTC (permalink / raw)
  To: hooanon05; +Cc: linux-kernel, linux-fsdevel

On Fri, Mar 20, 2009 at 02:15:49PM +0900, hooanon05@yahoo.co.jp wrote:
> 
> Greg KH:
> > Looks like a good start, if you are _sure_ you need sysfs files :)
> 
> I believe those paths are important to users.
> When CONFIG_SYSFS is disabled, they are printed in /proc/mounts (and has
> severer limit).

No one disables sysfs that I know of.  Heck, my phone enables sysfs...

> Addition to set limit, there is one more reason to adopt seq_file.
> Because the printed string is a path, it may contain unprintable
> characters. seq_file has a good interface seq_path() which supports
> escaping such characters.

That is true.  Ok, let's see the final result and I'll be glad to look
at it.

thanks,

greg k-h

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

* Q. DEBUG_FS and SYSFS config (Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs)
  2009-03-20  5:44                   ` Greg KH
@ 2009-03-24  8:16                     ` hooanon05
  2009-03-24 15:33                       ` Greg KH
  0 siblings, 1 reply; 18+ messages in thread
From: hooanon05 @ 2009-03-24  8:16 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel, linux-fsdevel


Greg KH:
> No one disables sysfs that I know of.  Heck, my phone enables sysfs...
> 
> > Addition to set limit, there is one more reason to adopt seq_file.
> > Because the printed string is a path, it may contain unprintable
> > characters. seq_file has a good interface seq_path() which supports
> > escaping such characters.
> 
> That is true.  Ok, let's see the final result and I'll be glad to look
> at it.

Hi Greg,

Currently I am testing locally about new aufs entries under debugfs, and
I found a strange issue about configuration.

First, configure "normaly".
General setup
  [ ] Configure standard kernel features (for small systems)  --->

$ egrep -i '(sysfs|debug_fs)' .config
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
CONFIG_SYSFS=y
CONFIG_DEBUG_FS=y
# CONFIG_FAULT_INJECTION_DEBUG_FS is not set

Next, enable EMBEDED, and then disable SYSFS.
General setup
  [*] Configure standard kernel features (for small systems)  --->
File systems
  Pseudo filesystems  --->
    [ ] sysfs file system support

$ egrep -i '(sysfs|debug_fs)' .config
# CONFIG_SYSFS is not set
CONFIG_DEBUG_FS=y

SYSFS is disabled expectedly, but DEBUG_FS is still enabled,
while "depends on SYSFS" is specified for DEBUG_FS.

Is this expected behaviour?
In other words, can I assume "when DEBUG_FS is enabled, SYSFS must be
enabled too" safely?


J. R. Okajima

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

* Re: Q. DEBUG_FS and SYSFS config (Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs)
  2009-03-24  8:16                     ` Q. DEBUG_FS and SYSFS config (Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs) hooanon05
@ 2009-03-24 15:33                       ` Greg KH
  2009-03-24 15:57                           ` Kay Sievers
  0 siblings, 1 reply; 18+ messages in thread
From: Greg KH @ 2009-03-24 15:33 UTC (permalink / raw)
  To: hooanon05; +Cc: linux-kernel, linux-fsdevel

On Tue, Mar 24, 2009 at 05:16:40PM +0900, hooanon05@yahoo.co.jp wrote:
> 
> Greg KH:
> > No one disables sysfs that I know of.  Heck, my phone enables sysfs...
> > 
> > > Addition to set limit, there is one more reason to adopt seq_file.
> > > Because the printed string is a path, it may contain unprintable
> > > characters. seq_file has a good interface seq_path() which supports
> > > escaping such characters.
> > 
> > That is true.  Ok, let's see the final result and I'll be glad to look
> > at it.
> 
> Hi Greg,
> 
> Currently I am testing locally about new aufs entries under debugfs, and
> I found a strange issue about configuration.
> 
> First, configure "normaly".
> General setup
>   [ ] Configure standard kernel features (for small systems)  --->
> 
> $ egrep -i '(sysfs|debug_fs)' .config
> CONFIG_SYSFS_DEPRECATED=y
> CONFIG_SYSFS_DEPRECATED_V2=y

You should disable those two options, no modern distro needs them
anymore.

> CONFIG_SYSFS=y
> CONFIG_DEBUG_FS=y
> # CONFIG_FAULT_INJECTION_DEBUG_FS is not set
> 
> Next, enable EMBEDED, and then disable SYSFS.
> General setup
>   [*] Configure standard kernel features (for small systems)  --->
> File systems
>   Pseudo filesystems  --->
>     [ ] sysfs file system support
> 
> $ egrep -i '(sysfs|debug_fs)' .config
> # CONFIG_SYSFS is not set
> CONFIG_DEBUG_FS=y
> 
> SYSFS is disabled expectedly, but DEBUG_FS is still enabled,
> while "depends on SYSFS" is specified for DEBUG_FS.
> 
> Is this expected behaviour?
> In other words, can I assume "when DEBUG_FS is enabled, SYSFS must be
> enabled too" safely?

Your code should not worry about either of these, it will "just work"
either way.

As for if there is a bug here, I don't know, the kbuild dependancies
should fix it up if you run "make oldconfig" right?

thanks,

greg k-h

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

* Re: Q. DEBUG_FS and SYSFS config (Re: [RFC Aufs2 #3 2/2] split 'xino'  entry under sysfs)
  2009-03-24 15:33                       ` Greg KH
@ 2009-03-24 15:57                           ` Kay Sievers
  0 siblings, 0 replies; 18+ messages in thread
From: Kay Sievers @ 2009-03-24 15:57 UTC (permalink / raw)
  To: Greg KH; +Cc: hooanon05, linux-kernel, linux-fsdevel

On Tue, Mar 24, 2009 at 16:33, Greg KH <greg@kroah.com> wrote:

>> First, configure "normaly".
>> General setup
>>   [ ] Configure standard kernel features (for small systems)  --->
>>
>> $ egrep -i '(sysfs|debug_fs)' .config
>> CONFIG_SYSFS_DEPRECATED=y
>> CONFIG_SYSFS_DEPRECATED_V2=y
>
> You should disable those two options, no modern distro needs them
> anymore.

In fact, all recent distros will no longer work correctly, because
DEPRECATED disables features which are expected to be there today. I
guess it's time to remove the *_V2 hack to reset the default value,
and set the default of CONFIG_SYSFS_DEPRECATED=n?

Thanks,
Kay

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

* Re: Q. DEBUG_FS and SYSFS config (Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs)
@ 2009-03-24 15:57                           ` Kay Sievers
  0 siblings, 0 replies; 18+ messages in thread
From: Kay Sievers @ 2009-03-24 15:57 UTC (permalink / raw)
  To: Greg KH; +Cc: hooanon05, linux-kernel, linux-fsdevel

On Tue, Mar 24, 2009 at 16:33, Greg KH <greg@kroah.com> wrote:

>> First, configure "normaly".
>> General setup
>>   [ ] Configure standard kernel features (for small systems)  --->
>>
>> $ egrep -i '(sysfs|debug_fs)' .config
>> CONFIG_SYSFS_DEPRECATED=y
>> CONFIG_SYSFS_DEPRECATED_V2=y
>
> You should disable those two options, no modern distro needs them
> anymore.

In fact, all recent distros will no longer work correctly, because
DEPRECATED disables features which are expected to be there today. I
guess it's time to remove the *_V2 hack to reset the default value,
and set the default of CONFIG_SYSFS_DEPRECATED=n?

Thanks,
Kay

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

* Re: Q. DEBUG_FS and SYSFS config (Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs)
  2009-03-24 15:57                           ` Kay Sievers
@ 2009-03-24 23:20                             ` Greg KH
  -1 siblings, 0 replies; 18+ messages in thread
From: Greg KH @ 2009-03-24 23:20 UTC (permalink / raw)
  To: Kay Sievers; +Cc: hooanon05, linux-kernel, linux-fsdevel

On Tue, Mar 24, 2009 at 04:57:16PM +0100, Kay Sievers wrote:
> On Tue, Mar 24, 2009 at 16:33, Greg KH <greg@kroah.com> wrote:
> 
> >> First, configure "normaly".
> >> General setup
> >>   [ ] Configure standard kernel features (for small systems)  --->
> >>
> >> $ egrep -i '(sysfs|debug_fs)' .config
> >> CONFIG_SYSFS_DEPRECATED=y
> >> CONFIG_SYSFS_DEPRECATED_V2=y
> >
> > You should disable those two options, no modern distro needs them
> > anymore.
> 
> In fact, all recent distros will no longer work correctly, because
> DEPRECATED disables features which are expected to be there today. I
> guess it's time to remove the *_V2 hack to reset the default value,
> and set the default of CONFIG_SYSFS_DEPRECATED=n?

Sounds like a good idea for 2.6.31.  Care to send a patch so we can keep
it in -next for a few months?

thanks,

greg k-h

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

* Re: Q. DEBUG_FS and SYSFS config (Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs)
@ 2009-03-24 23:20                             ` Greg KH
  0 siblings, 0 replies; 18+ messages in thread
From: Greg KH @ 2009-03-24 23:20 UTC (permalink / raw)
  To: Kay Sievers; +Cc: hooanon05, linux-kernel, linux-fsdevel

On Tue, Mar 24, 2009 at 04:57:16PM +0100, Kay Sievers wrote:
> On Tue, Mar 24, 2009 at 16:33, Greg KH <greg@kroah.com> wrote:
> 
> >> First, configure "normaly".
> >> General setup
> >>   [ ] Configure standard kernel features (for small systems)  --->
> >>
> >> $ egrep -i '(sysfs|debug_fs)' .config
> >> CONFIG_SYSFS_DEPRECATED=y
> >> CONFIG_SYSFS_DEPRECATED_V2=y
> >
> > You should disable those two options, no modern distro needs them
> > anymore.
> 
> In fact, all recent distros will no longer work correctly, because
> DEPRECATED disables features which are expected to be there today. I
> guess it's time to remove the *_V2 hack to reset the default value,
> and set the default of CONFIG_SYSFS_DEPRECATED=n?

Sounds like a good idea for 2.6.31.  Care to send a patch so we can keep
it in -next for a few months?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2009-03-24 23:51 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-19  5:12 [RFC Aufs2 #3 0/2] 'debug' module parm and /sys/fs/aufs entries J. R. Okajima
2009-03-19  5:12 ` [RFC Aufs2 #3 1/2] replace /sys/fs/aufs/debug by /sys/module/aufs/parmaters/debug J. R. Okajima
2009-03-19  5:12 ` [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs J. R. Okajima
2009-03-20  0:45   ` Greg KH
2009-03-20  2:25     ` hooanon05
2009-03-20  2:42       ` Greg KH
2009-03-20  2:55         ` hooanon05
2009-03-20  3:06           ` Greg KH
2009-03-20  3:59             ` hooanon05
2009-03-20  4:18               ` Greg KH
2009-03-20  5:15                 ` hooanon05
2009-03-20  5:44                   ` Greg KH
2009-03-24  8:16                     ` Q. DEBUG_FS and SYSFS config (Re: [RFC Aufs2 #3 2/2] split 'xino' entry under sysfs) hooanon05
2009-03-24 15:33                       ` Greg KH
2009-03-24 15:57                         ` Kay Sievers
2009-03-24 15:57                           ` Kay Sievers
2009-03-24 23:20                           ` Greg KH
2009-03-24 23:20                             ` Greg KH

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.