f2fs.h (5b0e95398e2bcc18e871758221cc712be4a0a39a) | f2fs.h (2ef79ecb5e906d87475d3e0c49b22425499a89f3) |
---|---|
1/* 2 * fs/f2fs/f2fs.h 3 * 4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 5 * http://www.samsung.com/ 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as --- 603 unchanged lines hidden (view full) --- 612#define file_keep_isize(inode) is_file(inode, FADVISE_KEEP_SIZE_BIT) 613#define file_set_keep_isize(inode) set_file(inode, FADVISE_KEEP_SIZE_BIT) 614#define file_is_hot(inode) is_file(inode, FADVISE_HOT_BIT) 615#define file_set_hot(inode) set_file(inode, FADVISE_HOT_BIT) 616#define file_clear_hot(inode) clear_file(inode, FADVISE_HOT_BIT) 617 618#define DEF_DIR_LEVEL 0 619 | 1/* 2 * fs/f2fs/f2fs.h 3 * 4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 5 * http://www.samsung.com/ 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as --- 603 unchanged lines hidden (view full) --- 612#define file_keep_isize(inode) is_file(inode, FADVISE_KEEP_SIZE_BIT) 613#define file_set_keep_isize(inode) set_file(inode, FADVISE_KEEP_SIZE_BIT) 614#define file_is_hot(inode) is_file(inode, FADVISE_HOT_BIT) 615#define file_set_hot(inode) set_file(inode, FADVISE_HOT_BIT) 616#define file_clear_hot(inode) clear_file(inode, FADVISE_HOT_BIT) 617 618#define DEF_DIR_LEVEL 0 619 |
620enum { 621 GC_FAILURE_PIN, 622 GC_FAILURE_ATOMIC, 623 MAX_GC_FAILURE 624}; 625 |
|
620struct f2fs_inode_info { 621 struct inode vfs_inode; /* serve a vfs inode */ 622 unsigned long i_flags; /* keep an inode flags for ioctl */ 623 unsigned char i_advise; /* use to give file attribute hints */ 624 unsigned char i_dir_level; /* use for dentry level for large dir */ | 626struct f2fs_inode_info { 627 struct inode vfs_inode; /* serve a vfs inode */ 628 unsigned long i_flags; /* keep an inode flags for ioctl */ 629 unsigned char i_advise; /* use to give file attribute hints */ 630 unsigned char i_dir_level; /* use for dentry level for large dir */ |
625 union { 626 unsigned int i_current_depth; /* only for directory depth */ 627 unsigned short i_gc_failures; /* only for regular file */ 628 }; | 631 unsigned int i_current_depth; /* only for directory depth */ 632 /* for gc failure statistic */ 633 unsigned int i_gc_failures[MAX_GC_FAILURE]; |
629 unsigned int i_pino; /* parent inode number */ 630 umode_t i_acl_mode; /* keep file acl mode temporarily */ 631 632 /* Use below internally in f2fs*/ 633 unsigned long flags; /* use to pass per-file flags */ 634 struct rw_semaphore i_sem; /* protect fi info */ 635 atomic_t dirty_pages; /* # of dirty pages */ 636 f2fs_hash_t chash; /* hash value of given file name */ --- 563 unchanged lines hidden (view full) --- 1200 1201 struct f2fs_mount_info mount_opt; /* mount options */ 1202 1203 /* for cleaning operations */ 1204 struct mutex gc_mutex; /* mutex for GC */ 1205 struct f2fs_gc_kthread *gc_thread; /* GC thread */ 1206 unsigned int cur_victim_sec; /* current victim section num */ 1207 unsigned int gc_mode; /* current GC state */ | 634 unsigned int i_pino; /* parent inode number */ 635 umode_t i_acl_mode; /* keep file acl mode temporarily */ 636 637 /* Use below internally in f2fs*/ 638 unsigned long flags; /* use to pass per-file flags */ 639 struct rw_semaphore i_sem; /* protect fi info */ 640 atomic_t dirty_pages; /* # of dirty pages */ 641 f2fs_hash_t chash; /* hash value of given file name */ --- 563 unchanged lines hidden (view full) --- 1205 1206 struct f2fs_mount_info mount_opt; /* mount options */ 1207 1208 /* for cleaning operations */ 1209 struct mutex gc_mutex; /* mutex for GC */ 1210 struct f2fs_gc_kthread *gc_thread; /* GC thread */ 1211 unsigned int cur_victim_sec; /* current victim section num */ 1212 unsigned int gc_mode; /* current GC state */ |
1213 /* for skip statistic */ 1214 unsigned long long skipped_atomic_files[2]; /* FG_GC and BG_GC */ |
|
1208 1209 /* threshold for gc trials on pinned files */ 1210 u64 gc_pin_file_threshold; 1211 1212 /* maximum # of trials to find a victim segment for SSR and GC */ 1213 unsigned int max_victim_search; 1214 1215 /* --- 1027 unchanged lines hidden (view full) --- 2243 FI_INLINE_DOTS, /* indicate inline dot dentries */ 2244 FI_DO_DEFRAG, /* indicate defragment is running */ 2245 FI_DIRTY_FILE, /* indicate regular/symlink has dirty pages */ 2246 FI_NO_PREALLOC, /* indicate skipped preallocated blocks */ 2247 FI_HOT_DATA, /* indicate file is hot */ 2248 FI_EXTRA_ATTR, /* indicate file has extra attribute */ 2249 FI_PROJ_INHERIT, /* indicate file inherits projectid */ 2250 FI_PIN_FILE, /* indicate file should not be gced */ | 1215 1216 /* threshold for gc trials on pinned files */ 1217 u64 gc_pin_file_threshold; 1218 1219 /* maximum # of trials to find a victim segment for SSR and GC */ 1220 unsigned int max_victim_search; 1221 1222 /* --- 1027 unchanged lines hidden (view full) --- 2250 FI_INLINE_DOTS, /* indicate inline dot dentries */ 2251 FI_DO_DEFRAG, /* indicate defragment is running */ 2252 FI_DIRTY_FILE, /* indicate regular/symlink has dirty pages */ 2253 FI_NO_PREALLOC, /* indicate skipped preallocated blocks */ 2254 FI_HOT_DATA, /* indicate file is hot */ 2255 FI_EXTRA_ATTR, /* indicate file has extra attribute */ 2256 FI_PROJ_INHERIT, /* indicate file inherits projectid */ 2257 FI_PIN_FILE, /* indicate file should not be gced */ |
2258 FI_ATOMIC_REVOKE_REQUEST, /* request to drop atomic data */ |
|
2251}; 2252 2253static inline void __mark_inode_dirty_flag(struct inode *inode, 2254 int flag, bool set) 2255{ 2256 switch (flag) { 2257 case FI_INLINE_XATTR: 2258 case FI_INLINE_DATA: --- 82 unchanged lines hidden (view full) --- 2341{ 2342 F2FS_I(inode)->i_current_depth = depth; 2343 f2fs_mark_inode_dirty_sync(inode, true); 2344} 2345 2346static inline void f2fs_i_gc_failures_write(struct inode *inode, 2347 unsigned int count) 2348{ | 2259}; 2260 2261static inline void __mark_inode_dirty_flag(struct inode *inode, 2262 int flag, bool set) 2263{ 2264 switch (flag) { 2265 case FI_INLINE_XATTR: 2266 case FI_INLINE_DATA: --- 82 unchanged lines hidden (view full) --- 2349{ 2350 F2FS_I(inode)->i_current_depth = depth; 2351 f2fs_mark_inode_dirty_sync(inode, true); 2352} 2353 2354static inline void f2fs_i_gc_failures_write(struct inode *inode, 2355 unsigned int count) 2356{ |
2349 F2FS_I(inode)->i_gc_failures = count; | 2357 F2FS_I(inode)->i_gc_failures[GC_FAILURE_PIN] = count; |
2350 f2fs_mark_inode_dirty_sync(inode, true); 2351} 2352 2353static inline void f2fs_i_xnid_write(struct inode *inode, nid_t xnid) 2354{ 2355 F2FS_I(inode)->i_xattr_nid = xnid; 2356 f2fs_mark_inode_dirty_sync(inode, true); 2357} --- 454 unchanged lines hidden (view full) --- 2812int __init create_node_manager_caches(void); 2813void destroy_node_manager_caches(void); 2814 2815/* 2816 * segment.c 2817 */ 2818bool need_SSR(struct f2fs_sb_info *sbi); 2819void register_inmem_page(struct inode *inode, struct page *page); | 2358 f2fs_mark_inode_dirty_sync(inode, true); 2359} 2360 2361static inline void f2fs_i_xnid_write(struct inode *inode, nid_t xnid) 2362{ 2363 F2FS_I(inode)->i_xattr_nid = xnid; 2364 f2fs_mark_inode_dirty_sync(inode, true); 2365} --- 454 unchanged lines hidden (view full) --- 2820int __init create_node_manager_caches(void); 2821void destroy_node_manager_caches(void); 2822 2823/* 2824 * segment.c 2825 */ 2826bool need_SSR(struct f2fs_sb_info *sbi); 2827void register_inmem_page(struct inode *inode, struct page *page); |
2820void drop_inmem_pages_all(struct f2fs_sb_info *sbi); | 2828void drop_inmem_pages_all(struct f2fs_sb_info *sbi, bool gc_failure); |
2821void drop_inmem_pages(struct inode *inode); 2822void drop_inmem_page(struct inode *inode, struct page *page); 2823int commit_inmem_pages(struct inode *inode); 2824void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need); 2825void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi); 2826int f2fs_issue_flush(struct f2fs_sb_info *sbi, nid_t ino); 2827int create_flush_cmd_control(struct f2fs_sb_info *sbi); 2828int f2fs_flush_device_cache(struct f2fs_sb_info *sbi); --- 174 unchanged lines hidden (view full) --- 3003 int util_free, util_valid, util_invalid; 3004 int rsvd_segs, overp_segs; 3005 int dirty_count, node_pages, meta_pages; 3006 int prefree_count, call_count, cp_count, bg_cp_count; 3007 int tot_segs, node_segs, data_segs, free_segs, free_secs; 3008 int bg_node_segs, bg_data_segs; 3009 int tot_blks, data_blks, node_blks; 3010 int bg_data_blks, bg_node_blks; | 2829void drop_inmem_pages(struct inode *inode); 2830void drop_inmem_page(struct inode *inode, struct page *page); 2831int commit_inmem_pages(struct inode *inode); 2832void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need); 2833void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi); 2834int f2fs_issue_flush(struct f2fs_sb_info *sbi, nid_t ino); 2835int create_flush_cmd_control(struct f2fs_sb_info *sbi); 2836int f2fs_flush_device_cache(struct f2fs_sb_info *sbi); --- 174 unchanged lines hidden (view full) --- 3011 int util_free, util_valid, util_invalid; 3012 int rsvd_segs, overp_segs; 3013 int dirty_count, node_pages, meta_pages; 3014 int prefree_count, call_count, cp_count, bg_cp_count; 3015 int tot_segs, node_segs, data_segs, free_segs, free_secs; 3016 int bg_node_segs, bg_data_segs; 3017 int tot_blks, data_blks, node_blks; 3018 int bg_data_blks, bg_node_blks; |
3019 unsigned long long skipped_atomic_files[2]; |
|
3011 int curseg[NR_CURSEG_TYPE]; 3012 int cursec[NR_CURSEG_TYPE]; 3013 int curzone[NR_CURSEG_TYPE]; 3014 3015 unsigned int segment_count[2]; 3016 unsigned int block_count[2]; 3017 unsigned int inplace_count; 3018 unsigned long long base_mem, cache_mem, page_mem; --- 336 unchanged lines hidden --- | 3020 int curseg[NR_CURSEG_TYPE]; 3021 int cursec[NR_CURSEG_TYPE]; 3022 int curzone[NR_CURSEG_TYPE]; 3023 3024 unsigned int segment_count[2]; 3025 unsigned int block_count[2]; 3026 unsigned int inplace_count; 3027 unsigned long long base_mem, cache_mem, page_mem; --- 336 unchanged lines hidden --- |