mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 06:33:07 +00:00
jffs2: Fix ignoring mounting options problem during remounting
commit08cd274f9b
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
00e45efaf9
commit
8ee70b6db8
1 changed files with 17 additions and 0 deletions
|
@ -221,11 +221,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 a new issue