jffs2: Fix ignoring mounting options problem during remounting
commit 08cd274f9b8283a1da93e2ccab216a336da83525 upstream. The jffs2 mount options will be ignored when remounting jffs2. It can be easily reproduced with the steps listed below. 1. mount -t jffs2 -o compr=none /dev/mtdblockx /mnt 2. mount -o remount compr=zlib /mnt Sinceec10a24f10
, the option parsing happens before fill_super and then pass fc, which contains the options parsing results, to function jffs2_reconfigure during remounting. But function jffs2_reconfigure do not update c->mount_opts. This patch add a function jffs2_update_mount_opts to fix this problem. By the way, I notice that tmpfs use the same way to update remounting options. If it is necessary to unify them? Cc: <stable@vger.kernel.org> Fixes:ec10a24f10
("vfs: Convert jffs2 to use the new mount API") Signed-off-by: lizhe <lizhe67@huawei.com> Signed-off-by: Richard Weinberger <richard@nod.at> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ecdb868acc
commit
1aa8e7801e
@ -215,11 +215,28 @@ static int jffs2_parse_param(struct fs_context *fc, struct fs_parameter *param)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void jffs2_update_mount_opts(struct fs_context *fc)
|
||||
{
|
||||
struct jffs2_sb_info *new_c = fc->s_fs_info;
|
||||
struct jffs2_sb_info *c = JFFS2_SB_INFO(fc->root->d_sb);
|
||||
|
||||
mutex_lock(&c->alloc_sem);
|
||||
if (new_c->mount_opts.override_compr) {
|
||||
c->mount_opts.override_compr = new_c->mount_opts.override_compr;
|
||||
c->mount_opts.compr = new_c->mount_opts.compr;
|
||||
}
|
||||
if (new_c->mount_opts.rp_size)
|
||||
c->mount_opts.rp_size = new_c->mount_opts.rp_size;
|
||||
mutex_unlock(&c->alloc_sem);
|
||||
}
|
||||
|
||||
static int jffs2_reconfigure(struct fs_context *fc)
|
||||
{
|
||||
struct super_block *sb = fc->root->d_sb;
|
||||
|
||||
sync_filesystem(sb);
|
||||
jffs2_update_mount_opts(fc);
|
||||
|
||||
return jffs2_do_remount_fs(sb, fc);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user