Merge tag 'f2fs-for-5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs
Pull f2fs updates from Jaegeuk Kim: "We've continued mainly to fix bugs in this round, as f2fs has been shipped in more devices. Especially, we've focused on stabilizing checkpoint=disable feature, and provided some interfaces for QA. Enhancements: - expose FS_NOCOW_FL for pin_file - run discard jobs at unmount time with timeout - tune discarding thread to avoid idling which consumes power - some checking codes to address vulnerabilities - give random value to i_generation - shutdown with more flags for QA Bug fixes: - clean up stale objects when mount is failed along with checkpoint=disable - fix system being stuck due to wrong count by atomic writes - handle some corrupted disk cases - fix a deadlock in f2fs_read_inline_dir We've also added some minor build error fixes and clean-up patches" * tag 'f2fs-for-5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (53 commits) f2fs: set pin_file under CAP_SYS_ADMIN f2fs: fix to avoid deadlock in f2fs_read_inline_dir() f2fs: fix to adapt small inline xattr space in __find_inline_xattr() f2fs: fix to do sanity check with inode.i_inline_xattr_size f2fs: give some messages for inline_xattr_size f2fs: don't trigger read IO for beyond EOF page f2fs: fix to add refcount once page is tagged PG_private f2fs: remove wrong comment in f2fs_invalidate_page() f2fs: fix to use kvfree instead of kzfree f2fs: print more parameters in trace_f2fs_map_blocks f2fs: trace f2fs_ioc_shutdown f2fs: fix to avoid deadlock of atomic file operations f2fs: fix to dirty inode for i_mode recovery f2fs: give random value to i_generation f2fs: no need to take page lock in readdir f2fs: fix to update iostat correctly in IPU path f2fs: fix encrypted page memory leak f2fs: make fault injection covering __submit_flush_wait() f2fs: fix to retry fill_super only if recovery failed f2fs: silence VM_WARN_ON_ONCE in mempool_alloc ...
This commit is contained in:
@@ -116,6 +116,7 @@ struct f2fs_super_block {
|
||||
/*
|
||||
* For checkpoint
|
||||
*/
|
||||
#define CP_DISABLED_QUICK_FLAG 0x00002000
|
||||
#define CP_DISABLED_FLAG 0x00001000
|
||||
#define CP_QUOTA_NEED_FSCK_FLAG 0x00000800
|
||||
#define CP_LARGE_NAT_BITMAP_FLAG 0x00000400
|
||||
@@ -186,7 +187,7 @@ struct f2fs_orphan_block {
|
||||
struct f2fs_extent {
|
||||
__le32 fofs; /* start file offset of the extent */
|
||||
__le32 blk; /* start block address of the extent */
|
||||
__le32 len; /* lengh of the extent */
|
||||
__le32 len; /* length of the extent */
|
||||
} __packed;
|
||||
|
||||
#define F2FS_NAME_LEN 255
|
||||
@@ -284,7 +285,7 @@ enum {
|
||||
|
||||
struct node_footer {
|
||||
__le32 nid; /* node id */
|
||||
__le32 ino; /* inode nunmber */
|
||||
__le32 ino; /* inode number */
|
||||
__le32 flag; /* include cold/fsync/dentry marks and offset */
|
||||
__le64 cp_ver; /* checkpoint version */
|
||||
__le32 next_blkaddr; /* next node page block address */
|
||||
@@ -489,12 +490,12 @@ typedef __le32 f2fs_hash_t;
|
||||
|
||||
/*
|
||||
* space utilization of regular dentry and inline dentry (w/o extra reservation)
|
||||
* regular dentry inline dentry
|
||||
* bitmap 1 * 27 = 27 1 * 23 = 23
|
||||
* reserved 1 * 3 = 3 1 * 7 = 7
|
||||
* dentry 11 * 214 = 2354 11 * 182 = 2002
|
||||
* filename 8 * 214 = 1712 8 * 182 = 1456
|
||||
* total 4096 3488
|
||||
* regular dentry inline dentry (def) inline dentry (min)
|
||||
* bitmap 1 * 27 = 27 1 * 23 = 23 1 * 1 = 1
|
||||
* reserved 1 * 3 = 3 1 * 7 = 7 1 * 1 = 1
|
||||
* dentry 11 * 214 = 2354 11 * 182 = 2002 11 * 2 = 22
|
||||
* filename 8 * 214 = 1712 8 * 182 = 1456 8 * 2 = 16
|
||||
* total 4096 3488 40
|
||||
*
|
||||
* Note: there are more reserved space in inline dentry than in regular
|
||||
* dentry, when converting inline dentry we should handle this carefully.
|
||||
@@ -506,12 +507,13 @@ typedef __le32 f2fs_hash_t;
|
||||
#define SIZE_OF_RESERVED (PAGE_SIZE - ((SIZE_OF_DIR_ENTRY + \
|
||||
F2FS_SLOT_LEN) * \
|
||||
NR_DENTRY_IN_BLOCK + SIZE_OF_DENTRY_BITMAP))
|
||||
#define MIN_INLINE_DENTRY_SIZE 40 /* just include '.' and '..' entries */
|
||||
|
||||
/* One directory entry slot representing F2FS_SLOT_LEN-sized file name */
|
||||
struct f2fs_dir_entry {
|
||||
__le32 hash_code; /* hash code of file name */
|
||||
__le32 ino; /* inode number */
|
||||
__le16 name_len; /* lengh of file name */
|
||||
__le16 name_len; /* length of file name */
|
||||
__u8 file_type; /* file type */
|
||||
} __packed;
|
||||
|
||||
|
Reference in New Issue
Block a user