diff options
Diffstat (limited to 'include/linux/f2fs_fs.h')
-rw-r--r-- | include/linux/f2fs_fs.h | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h index 860313a33a43..87f14e90e984 100644 --- a/include/linux/f2fs_fs.h +++ b/include/linux/f2fs_fs.h | |||
@@ -33,7 +33,8 @@ | |||
33 | #define F2FS_META_INO(sbi) (sbi->meta_ino_num) | 33 | #define F2FS_META_INO(sbi) (sbi->meta_ino_num) |
34 | 34 | ||
35 | /* This flag is used by node and meta inodes, and by recovery */ | 35 | /* This flag is used by node and meta inodes, and by recovery */ |
36 | #define GFP_F2FS_ZERO (GFP_NOFS | __GFP_ZERO) | 36 | #define GFP_F2FS_ZERO (GFP_NOFS | __GFP_ZERO) |
37 | #define GFP_F2FS_HIGH_ZERO (GFP_NOFS | __GFP_ZERO | __GFP_HIGHMEM) | ||
37 | 38 | ||
38 | /* | 39 | /* |
39 | * For further optimization on multi-head logs, on-disk layout supports maximum | 40 | * For further optimization on multi-head logs, on-disk layout supports maximum |
@@ -170,14 +171,12 @@ struct f2fs_extent { | |||
170 | 171 | ||
171 | #define F2FS_INLINE_XATTR 0x01 /* file inline xattr flag */ | 172 | #define F2FS_INLINE_XATTR 0x01 /* file inline xattr flag */ |
172 | #define F2FS_INLINE_DATA 0x02 /* file inline data flag */ | 173 | #define F2FS_INLINE_DATA 0x02 /* file inline data flag */ |
174 | #define F2FS_INLINE_DENTRY 0x04 /* file inline dentry flag */ | ||
175 | #define F2FS_DATA_EXIST 0x08 /* file inline data exist flag */ | ||
173 | 176 | ||
174 | #define MAX_INLINE_DATA (sizeof(__le32) * (DEF_ADDRS_PER_INODE - \ | 177 | #define MAX_INLINE_DATA (sizeof(__le32) * (DEF_ADDRS_PER_INODE - \ |
175 | F2FS_INLINE_XATTR_ADDRS - 1)) | 178 | F2FS_INLINE_XATTR_ADDRS - 1)) |
176 | 179 | ||
177 | #define INLINE_DATA_OFFSET (PAGE_CACHE_SIZE - sizeof(struct node_footer) -\ | ||
178 | sizeof(__le32) * (DEF_ADDRS_PER_INODE + \ | ||
179 | DEF_NIDS_PER_INODE - 1)) | ||
180 | |||
181 | struct f2fs_inode { | 180 | struct f2fs_inode { |
182 | __le16 i_mode; /* file mode */ | 181 | __le16 i_mode; /* file mode */ |
183 | __u8 i_advise; /* file hints */ | 182 | __u8 i_advise; /* file hints */ |
@@ -435,6 +434,24 @@ struct f2fs_dentry_block { | |||
435 | __u8 filename[NR_DENTRY_IN_BLOCK][F2FS_SLOT_LEN]; | 434 | __u8 filename[NR_DENTRY_IN_BLOCK][F2FS_SLOT_LEN]; |
436 | } __packed; | 435 | } __packed; |
437 | 436 | ||
437 | /* for inline dir */ | ||
438 | #define NR_INLINE_DENTRY (MAX_INLINE_DATA * BITS_PER_BYTE / \ | ||
439 | ((SIZE_OF_DIR_ENTRY + F2FS_SLOT_LEN) * \ | ||
440 | BITS_PER_BYTE + 1)) | ||
441 | #define INLINE_DENTRY_BITMAP_SIZE ((NR_INLINE_DENTRY + \ | ||
442 | BITS_PER_BYTE - 1) / BITS_PER_BYTE) | ||
443 | #define INLINE_RESERVED_SIZE (MAX_INLINE_DATA - \ | ||
444 | ((SIZE_OF_DIR_ENTRY + F2FS_SLOT_LEN) * \ | ||
445 | NR_INLINE_DENTRY + INLINE_DENTRY_BITMAP_SIZE)) | ||
446 | |||
447 | /* inline directory entry structure */ | ||
448 | struct f2fs_inline_dentry { | ||
449 | __u8 dentry_bitmap[INLINE_DENTRY_BITMAP_SIZE]; | ||
450 | __u8 reserved[INLINE_RESERVED_SIZE]; | ||
451 | struct f2fs_dir_entry dentry[NR_INLINE_DENTRY]; | ||
452 | __u8 filename[NR_INLINE_DENTRY][F2FS_SLOT_LEN]; | ||
453 | } __packed; | ||
454 | |||
438 | /* file types used in inode_info->flags */ | 455 | /* file types used in inode_info->flags */ |
439 | enum { | 456 | enum { |
440 | F2FS_FT_UNKNOWN, | 457 | F2FS_FT_UNKNOWN, |