aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/f2fs_fs.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/f2fs_fs.h')
-rw-r--r--include/linux/f2fs_fs.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h
index 6ff0b0b42d47..08ed2b0a96e6 100644
--- a/include/linux/f2fs_fs.h
+++ b/include/linux/f2fs_fs.h
@@ -24,6 +24,9 @@
24#define NULL_ADDR ((block_t)0) /* used as block_t addresses */ 24#define NULL_ADDR ((block_t)0) /* used as block_t addresses */
25#define NEW_ADDR ((block_t)-1) /* used as block_t addresses */ 25#define NEW_ADDR ((block_t)-1) /* used as block_t addresses */
26 26
27/* 0, 1(node nid), 2(meta nid) are reserved node id */
28#define F2FS_RESERVED_NODE_NUM 3
29
27#define F2FS_ROOT_INO(sbi) (sbi->root_ino_num) 30#define F2FS_ROOT_INO(sbi) (sbi->root_ino_num)
28#define F2FS_NODE_INO(sbi) (sbi->node_ino_num) 31#define F2FS_NODE_INO(sbi) (sbi->node_ino_num)
29#define F2FS_META_INO(sbi) (sbi->meta_ino_num) 32#define F2FS_META_INO(sbi) (sbi->meta_ino_num)
@@ -87,6 +90,8 @@ struct f2fs_super_block {
87#define CP_ORPHAN_PRESENT_FLAG 0x00000002 90#define CP_ORPHAN_PRESENT_FLAG 0x00000002
88#define CP_UMOUNT_FLAG 0x00000001 91#define CP_UMOUNT_FLAG 0x00000001
89 92
93#define F2FS_CP_PACKS 2 /* # of checkpoint packs */
94
90struct f2fs_checkpoint { 95struct f2fs_checkpoint {
91 __le64 checkpoint_ver; /* checkpoint block version number */ 96 __le64 checkpoint_ver; /* checkpoint block version number */
92 __le64 user_block_count; /* # of user blocks */ 97 __le64 user_block_count; /* # of user blocks */
@@ -123,6 +128,9 @@ struct f2fs_checkpoint {
123 */ 128 */
124#define F2FS_ORPHANS_PER_BLOCK 1020 129#define F2FS_ORPHANS_PER_BLOCK 1020
125 130
131#define GET_ORPHAN_BLOCKS(n) ((n + F2FS_ORPHANS_PER_BLOCK - 1) / \
132 F2FS_ORPHANS_PER_BLOCK)
133
126struct f2fs_orphan_block { 134struct f2fs_orphan_block {
127 __le32 ino[F2FS_ORPHANS_PER_BLOCK]; /* inode numbers */ 135 __le32 ino[F2FS_ORPHANS_PER_BLOCK]; /* inode numbers */
128 __le32 reserved; /* reserved */ 136 __le32 reserved; /* reserved */
@@ -144,6 +152,7 @@ struct f2fs_extent {
144#define F2FS_NAME_LEN 255 152#define F2FS_NAME_LEN 255
145#define F2FS_INLINE_XATTR_ADDRS 50 /* 200 bytes for inline xattrs */ 153#define F2FS_INLINE_XATTR_ADDRS 50 /* 200 bytes for inline xattrs */
146#define DEF_ADDRS_PER_INODE 923 /* Address Pointers in an Inode */ 154#define DEF_ADDRS_PER_INODE 923 /* Address Pointers in an Inode */
155#define DEF_NIDS_PER_INODE 5 /* Node IDs in an Inode */
147#define ADDRS_PER_INODE(fi) addrs_per_inode(fi) 156#define ADDRS_PER_INODE(fi) addrs_per_inode(fi)
148#define ADDRS_PER_BLOCK 1018 /* Address Pointers in a Direct Block */ 157#define ADDRS_PER_BLOCK 1018 /* Address Pointers in a Direct Block */
149#define NIDS_PER_BLOCK 1018 /* Node IDs in an Indirect Block */ 158#define NIDS_PER_BLOCK 1018 /* Node IDs in an Indirect Block */
@@ -163,8 +172,9 @@ struct f2fs_extent {
163#define MAX_INLINE_DATA (sizeof(__le32) * (DEF_ADDRS_PER_INODE - \ 172#define MAX_INLINE_DATA (sizeof(__le32) * (DEF_ADDRS_PER_INODE - \
164 F2FS_INLINE_XATTR_ADDRS - 1)) 173 F2FS_INLINE_XATTR_ADDRS - 1))
165 174
166#define INLINE_DATA_OFFSET (PAGE_CACHE_SIZE - sizeof(struct node_footer) \ 175#define INLINE_DATA_OFFSET (PAGE_CACHE_SIZE - sizeof(struct node_footer) -\
167 - sizeof(__le32) * (DEF_ADDRS_PER_INODE + 5 - 1)) 176 sizeof(__le32) * (DEF_ADDRS_PER_INODE + \
177 DEF_NIDS_PER_INODE - 1))
168 178
169struct f2fs_inode { 179struct f2fs_inode {
170 __le16 i_mode; /* file mode */ 180 __le16 i_mode; /* file mode */
@@ -194,7 +204,7 @@ struct f2fs_inode {
194 204
195 __le32 i_addr[DEF_ADDRS_PER_INODE]; /* Pointers to data blocks */ 205 __le32 i_addr[DEF_ADDRS_PER_INODE]; /* Pointers to data blocks */
196 206
197 __le32 i_nid[5]; /* direct(2), indirect(2), 207 __le32 i_nid[DEF_NIDS_PER_INODE]; /* direct(2), indirect(2),
198 double_indirect(1) node id */ 208 double_indirect(1) node id */
199} __packed; 209} __packed;
200 210