f2fs: only set project inherit bit for directory
authorWang Shilong <wshilong@ddn.com>
Thu, 13 Jun 2019 07:29:53 +0000 (16:29 +0900)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 21 Jun 2019 17:41:57 +0000 (10:41 -0700)
It doesn't make any sense to have project inherit bits
for regular files, even though this won't cause any
problem, but it is better fix this.

Cc: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/f2fs.h
fs/f2fs/inode.c

index c072be6..9777e30 100644 (file)
@@ -2350,7 +2350,7 @@ static inline void f2fs_change_bit(unsigned int nr, char *addr)
                           F2FS_DIRSYNC_FL | F2FS_PROJINHERIT_FL)
 
 /* Flags that are appropriate for regular files (all but dir-specific ones). */
-#define F2FS_REG_FLMASK                (~F2FS_DIRSYNC_FL)
+#define F2FS_REG_FLMASK                (~(F2FS_DIRSYNC_FL | F2FS_PROJINHERIT_FL))
 
 /* Flags that are appropriate for non-directories/regular files. */
 #define F2FS_OTHER_FLMASK      (F2FS_NODUMP_FL | F2FS_NOATIME_FL)
index ccb0222..8838e55 100644 (file)
@@ -343,6 +343,8 @@ static int do_read_inode(struct inode *inode)
                                        le16_to_cpu(ri->i_gc_failures);
        fi->i_xattr_nid = le32_to_cpu(ri->i_xattr_nid);
        fi->i_flags = le32_to_cpu(ri->i_flags);
+       if (S_ISREG(inode->i_mode))
+               fi->i_flags &= ~F2FS_PROJINHERIT_FL;
        fi->flags = 0;
        fi->i_advise = ri->i_advise;
        fi->i_pino = le32_to_cpu(ri->i_pino);