diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-09 22:11:44 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-09 22:11:44 -0400 |
| commit | 64b2d1fbbfda07765dae3f601862796a61b2c451 (patch) | |
| tree | 67947ede8fc007a9f0925e697a302a02bd087032 /include/linux | |
| parent | b1cce8032f6abe900b078d24f3c3938726528f97 (diff) | |
| parent | 9ab701349247368f9d57a993b95a5bb05bb37e10 (diff) | |
Merge tag 'for-f2fs-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs
Pull f2fs updates from Jaegeuk Kim:
"In this round, there is no special interesting feature, but we've
investigated a couple of tuning points with respect to the I/O flow.
Several major bug fixes and a bunch of clean-ups also have been made.
This patch-set includes the following major enhancement patches:
- enhance wait_on_page_writeback
- support SEEK_DATA and SEEK_HOLE
- enhance readahead flows
- enhance IO flushes
- support fiemap
- add some tracepoints
The other bug fixes are as follows:
- fix to support a large volume > 2TB correctly
- recovery bug fix wrt fallocated space
- fix recursive lock on xattr operations
- fix some cases on the remount flow
And, there are a bunch of cleanups"
* tag 'for-f2fs-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (52 commits)
f2fs: support f2fs_fiemap
f2fs: avoid not to call remove_dirty_inode
f2fs: recover fallocated space
f2fs: fix to recover data written by dio
f2fs: large volume support
f2fs: avoid crash when trace f2fs_submit_page_mbio event in ra_sum_pages
f2fs: avoid overflow when large directory feathure is enabled
f2fs: fix recursive lock by f2fs_setxattr
MAINTAINERS: add a co-maintainer from samsung for F2FS
MAINTAINERS: change the email address for f2fs
f2fs: use inode_init_owner() to simplify codes
f2fs: avoid to use slab memory in f2fs_issue_flush for efficiency
f2fs: add a tracepoint for f2fs_read_data_page
f2fs: add a tracepoint for f2fs_write_{meta,node,data}_pages
f2fs: add a tracepoint for f2fs_write_{meta,node,data}_page
f2fs: add a tracepoint for f2fs_write_end
f2fs: add a tracepoint for f2fs_write_begin
f2fs: fix checkpatch warning
f2fs: deactivate inode page if the inode is evicted
f2fs: decrease the lock granularity during write_begin
...
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/f2fs_fs.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h index df53e1753a76..6ff0b0b42d47 100644 --- a/include/linux/f2fs_fs.h +++ b/include/linux/f2fs_fs.h | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #define F2FS_LOG_SECTORS_PER_BLOCK 3 /* 4KB: F2FS_BLKSIZE */ | 19 | #define F2FS_LOG_SECTORS_PER_BLOCK 3 /* 4KB: F2FS_BLKSIZE */ |
| 20 | #define F2FS_BLKSIZE 4096 /* support only 4KB block */ | 20 | #define F2FS_BLKSIZE 4096 /* support only 4KB block */ |
| 21 | #define F2FS_MAX_EXTENSION 64 /* # of extension entries */ | 21 | #define F2FS_MAX_EXTENSION 64 /* # of extension entries */ |
| 22 | #define F2FS_BLK_ALIGN(x) (((x) + F2FS_BLKSIZE - 1) / F2FS_BLKSIZE) | ||
| 22 | 23 | ||
| 23 | #define NULL_ADDR ((block_t)0) /* used as block_t addresses */ | 24 | #define NULL_ADDR ((block_t)0) /* used as block_t addresses */ |
| 24 | #define NEW_ADDR ((block_t)-1) /* used as block_t addresses */ | 25 | #define NEW_ADDR ((block_t)-1) /* used as block_t addresses */ |
| @@ -75,6 +76,7 @@ struct f2fs_super_block { | |||
| 75 | __le16 volume_name[512]; /* volume name */ | 76 | __le16 volume_name[512]; /* volume name */ |
| 76 | __le32 extension_count; /* # of extensions below */ | 77 | __le32 extension_count; /* # of extensions below */ |
| 77 | __u8 extension_list[F2FS_MAX_EXTENSION][8]; /* extension array */ | 78 | __u8 extension_list[F2FS_MAX_EXTENSION][8]; /* extension array */ |
| 79 | __le32 cp_payload; | ||
| 78 | } __packed; | 80 | } __packed; |
| 79 | 81 | ||
| 80 | /* | 82 | /* |
| @@ -146,6 +148,9 @@ struct f2fs_extent { | |||
| 146 | #define ADDRS_PER_BLOCK 1018 /* Address Pointers in a Direct Block */ | 148 | #define ADDRS_PER_BLOCK 1018 /* Address Pointers in a Direct Block */ |
| 147 | #define NIDS_PER_BLOCK 1018 /* Node IDs in an Indirect Block */ | 149 | #define NIDS_PER_BLOCK 1018 /* Node IDs in an Indirect Block */ |
| 148 | 150 | ||
| 151 | #define ADDRS_PER_PAGE(page, fi) \ | ||
| 152 | (IS_INODE(page) ? ADDRS_PER_INODE(fi) : ADDRS_PER_BLOCK) | ||
| 153 | |||
| 149 | #define NODE_DIR1_BLOCK (DEF_ADDRS_PER_INODE + 1) | 154 | #define NODE_DIR1_BLOCK (DEF_ADDRS_PER_INODE + 1) |
| 150 | #define NODE_DIR2_BLOCK (DEF_ADDRS_PER_INODE + 2) | 155 | #define NODE_DIR2_BLOCK (DEF_ADDRS_PER_INODE + 2) |
| 151 | #define NODE_IND1_BLOCK (DEF_ADDRS_PER_INODE + 3) | 156 | #define NODE_IND1_BLOCK (DEF_ADDRS_PER_INODE + 3) |
| @@ -391,6 +396,9 @@ typedef __le32 f2fs_hash_t; | |||
| 391 | /* MAX level for dir lookup */ | 396 | /* MAX level for dir lookup */ |
| 392 | #define MAX_DIR_HASH_DEPTH 63 | 397 | #define MAX_DIR_HASH_DEPTH 63 |
| 393 | 398 | ||
| 399 | /* MAX buckets in one level of dir */ | ||
| 400 | #define MAX_DIR_BUCKETS (1 << ((MAX_DIR_HASH_DEPTH / 2) - 1)) | ||
| 401 | |||
| 394 | #define SIZE_OF_DIR_ENTRY 11 /* by byte */ | 402 | #define SIZE_OF_DIR_ENTRY 11 /* by byte */ |
| 395 | #define SIZE_OF_DENTRY_BITMAP ((NR_DENTRY_IN_BLOCK + BITS_PER_BYTE - 1) / \ | 403 | #define SIZE_OF_DENTRY_BITMAP ((NR_DENTRY_IN_BLOCK + BITS_PER_BYTE - 1) / \ |
| 396 | BITS_PER_BYTE) | 404 | BITS_PER_BYTE) |
