From: Miklos Szeredi <miklos@szeredi.hu>
To: akpm@linux-foundation.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [patch 02/26] mount options: add generic_show_options()
Date: Thu, 24 Jan 2008 20:33:43 +0100 [thread overview]
Message-ID: <20080124193417.722190833@szeredi.hu> (raw)
In-Reply-To: <20080124193341.166753833@szeredi.hu>
[-- Attachment #1: generic_show_options.patch --]
[-- Type: text/plain, Size: 3688 bytes --]
From: Miklos Szeredi <mszeredi@suse.cz>
Add a new s_options field to struct super_block. Filesystems can save
mount options passed to them in mount or remount. It is automatically
freed when the superblock is destroyed.
A new helper function, generic_show_options() is introduced, which uses
this field to display the mount options in /proc/mounts.
Another helper function, save_mount_options() may be used by
filesystems to save the options in the super block.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
---
Index: linux/fs/namespace.c
===================================================================
--- linux.orig/fs/namespace.c 2008-01-24 17:07:46.000000000 +0100
+++ linux/fs/namespace.c 2008-01-24 17:34:50.000000000 +0100
@@ -575,6 +575,50 @@ void mnt_unpin(struct vfsmount *mnt)
EXPORT_SYMBOL(mnt_unpin);
+static inline void mangle(struct seq_file *m, const char *s)
+{
+ seq_escape(m, s, " \t\n\\");
+}
+
+/*
+ * Simple .show_options callback for filesystems which don't want to
+ * implement more complex mount option showing.
+ *
+ * See also save_mount_options().
+ */
+int generic_show_options(struct seq_file *m, struct vfsmount *mnt)
+{
+ const char *options = mnt->mnt_sb->s_options;
+
+ if (options != NULL && options[0]) {
+ seq_putc(m, ',');
+ mangle(m, options);
+ }
+
+ return 0;
+}
+EXPORT_SYMBOL(generic_show_options);
+
+/*
+ * If filesystem uses generic_show_options(), this function should be
+ * called from the fill_super() callback.
+ *
+ * The .remount_fs callback usually needs to be handled in a special
+ * way, to make sure, that previous options are not overwritten if the
+ * remount fails.
+ *
+ * Also note, that if the filesystem's .remount_fs function doesn't
+ * reset all options to their default value, but changes only newly
+ * given options, then the displayed options will not reflect reality
+ * any more.
+ */
+void save_mount_options(struct super_block *sb, char *options)
+{
+ kfree(sb->s_options);
+ sb->s_options = kstrdup(options, GFP_KERNEL);
+}
+EXPORT_SYMBOL(save_mount_options);
+
/* iterator */
static void *m_start(struct seq_file *m, loff_t *pos)
{
@@ -596,11 +640,6 @@ static void m_stop(struct seq_file *m, v
up_read(&namespace_sem);
}
-static inline void mangle(struct seq_file *m, const char *s)
-{
- seq_escape(m, s, " \t\n\\");
-}
-
static int show_vfsmnt(struct seq_file *m, void *v)
{
struct vfsmount *mnt = list_entry(v, struct vfsmount, mnt_list);
Index: linux/fs/super.c
===================================================================
--- linux.orig/fs/super.c 2008-01-24 17:07:46.000000000 +0100
+++ linux/fs/super.c 2008-01-24 17:12:33.000000000 +0100
@@ -105,6 +105,7 @@ static inline void destroy_super(struct
{
security_sb_free(s);
kfree(s->s_subtype);
+ kfree(s->s_options);
kfree(s);
}
Index: linux/include/linux/fs.h
===================================================================
--- linux.orig/include/linux/fs.h 2008-01-24 17:07:46.000000000 +0100
+++ linux/include/linux/fs.h 2008-01-24 17:12:33.000000000 +0100
@@ -1042,6 +1042,12 @@ struct super_block {
* in /proc/mounts will be "type.subtype"
*/
char *s_subtype;
+
+ /*
+ * Saved mount options for lazy filesystems using
+ * generic_show_options()
+ */
+ char *s_options;
};
extern struct timespec current_fs_time(struct super_block *sb);
@@ -1992,6 +1998,9 @@ extern int __must_check inode_setattr(st
extern void file_update_time(struct file *file);
+extern int generic_show_options(struct seq_file *m, struct vfsmount *mnt);
+extern void save_mount_options(struct super_block *sb, char *options);
+
static inline ino_t parent_ino(struct dentry *dentry)
{
ino_t res;
--
next prev parent reply other threads:[~2008-01-24 19:40 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-24 19:33 [patch 00/26] mount options: fix filesystem's ->show_options Miklos Szeredi
2008-01-24 19:33 ` [patch 01/26] mount options: add documentation Miklos Szeredi
2008-01-25 0:24 ` Erez Zadok
2008-01-25 7:56 ` David Chinner
2008-01-25 10:02 ` Miklos Szeredi
2008-01-30 1:54 ` Roman Zippel
2008-01-30 9:09 ` Miklos Szeredi
2008-01-30 14:42 ` Karel Zak
2008-01-31 17:42 ` Miklos Szeredi
2008-02-08 19:20 ` Roman Zippel
2008-02-08 20:23 ` Miklos Szeredi
2008-01-24 19:33 ` Miklos Szeredi [this message]
2008-01-24 19:33 ` [patch 03/26] mount options: fix adfs Miklos Szeredi
2008-01-24 20:05 ` Russell King
2008-01-24 19:33 ` [patch 04/26] mount options: fix affs Miklos Szeredi
2008-01-24 19:33 ` [patch 05/26] mount options: fix afs Miklos Szeredi
2008-01-24 19:33 ` [patch 06/26] mount options: fix autofs4 Miklos Szeredi
2008-01-25 5:13 ` Ian Kent
2008-01-24 19:33 ` [patch 07/26] mount options: fix autofs Miklos Szeredi
2008-01-24 19:46 ` H. Peter Anvin
2008-01-24 19:33 ` [patch 08/26] mount options: fix befs Miklos Szeredi
2008-01-24 19:33 ` [patch 09/26] mount options: fix capifs Miklos Szeredi
2008-01-25 10:18 ` Karsten Keil
2008-01-24 19:33 ` [patch 10/26] mount options: fix devpts Miklos Szeredi
2008-01-24 19:46 ` H. Peter Anvin
2008-01-25 9:24 ` Miklos Szeredi
2008-01-24 19:33 ` [patch 11/26] mount options: fix ext2 Miklos Szeredi
2008-01-25 14:34 ` Jan Kara
2008-01-24 19:33 ` [patch 12/26] mount options: fix ext4 Miklos Szeredi
2008-01-25 6:41 ` Andreas Dilger
2008-01-25 14:37 ` Jan Kara
2008-01-25 17:35 ` Mingming Cao
2008-01-24 19:33 ` [patch 13/26] mount options: fix fat Miklos Szeredi
2008-01-24 19:33 ` [patch 14/26] mount options: fix fuse Miklos Szeredi
2008-01-24 19:33 ` [patch 15/26] mount options: fix hostfs Miklos Szeredi
2008-01-24 19:33 ` [patch 16/26] mount options: fix hpfs Miklos Szeredi
2008-01-24 19:33 ` [patch 17/26] mount options: fix hugetlbfs Miklos Szeredi
2008-01-24 19:33 ` [patch 18/26] mount options: fix isofs Miklos Szeredi
2008-01-25 14:42 ` Jan Kara
2008-01-24 19:34 ` [patch 19/26] mount options: fix jfs Miklos Szeredi
2008-01-24 21:15 ` Dave Kleikamp
2008-01-24 21:57 ` Andrew Morton
2008-01-24 22:17 ` Dave Kleikamp
2008-01-24 19:34 ` [patch 20/26] mount options: fix ncpfs Miklos Szeredi
2008-01-24 19:34 ` [patch 21/26] mount options: partially fix nfs Miklos Szeredi
2008-01-24 20:49 ` Chuck Lever
2008-01-25 9:39 ` Miklos Szeredi
2008-01-25 17:19 ` Chuck Lever
2008-01-28 11:34 ` Miklos Szeredi
2008-01-28 16:22 ` Chuck Lever
2008-01-24 20:53 ` Trond Myklebust
2008-01-25 9:43 ` Miklos Szeredi
2008-01-24 19:34 ` [patch 22/26] mount options: fix reiserfs Miklos Szeredi
2008-01-24 19:34 ` [patch 23/26] mount options: fix spufs Miklos Szeredi
2008-01-24 19:34 ` [patch 24/26] mount options: fix tmpfs Miklos Szeredi
2008-01-28 6:09 ` Hugh Dickins
2008-01-28 11:40 ` Miklos Szeredi
2008-01-29 13:28 ` Hugh Dickins
2008-01-24 19:34 ` [patch 25/26] mount options: fix udf Miklos Szeredi
2008-01-24 19:51 ` Cyrill Gorcunov
2008-01-24 20:20 ` Cyrill Gorcunov
2008-01-25 9:29 ` Miklos Szeredi
2008-01-25 10:57 ` Cyrill Gorcunov
2008-01-25 13:41 ` Cyrill Gorcunov
2008-01-25 15:27 ` Jan Kara
2008-01-25 15:50 ` Miklos Szeredi
2008-01-25 15:57 ` Cyrill Gorcunov
2008-01-25 16:07 ` Jan Kara
2008-01-25 16:10 ` Miklos Szeredi
2008-01-24 20:40 ` Cyrill Gorcunov
2008-01-25 15:30 ` Jan Kara
2008-01-25 15:56 ` Miklos Szeredi
2008-01-25 16:04 ` Jan Kara
2008-01-24 19:34 ` [patch 26/26] mount options: fix usbfs Miklos Szeredi
2008-01-24 22:01 ` Greg KH
2008-01-25 9:54 ` Miklos Szeredi
2008-01-27 6:01 ` [patch 00/26] mount options: fix filesystem's ->show_options Andrew Morton
2008-01-28 11:36 ` Miklos Szeredi
2008-01-29 0:19 ` [patch 05/26] mount options: fix afs David Howells
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080124193417.722190833@szeredi.hu \
--to=miklos@szeredi.hu \
--cc=akpm@linux-foundation.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome