[PATCH 1/3] ext2: show all mount options

2007-07-23 Thread Miklos Szeredi
From: Miklos Szeredi [EMAIL PROTECTED]

Signed-off-by: Miklos Szeredi [EMAIL PROTECTED]
---

Index: linux-2.6/fs/ext2/super.c
===
--- linux-2.6.orig/fs/ext2/super.c  2007-07-23 17:41:29.0 +0200
+++ linux-2.6/fs/ext2/super.c   2007-07-23 18:02:38.0 +0200
@@ -203,10 +203,66 @@ static void ext2_clear_inode(struct inod
 
 static int ext2_show_options(struct seq_file *seq, struct vfsmount *vfs)
 {
-   struct ext2_sb_info *sbi = EXT2_SB(vfs-mnt_sb);
+   struct super_block *sb = vfs-mnt_sb;
+   struct ext2_sb_info *sbi = EXT2_SB(sb);
+   struct ext2_super_block *es = sbi-s_es;
+   unsigned long def_mount_opts;
+
+   def_mount_opts = le32_to_cpu(es-s_default_mount_opts);
 
-   if (sbi-s_mount_opt  EXT2_MOUNT_GRPID)
+   if (sbi-s_sb_block != 1)
+   seq_printf(seq, ,sb=%lu, sbi-s_sb_block);
+   if (test_opt(sb, MINIX_DF))
+   seq_puts(seq, ,minixdf);
+   if (test_opt(sb, GRPID))
seq_puts(seq, ,grpid);
+   if (!test_opt(sb, GRPID)  (def_mount_opts  EXT2_DEFM_BSDGROUPS))
+   seq_puts(seq, ,nogrpid);
+   if (sbi-s_resuid != EXT2_DEF_RESUID ||
+   le16_to_cpu(es-s_def_resuid) != EXT2_DEF_RESUID) {
+   seq_printf(seq, ,resuid=%u, sbi-s_resuid);
+   }
+   if (sbi-s_resgid != EXT2_DEF_RESGID ||
+   le16_to_cpu(es-s_def_resgid) != EXT2_DEF_RESGID) {
+   seq_printf(seq, ,resgid=%u, sbi-s_resgid);
+   }
+   if (test_opt(sb, ERRORS_CONT)) {
+   int def_errors = le16_to_cpu(es-s_errors);
+
+   if (def_errors == EXT2_ERRORS_PANIC ||
+   def_errors == EXT2_ERRORS_RO) {
+   seq_puts(seq, ,errors=continue);
+   }
+   }
+   if (test_opt(sb, ERRORS_RO))
+   seq_puts(seq, ,errors=remount-ro);
+   if (test_opt(sb, ERRORS_PANIC))
+   seq_puts(seq, ,errors=panic);
+   if (test_opt(sb, NO_UID32))
+   seq_puts(seq, ,nouid32);
+   if (test_opt(sb, DEBUG))
+   seq_puts(seq, ,debug);
+   if (test_opt(sb, OLDALLOC))
+   seq_puts(seq, ,oldalloc);
+
+#ifdef CONFIG_EXT2_FS_XATTR
+   if (test_opt(sb, XATTR_USER))
+   seq_puts(seq, ,user_xattr);
+   if (!test_opt(sb, XATTR_USER) 
+   (def_mount_opts  EXT2_DEFM_XATTR_USER)) {
+   seq_puts(seq, ,nouser_xattr);
+   }
+#endif
+
+#ifdef CONFIG_EXT2_FS_POSIX_ACL
+   if (test_opt(sb, POSIX_ACL))
+   seq_puts(seq, ,acl);
+   if (!test_opt(sb, POSIX_ACL)  (def_mount_opts  EXT2_DEFM_ACL))
+   seq_puts(seq, ,noacl);
+#endif
+
+   if (test_opt(sb, NOBH))
+   seq_puts(seq, ,nobh);
 
 #if defined(CONFIG_QUOTA)
if (sbi-s_mount_opt  EXT2_MOUNT_USRQUOTA)
@@ -658,6 +714,7 @@ static int ext2_fill_super(struct super_
if (!sbi)
return -ENOMEM;
sb-s_fs_info = sbi;
+   sbi-s_sb_block = sb_block;
 
/*
 * See what the current blocksize for the device is, and
Index: linux-2.6/include/linux/ext2_fs_sb.h
===
--- linux-2.6.orig/include/linux/ext2_fs_sb.h   2007-07-23 17:41:29.0 
+0200
+++ linux-2.6/include/linux/ext2_fs_sb.h2007-07-23 18:01:40.0 
+0200
@@ -39,6 +39,7 @@ struct ext2_sb_info {
struct ext2_super_block * s_es; /* Pointer to the super block in the 
buffer */
struct buffer_head ** s_group_desc;
unsigned long  s_mount_opt;
+   unsigned long s_sb_block;
uid_t s_resuid;
gid_t s_resgid;
unsigned short s_mount_state;
-
To unsubscribe from this list: send the line unsubscribe linux-ext4 in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/3] ext2: show all mount options

2007-07-23 Thread Andrew Morton
On Mon, 23 Jul 2007 22:12:54 +0200
Miklos Szeredi [EMAIL PROTECTED] wrote:

 From: Miklos Szeredi [EMAIL PROTECTED]
 
 Signed-off-by: Miklos Szeredi [EMAIL PROTECTED]

Could we have changelogs for these patches, please?

ie: what's wrong with the existing code, what change does this patch make?
-
To unsubscribe from this list: send the line unsubscribe linux-ext4 in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/3] ext2: show all mount options

2007-07-23 Thread Theodore Tso
On Mon, Jul 23, 2007 at 01:56:42PM -0700, Andrew Morton wrote:
 On Mon, 23 Jul 2007 22:12:54 +0200
 Miklos Szeredi [EMAIL PROTECTED] wrote:
 
  From: Miklos Szeredi [EMAIL PROTECTED]
  
  Signed-off-by: Miklos Szeredi [EMAIL PROTECTED]
 
 Could we have changelogs for these patches, please?
 
 ie: what's wrong with the existing code, what change does this patch make?

The idea is to allow /proc/mounts to display all of the mount options
that were used to mount a particular filesystem.  This is useful if
you want /proc/mounts to replace /etc/mtab.

I keep thinking that this is really the wrong approach, though, since
it means adding a lot of coding to every single filesystem to
reconstruct the mount options, and in some cases it will still never
be enough to reconstruct exactly what was in /etc/mtab.  (For example,
the fully qualified domain named passed into some remote filesystem.)

It seems to me the right answer would be to enhance the mount(2)
system call with a new mount operation which would allow the user
space mount command can stash exactly the options used to mount the
filesystem.  That we the kernel can store the exact ascii string in
allocated memory and regurgitate it for the benefit of /proc/mounts,
instead of adding a lot of code into ext2, ext3, ext4, et. al in an
attempt partially reconstruct the mount options.  

- Ted
-
To unsubscribe from this list: send the line unsubscribe linux-ext4 in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/3] ext2: show all mount options

2007-07-23 Thread Miklos Szeredi
 The idea is to allow /proc/mounts to display all of the mount options
 that were used to mount a particular filesystem.  This is useful if
 you want /proc/mounts to replace /etc/mtab.
 
 I keep thinking that this is really the wrong approach, though, since
 it means adding a lot of coding to every single filesystem to
 reconstruct the mount options, and in some cases it will still never
 be enough to reconstruct exactly what was in /etc/mtab.  (For example,
 the fully qualified domain named passed into some remote filesystem.)
 
 It seems to me the right answer would be to enhance the mount(2)
 system call with a new mount operation which would allow the user
 space mount command can stash exactly the options used to mount the
 filesystem.

Well, that would be good for emulating /etc/mtab.  But the problem is
that that's wrong a lot of times.  For example in ext* mount
-oremount,opt doesn't reset all options, it just changes opt.  And
this is different from fs to fs, so there's no easy way to handle it
from generic code.

I think it shouln't be hard to keep the shown mount options in sync
with the parsed options.  The problem is just that people have been
lazy to do that, because /etc/mtab was good enough.

Miklos
-
To unsubscribe from this list: send the line unsubscribe linux-ext4 in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html