Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6d9c1fd425e6e1f0998218104cc046589e3af3d8
Commit:     6d9c1fd425e6e1f0998218104cc046589e3af3d8
Parent:     dd2cc4dff3b08ab54c4c177a080046bcc84ac41d
Author:     Miklos Szeredi <[EMAIL PROTECTED]>
AuthorDate: Fri Feb 8 04:21:44 2008 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Fri Feb 8 09:22:40 2008 -0800

    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 <[EMAIL PROTECTED]>
    Cc: Mikulas Patocka <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 fs/hpfs/super.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c
index 00971d9..f63a699 100644
--- a/fs/hpfs/super.c
+++ b/fs/hpfs/super.c
@@ -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, &timeshift))) {
                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;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to