aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2
diff options
context:
space:
mode:
Diffstat (limited to 'fs/gfs2')
-rw-r--r--fs/gfs2/file.c4
-rw-r--r--fs/gfs2/glops.c3
-rw-r--r--fs/gfs2/ops_fstype.c1
3 files changed, 6 insertions, 2 deletions
diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
index a9f5cbe45cd9..bc2590ef5fc1 100644
--- a/fs/gfs2/file.c
+++ b/fs/gfs2/file.c
@@ -174,7 +174,9 @@ void gfs2_set_inode_flags(struct inode *inode)
174 struct gfs2_inode *ip = GFS2_I(inode); 174 struct gfs2_inode *ip = GFS2_I(inode);
175 unsigned int flags = inode->i_flags; 175 unsigned int flags = inode->i_flags;
176 176
177 flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC); 177 flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC|S_NOSEC);
178 if ((ip->i_eattr == 0) && !is_sxid(inode->i_mode))
179 inode->i_flags |= S_NOSEC;
178 if (ip->i_diskflags & GFS2_DIF_IMMUTABLE) 180 if (ip->i_diskflags & GFS2_DIF_IMMUTABLE)
179 flags |= S_IMMUTABLE; 181 flags |= S_IMMUTABLE;
180 if (ip->i_diskflags & GFS2_DIF_APPENDONLY) 182 if (ip->i_diskflags & GFS2_DIF_APPENDONLY)
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
index a4222c3f5993..da21ecaafcc2 100644
--- a/fs/gfs2/glops.c
+++ b/fs/gfs2/glops.c
@@ -318,6 +318,8 @@ static int gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)
318 ip->i_generation = be64_to_cpu(str->di_generation); 318 ip->i_generation = be64_to_cpu(str->di_generation);
319 319
320 ip->i_diskflags = be32_to_cpu(str->di_flags); 320 ip->i_diskflags = be32_to_cpu(str->di_flags);
321 ip->i_eattr = be64_to_cpu(str->di_eattr);
322 /* i_diskflags and i_eattr must be set before gfs2_set_inode_flags() */
321 gfs2_set_inode_flags(&ip->i_inode); 323 gfs2_set_inode_flags(&ip->i_inode);
322 height = be16_to_cpu(str->di_height); 324 height = be16_to_cpu(str->di_height);
323 if (unlikely(height > GFS2_MAX_META_HEIGHT)) 325 if (unlikely(height > GFS2_MAX_META_HEIGHT))
@@ -330,7 +332,6 @@ static int gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)
330 ip->i_depth = (u8)depth; 332 ip->i_depth = (u8)depth;
331 ip->i_entries = be32_to_cpu(str->di_entries); 333 ip->i_entries = be32_to_cpu(str->di_entries);
332 334
333 ip->i_eattr = be64_to_cpu(str->di_eattr);
334 if (S_ISREG(ip->i_inode.i_mode)) 335 if (S_ISREG(ip->i_inode.i_mode))
335 gfs2_set_aops(&ip->i_inode); 336 gfs2_set_aops(&ip->i_inode);
336 337
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index 2a77071fb7b6..516516e0c2a2 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -1094,6 +1094,7 @@ static int fill_super(struct super_block *sb, struct gfs2_args *args, int silent
1094 if (sdp->sd_args.ar_nobarrier) 1094 if (sdp->sd_args.ar_nobarrier)
1095 set_bit(SDF_NOBARRIERS, &sdp->sd_flags); 1095 set_bit(SDF_NOBARRIERS, &sdp->sd_flags);
1096 1096
1097 sb->s_flags |= MS_NOSEC;
1097 sb->s_magic = GFS2_MAGIC; 1098 sb->s_magic = GFS2_MAGIC;
1098 sb->s_op = &gfs2_super_ops; 1099 sb->s_op = &gfs2_super_ops;
1099 sb->s_d_op = &gfs2_dops; 1100 sb->s_d_op = &gfs2_dops;