diff options
author | Chao Yu <chao2.yu@samsung.com> | 2014-09-24 06:15:19 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-11-03 19:07:31 -0500 |
commit | 34d67debe02b3b2b035b5bdce0fab75800f9a344 (patch) | |
tree | fbe93f75c59654f3652ce6e718658571e272d233 /fs/f2fs | |
parent | af41d3ee00bf97bfc3bd64bce6d7a92e85955e98 (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.h | 21 |
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 | ||
1109 | static inline void set_raw_inline(struct f2fs_inode_info *fi, | 1113 | static 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 | ||
1120 | static inline int f2fs_has_inline_xattr(struct inode *inode) | 1126 | static 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 | ||
1174 | static inline int f2fs_has_inline_dentry(struct inode *inode) | ||
1175 | { | ||
1176 | return is_inode_flag_set(F2FS_I(inode), FI_INLINE_DENTRY); | ||
1177 | } | ||
1178 | |||
1179 | static 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 | |||
1168 | static inline int f2fs_readonly(struct super_block *sb) | 1185 | static inline int f2fs_readonly(struct super_block *sb) |
1169 | { | 1186 | { |
1170 | return sb->s_flags & MS_RDONLY; | 1187 | return sb->s_flags & MS_RDONLY; |