|
@@ -320,6 +320,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)
|
|
|
{
|
|
@@ -341,11 +385,6 @@ static void m_stop(struct seq_file *m, void *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);
|