mount options: fix hpfs
Add a .show_options super operation to hpfs. Use generic_show_options() and save the complete option string in hpfs_fill_super() and hpfs_remount_fs(). Also add a small fix: hpfs_remount_fs() should return -EINVAL on error, instead of 1, which is not an error value. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Cc: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
dd2cc4dff3
commit
6d9c1fd425
1 changed files with 14 additions and 3 deletions
|
@ -386,6 +386,7 @@ static int hpfs_remount_fs(struct super_block *s, int *flags, char *data)
|
|||
int lowercase, conv, eas, chk, errs, chkdsk, timeshift;
|
||||
int o;
|
||||
struct hpfs_sb_info *sbi = hpfs_sb(s);
|
||||
char *new_opts = kstrdup(data, GFP_KERNEL);
|
||||
|
||||
*flags |= MS_NOATIME;
|
||||
|
||||
|
@ -398,15 +399,15 @@ static int hpfs_remount_fs(struct super_block *s, int *flags, char *data)
|
|||
if (!(o = parse_opts(data, &uid, &gid, &umask, &lowercase, &conv,
|
||||
&eas, &chk, &errs, &chkdsk, ×hift))) {
|
||||
printk("HPFS: bad mount options.\n");
|
||||
return 1;
|
||||
goto out_err;
|
||||
}
|
||||
if (o == 2) {
|
||||
hpfs_help();
|
||||
return 1;
|
||||
goto out_err;
|
||||
}
|
||||
if (timeshift != sbi->sb_timeshift) {
|
||||
printk("HPFS: timeshift can't be changed using remount.\n");
|
||||
return 1;
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
unmark_dirty(s);
|
||||
|
@ -419,7 +420,14 @@ static int hpfs_remount_fs(struct super_block *s, int *flags, char *data)
|
|||
|
||||
if (!(*flags & MS_RDONLY)) mark_dirty(s);
|
||||
|
||||
kfree(s->s_options);
|
||||
s->s_options = new_opts;
|
||||
|
||||
return 0;
|
||||
|
||||
out_err:
|
||||
kfree(new_opts);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Super operations */
|
||||
|
@ -432,6 +440,7 @@ static const struct super_operations hpfs_sops =
|
|||
.put_super = hpfs_put_super,
|
||||
.statfs = hpfs_statfs,
|
||||
.remount_fs = hpfs_remount_fs,
|
||||
.show_options = generic_show_options,
|
||||
};
|
||||
|
||||
static int hpfs_fill_super(struct super_block *s, void *options, int silent)
|
||||
|
@ -454,6 +463,8 @@ static int hpfs_fill_super(struct super_block *s, void *options, int silent)
|
|||
|
||||
int o;
|
||||
|
||||
save_mount_options(s, options);
|
||||
|
||||
sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
|
||||
if (!sbi)
|
||||
return -ENOMEM;
|
||||
|
|
Loading…
Reference in a new issue