From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bob Peterson Date: Wed, 23 Sep 2015 09:52:28 -0400 (EDT) Subject: [Cluster-devel] [PATCH] GFS2: Set s_mode before parsing mount options In-Reply-To: <1443012749-10801-1-git-send-email-anprice@redhat.com> References: <1443012749-10801-1-git-send-email-anprice@redhat.com> Message-ID: <698306052.33059521.1443016348432.JavaMail.zimbra@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit ----- Original Message ----- > In the generic mount_bdev() function, deactivate_locked_super() is > called after the fill_super() call fails, at which point s_mode has been > set. kill_block_super() expects this and dumps a warning when > FMODE_EXCL is not set in s_mode. > > In gfs2_mount() we call deactivate_locked_super() on failure of > gfs2_mount_args(), at which point s_mode has not yet been set. This > causes kill_block_super() to dump a stack trace when gfs2 fails to mount > with invalid options. Set s_mode earlier in gfs2_mount() to avoid that. > > Signed-off-by: Andrew Price > --- > fs/gfs2/ops_fstype.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c > index 02586e7..baab99b 100644 > --- a/fs/gfs2/ops_fstype.c > +++ b/fs/gfs2/ops_fstype.c > @@ -1291,6 +1291,9 @@ static struct dentry *gfs2_mount(struct > file_system_type *fs_type, int flags, > up_write(&s->s_umount); > blkdev_put(bdev, mode); > down_write(&s->s_umount); > + } else { > + /* s_mode must be set before deactivate_locked_super calls */ > + s->s_mode = mode; > } > > memset(&args, 0, sizeof(args)); > @@ -1314,7 +1317,6 @@ static struct dentry *gfs2_mount(struct > file_system_type *fs_type, int flags, > } else { > char b[BDEVNAME_SIZE]; > > - s->s_mode = mode; > strlcpy(s->s_id, bdevname(bdev, b), sizeof(s->s_id)); > sb_set_blocksize(s, block_size(bdev)); > error = fill_super(s, &args, flags & MS_SILENT ? 1 : 0); > -- > 2.4.3 > Hi, Thanks. This is now applied to the for-next branch of the linux-gfs2 tree: https://git.kernel.org/cgit/linux/kernel/git/gfs2/linux-gfs2.git/commit/fs/gfs2?h=for-next&id=6de20eb0dee4c802d9d228d6c08d00386e172e52 Regards, Bob Peterson Red Hat File Systems