aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs
diff options
context:
space:
mode:
authorChao Yu <chao2.yu@samsung.com>2014-09-24 06:15:19 -0400
committerJaegeuk Kim <jaegeuk@kernel.org>2014-11-03 19:07:31 -0500
commit34d67debe02b3b2b035b5bdce0fab75800f9a344 (patch)
treefbe93f75c59654f3652ce6e718658571e272d233 /fs/f2fs
parentaf41d3ee00bf97bfc3bd64bce6d7a92e85955e98 (diff)
f2fs: add infra struct and helper for inline dir
This patch defines macro/inline dentry structure, and adds some helpers for inline dir infrastructure. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs')
-rw-r--r--fs/f2fs/f2fs.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index d41d1b725919..4fa0df5f54ea 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -46,8 +46,9 @@
46#define F2FS_MOUNT_DISABLE_EXT_IDENTIFY 0x00000040 46#define F2FS_MOUNT_DISABLE_EXT_IDENTIFY 0x00000040
47#define F2FS_MOUNT_INLINE_XATTR 0x00000080 47#define F2FS_MOUNT_INLINE_XATTR 0x00000080
48#define F2FS_MOUNT_INLINE_DATA 0x00000100 48#define F2FS_MOUNT_INLINE_DATA 0x00000100
49#define F2FS_MOUNT_FLUSH_MERGE 0x00000200 49#define F2FS_MOUNT_INLINE_DENTRY 0x00000200
50#define F2FS_MOUNT_NOBARRIER 0x00000400 50#define F2FS_MOUNT_FLUSH_MERGE 0x00000400
51#define F2FS_MOUNT_NOBARRIER 0x00000800
51 52
52#define clear_opt(sbi, option) (sbi->mount_opt.opt &= ~F2FS_MOUNT_##option) 53#define clear_opt(sbi, option) (sbi->mount_opt.opt &= ~F2FS_MOUNT_##option)
53#define set_opt(sbi, option) (sbi->mount_opt.opt |= F2FS_MOUNT_##option) 54#define set_opt(sbi, option) (sbi->mount_opt.opt |= F2FS_MOUNT_##option)
@@ -1058,6 +1059,7 @@ enum {
1058 FI_NO_EXTENT, /* not to use the extent cache */ 1059 FI_NO_EXTENT, /* not to use the extent cache */
1059 FI_INLINE_XATTR, /* used for inline xattr */ 1060 FI_INLINE_XATTR, /* used for inline xattr */
1060 FI_INLINE_DATA, /* used for inline data*/ 1061 FI_INLINE_DATA, /* used for inline data*/
1062 FI_INLINE_DENTRY, /* used for inline dentry */
1061 FI_APPEND_WRITE, /* inode has appended data */ 1063 FI_APPEND_WRITE, /* inode has appended data */
1062 FI_UPDATE_WRITE, /* inode has in-place-update data */ 1064 FI_UPDATE_WRITE, /* inode has in-place-update data */
1063 FI_NEED_IPU, /* used for ipu per file */ 1065 FI_NEED_IPU, /* used for ipu per file */
@@ -1104,6 +1106,8 @@ static inline void get_inline_info(struct f2fs_inode_info *fi,
1104 set_inode_flag(fi, FI_INLINE_XATTR); 1106 set_inode_flag(fi, FI_INLINE_XATTR);
1105 if (ri->i_inline & F2FS_INLINE_DATA) 1107 if (ri->i_inline & F2FS_INLINE_DATA)
1106 set_inode_flag(fi, FI_INLINE_DATA); 1108 set_inode_flag(fi, FI_INLINE_DATA);
1109 if (ri->i_inline & F2FS_INLINE_DENTRY)
1110 set_inode_flag(fi, FI_INLINE_DENTRY);
1107} 1111}
1108 1112
1109static inline void set_raw_inline(struct f2fs_inode_info *fi, 1113static inline void set_raw_inline(struct f2fs_inode_info *fi,
@@ -1115,6 +1119,8 @@ static inline void set_raw_inline(struct f2fs_inode_info *fi,
1115 ri->i_inline |= F2FS_INLINE_XATTR; 1119 ri->i_inline |= F2FS_INLINE_XATTR;
1116 if (is_inode_flag_set(fi, FI_INLINE_DATA)) 1120 if (is_inode_flag_set(fi, FI_INLINE_DATA))
1117 ri->i_inline |= F2FS_INLINE_DATA; 1121 ri->i_inline |= F2FS_INLINE_DATA;
1122 if (is_inode_flag_set(fi, FI_INLINE_DENTRY))
1123 ri->i_inline |= F2FS_INLINE_DENTRY;
1118} 1124}
1119 1125
1120static inline int f2fs_has_inline_xattr(struct inode *inode) 1126static inline int f2fs_has_inline_xattr(struct inode *inode)
@@ -1165,6 +1171,17 @@ static inline void *inline_data_addr(struct page *page)
1165 return (void *)&(ri->i_addr[1]); 1171 return (void *)&(ri->i_addr[1]);
1166} 1172}
1167 1173
1174static inline int f2fs_has_inline_dentry(struct inode *inode)
1175{
1176 return is_inode_flag_set(F2FS_I(inode), FI_INLINE_DENTRY);
1177}
1178
1179static inline void *inline_dentry_addr(struct page *page)
1180{
1181 struct f2fs_inode *ri = F2FS_INODE(page);
1182 return (void *)&(ri->i_addr[1]);
1183}
1184
1168static inline int f2fs_readonly(struct super_block *sb) 1185static inline int f2fs_readonly(struct super_block *sb)
1169{ 1186{
1170 return sb->s_flags & MS_RDONLY; 1187 return sb->s_flags & MS_RDONLY;