aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-05-08 18:11:48 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-08 18:11:48 -0400
commit942d33da999b86821c9aee9615fcb81207ee04c7 (patch)
treedb14ab92982f936c0a2ea2202f5e301310f33bdd /include/linux
parent246e6a0d781091c4657890ffa497c2576bd99095 (diff)
parent59bbd474abb9dd6a0c1a74df758ec29c7a8b150f (diff)
Merge tag 'f2fs-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs
Pull f2fs updates from Jaegeuk Kim: "This patch-set includes the following major enhancement patches. - introduce a new gloabl lock scheme - add tracepoints on several major functions - fix the overall cleaning process focused on victim selection - apply the block plugging to merge IOs as much as possible - enhance management of free nids and its list - enhance the readahead mode for node pages - address several cretical deadlock conditions - reduce lock_page calls The other minor bug fixes and enhancements are as follows. - calculation mistakes: overflow - bio types: READ, READA, and READ_SYNC - fix the recovery flow, data races, and null pointer errors" * tag 'f2fs-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (68 commits) f2fs: cover free_nid management with spin_lock f2fs: optimize scan_nat_page() f2fs: code cleanup for scan_nat_page() and build_free_nids() f2fs: bugfix for alloc_nid_failed() f2fs: recover when journal contains deleted files f2fs: continue to mount after failing recovery f2fs: avoid deadlock during evict after f2fs_gc f2fs: modify the number of issued pages to merge IOs f2fs: remove useless #include <linux/proc_fs.h> as we're now using sysfs as debug entry. f2fs: fix inconsistent using of NM_WOUT_THRESHOLD f2fs: check truncation of mapping after lock_page f2fs: enhance alloc_nid and build_free_nids flows f2fs: add a tracepoint on f2fs_new_inode f2fs: check nid == 0 in add_free_nid f2fs: add REQ_META about metadata requests for submit f2fs: give a chance to merge IOs by IO scheduler f2fs: avoid frequent background GC f2fs: add tracepoints to debug checkpoint request f2fs: add tracepoints for write page operations f2fs: add tracepoints to debug the block allocation ...
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/f2fs_fs.h17
1 files changed, 9 insertions, 8 deletions
diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h
index f9a12f6243a5..df6fab82f87e 100644
--- a/include/linux/f2fs_fs.h
+++ b/include/linux/f2fs_fs.h
@@ -139,7 +139,7 @@ struct f2fs_extent {
139 __le32 len; /* lengh of the extent */ 139 __le32 len; /* lengh of the extent */
140} __packed; 140} __packed;
141 141
142#define F2FS_MAX_NAME_LEN 256 142#define F2FS_NAME_LEN 255
143#define ADDRS_PER_INODE 923 /* Address Pointers in an Inode */ 143#define ADDRS_PER_INODE 923 /* Address Pointers in an Inode */
144#define ADDRS_PER_BLOCK 1018 /* Address Pointers in a Direct Block */ 144#define ADDRS_PER_BLOCK 1018 /* Address Pointers in a Direct Block */
145#define NIDS_PER_BLOCK 1018 /* Node IDs in an Indirect Block */ 145#define NIDS_PER_BLOCK 1018 /* Node IDs in an Indirect Block */
@@ -165,7 +165,8 @@ struct f2fs_inode {
165 __le32 i_flags; /* file attributes */ 165 __le32 i_flags; /* file attributes */
166 __le32 i_pino; /* parent inode number */ 166 __le32 i_pino; /* parent inode number */
167 __le32 i_namelen; /* file name length */ 167 __le32 i_namelen; /* file name length */
168 __u8 i_name[F2FS_MAX_NAME_LEN]; /* file name for SPOR */ 168 __u8 i_name[F2FS_NAME_LEN]; /* file name for SPOR */
169 __u8 i_reserved2; /* for backward compatibility */
169 170
170 struct f2fs_extent i_ext; /* caching a largest extent */ 171 struct f2fs_extent i_ext; /* caching a largest extent */
171 172
@@ -362,10 +363,10 @@ struct f2fs_summary_block {
362typedef __le32 f2fs_hash_t; 363typedef __le32 f2fs_hash_t;
363 364
364/* One directory entry slot covers 8bytes-long file name */ 365/* One directory entry slot covers 8bytes-long file name */
365#define F2FS_NAME_LEN 8 366#define F2FS_SLOT_LEN 8
366#define F2FS_NAME_LEN_BITS 3 367#define F2FS_SLOT_LEN_BITS 3
367 368
368#define GET_DENTRY_SLOTS(x) ((x + F2FS_NAME_LEN - 1) >> F2FS_NAME_LEN_BITS) 369#define GET_DENTRY_SLOTS(x) ((x + F2FS_SLOT_LEN - 1) >> F2FS_SLOT_LEN_BITS)
369 370
370/* the number of dentry in a block */ 371/* the number of dentry in a block */
371#define NR_DENTRY_IN_BLOCK 214 372#define NR_DENTRY_IN_BLOCK 214
@@ -377,10 +378,10 @@ typedef __le32 f2fs_hash_t;
377#define SIZE_OF_DENTRY_BITMAP ((NR_DENTRY_IN_BLOCK + BITS_PER_BYTE - 1) / \ 378#define SIZE_OF_DENTRY_BITMAP ((NR_DENTRY_IN_BLOCK + BITS_PER_BYTE - 1) / \
378 BITS_PER_BYTE) 379 BITS_PER_BYTE)
379#define SIZE_OF_RESERVED (PAGE_SIZE - ((SIZE_OF_DIR_ENTRY + \ 380#define SIZE_OF_RESERVED (PAGE_SIZE - ((SIZE_OF_DIR_ENTRY + \
380 F2FS_NAME_LEN) * \ 381 F2FS_SLOT_LEN) * \
381 NR_DENTRY_IN_BLOCK + SIZE_OF_DENTRY_BITMAP)) 382 NR_DENTRY_IN_BLOCK + SIZE_OF_DENTRY_BITMAP))
382 383
383/* One directory entry slot representing F2FS_NAME_LEN-sized file name */ 384/* One directory entry slot representing F2FS_SLOT_LEN-sized file name */
384struct f2fs_dir_entry { 385struct f2fs_dir_entry {
385 __le32 hash_code; /* hash code of file name */ 386 __le32 hash_code; /* hash code of file name */
386 __le32 ino; /* inode number */ 387 __le32 ino; /* inode number */
@@ -394,7 +395,7 @@ struct f2fs_dentry_block {
394 __u8 dentry_bitmap[SIZE_OF_DENTRY_BITMAP]; 395 __u8 dentry_bitmap[SIZE_OF_DENTRY_BITMAP];
395 __u8 reserved[SIZE_OF_RESERVED]; 396 __u8 reserved[SIZE_OF_RESERVED];
396 struct f2fs_dir_entry dentry[NR_DENTRY_IN_BLOCK]; 397 struct f2fs_dir_entry dentry[NR_DENTRY_IN_BLOCK];
397 __u8 filename[NR_DENTRY_IN_BLOCK][F2FS_NAME_LEN]; 398 __u8 filename[NR_DENTRY_IN_BLOCK][F2FS_SLOT_LEN];
398} __packed; 399} __packed;
399 400
400/* file types used in inode_info->flags */ 401/* file types used in inode_info->flags */