diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2008-02-08 04:21:36 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 09:22:39 -0800 |
commit | e9b3961b66bb1e93762895d809be074ea109c77c (patch) | |
tree | 32a84603c2502106a49d5d4ed3d9e5b1da687508 /fs | |
parent | e11400b0cadc97cb1062912c1028e965c93fa9b3 (diff) | |
download | lwn-e9b3961b66bb1e93762895d809be074ea109c77c.tar.gz lwn-e9b3961b66bb1e93762895d809be074ea109c77c.zip |
mount options: fix affs
Add a .show_options super operation to affs.
Use generic_show_options() and save the complete option string in
affs_fill_super() and affs_remount().
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/affs/super.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/affs/super.c b/fs/affs/super.c index 3c45d49c0d26..d2dc047cb479 100644 --- a/fs/affs/super.c +++ b/fs/affs/super.c @@ -122,6 +122,7 @@ static const struct super_operations affs_sops = { .write_super = affs_write_super, .statfs = affs_statfs, .remount_fs = affs_remount, + .show_options = generic_show_options, }; enum { @@ -272,6 +273,8 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent) u8 sig[4]; int ret = -EINVAL; + save_mount_options(sb, data); + pr_debug("AFFS: read_super(%s)\n",data ? (const char *)data : "no options"); sb->s_magic = AFFS_SUPER_MAGIC; @@ -487,14 +490,21 @@ affs_remount(struct super_block *sb, int *flags, char *data) int root_block; unsigned long mount_flags; int res = 0; + char *new_opts = kstrdup(data, GFP_KERNEL); pr_debug("AFFS: remount(flags=0x%x,opts=\"%s\")\n",*flags,data); *flags |= MS_NODIRATIME; - if (!parse_options(data,&uid,&gid,&mode,&reserved,&root_block, - &blocksize,&sbi->s_prefix,sbi->s_volume,&mount_flags)) + if (!parse_options(data, &uid, &gid, &mode, &reserved, &root_block, + &blocksize, &sbi->s_prefix, sbi->s_volume, + &mount_flags)) { + kfree(new_opts); return -EINVAL; + } + kfree(sb->s_options); + sb->s_options = new_opts; + sbi->s_flags = mount_flags; sbi->s_mode = mode; sbi->s_uid = uid; |