f2fs.h (8632987380765dee716d460640aa58d58d52998e) | f2fs.h (a1e09b03e6f5c1d713c88259909137c0fd264ede) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * fs/f2fs/f2fs.h 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 */ 8#ifndef _LINUX_F2FS_H --- 640 unchanged lines hidden (view full) --- 649 */ 650#define FADVISE_COLD_BIT 0x01 651#define FADVISE_LOST_PINO_BIT 0x02 652#define FADVISE_ENCRYPT_BIT 0x04 653#define FADVISE_ENC_NAME_BIT 0x08 654#define FADVISE_KEEP_SIZE_BIT 0x10 655#define FADVISE_HOT_BIT 0x20 656#define FADVISE_VERITY_BIT 0x40 | 1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * fs/f2fs/f2fs.h 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 */ 8#ifndef _LINUX_F2FS_H --- 640 unchanged lines hidden (view full) --- 649 */ 650#define FADVISE_COLD_BIT 0x01 651#define FADVISE_LOST_PINO_BIT 0x02 652#define FADVISE_ENCRYPT_BIT 0x04 653#define FADVISE_ENC_NAME_BIT 0x08 654#define FADVISE_KEEP_SIZE_BIT 0x10 655#define FADVISE_HOT_BIT 0x20 656#define FADVISE_VERITY_BIT 0x40 |
657#define FADVISE_TRUNC_BIT 0x80 |
|
657 658#define FADVISE_MODIFIABLE_BITS (FADVISE_COLD_BIT | FADVISE_HOT_BIT) 659 660#define file_is_cold(inode) is_file(inode, FADVISE_COLD_BIT) 661#define file_set_cold(inode) set_file(inode, FADVISE_COLD_BIT) 662#define file_clear_cold(inode) clear_file(inode, FADVISE_COLD_BIT) 663 664#define file_wrong_pino(inode) is_file(inode, FADVISE_LOST_PINO_BIT) --- 11 unchanged lines hidden (view full) --- 676 677#define file_is_hot(inode) is_file(inode, FADVISE_HOT_BIT) 678#define file_set_hot(inode) set_file(inode, FADVISE_HOT_BIT) 679#define file_clear_hot(inode) clear_file(inode, FADVISE_HOT_BIT) 680 681#define file_is_verity(inode) is_file(inode, FADVISE_VERITY_BIT) 682#define file_set_verity(inode) set_file(inode, FADVISE_VERITY_BIT) 683 | 658 659#define FADVISE_MODIFIABLE_BITS (FADVISE_COLD_BIT | FADVISE_HOT_BIT) 660 661#define file_is_cold(inode) is_file(inode, FADVISE_COLD_BIT) 662#define file_set_cold(inode) set_file(inode, FADVISE_COLD_BIT) 663#define file_clear_cold(inode) clear_file(inode, FADVISE_COLD_BIT) 664 665#define file_wrong_pino(inode) is_file(inode, FADVISE_LOST_PINO_BIT) --- 11 unchanged lines hidden (view full) --- 677 678#define file_is_hot(inode) is_file(inode, FADVISE_HOT_BIT) 679#define file_set_hot(inode) set_file(inode, FADVISE_HOT_BIT) 680#define file_clear_hot(inode) clear_file(inode, FADVISE_HOT_BIT) 681 682#define file_is_verity(inode) is_file(inode, FADVISE_VERITY_BIT) 683#define file_set_verity(inode) set_file(inode, FADVISE_VERITY_BIT) 684 |
685#define file_should_truncate(inode) is_file(inode, FADVISE_TRUNC_BIT) 686#define file_need_truncate(inode) set_file(inode, FADVISE_TRUNC_BIT) 687#define file_dont_truncate(inode) clear_file(inode, FADVISE_TRUNC_BIT) 688 |
|
684#define DEF_DIR_LEVEL 0 685 686enum { 687 GC_FAILURE_PIN, 688 GC_FAILURE_ATOMIC, 689 MAX_GC_FAILURE 690}; 691 --- 18 unchanged lines hidden (view full) --- 710 FI_ATOMIC_COMMIT, /* indicate the state of atomical committing */ 711 FI_VOLATILE_FILE, /* indicate volatile file */ 712 FI_FIRST_BLOCK_WRITTEN, /* indicate #0 data block was written */ 713 FI_DROP_CACHE, /* drop dirty page cache */ 714 FI_DATA_EXIST, /* indicate data exists */ 715 FI_INLINE_DOTS, /* indicate inline dot dentries */ 716 FI_DO_DEFRAG, /* indicate defragment is running */ 717 FI_DIRTY_FILE, /* indicate regular/symlink has dirty pages */ | 689#define DEF_DIR_LEVEL 0 690 691enum { 692 GC_FAILURE_PIN, 693 GC_FAILURE_ATOMIC, 694 MAX_GC_FAILURE 695}; 696 --- 18 unchanged lines hidden (view full) --- 715 FI_ATOMIC_COMMIT, /* indicate the state of atomical committing */ 716 FI_VOLATILE_FILE, /* indicate volatile file */ 717 FI_FIRST_BLOCK_WRITTEN, /* indicate #0 data block was written */ 718 FI_DROP_CACHE, /* drop dirty page cache */ 719 FI_DATA_EXIST, /* indicate data exists */ 720 FI_INLINE_DOTS, /* indicate inline dot dentries */ 721 FI_DO_DEFRAG, /* indicate defragment is running */ 722 FI_DIRTY_FILE, /* indicate regular/symlink has dirty pages */ |
718 FI_NO_PREALLOC, /* indicate skipped preallocated blocks */ | 723 FI_PREALLOCATED_ALL, /* all blocks for write were preallocated */ |
719 FI_HOT_DATA, /* indicate file is hot */ 720 FI_EXTRA_ATTR, /* indicate file has extra attribute */ 721 FI_PROJ_INHERIT, /* indicate file inherits projectid */ 722 FI_PIN_FILE, /* indicate file should not be gced */ 723 FI_ATOMIC_REVOKE_REQUEST, /* request to drop atomic data */ 724 FI_VERITY_IN_PROGRESS, /* building fs-verity Merkle tree */ 725 FI_COMPRESSED_FILE, /* indicate file's data can be compressed */ 726 FI_COMPRESS_CORRUPT, /* indicate compressed cluster is corrupted */ --- 754 unchanged lines hidden (view full) --- 1481 struct inode *inode; /* inode the context belong to */ 1482 pgoff_t cluster_idx; /* cluster index number */ 1483 unsigned int cluster_size; /* page count in cluster */ 1484 unsigned int log_cluster_size; /* log of cluster size */ 1485 struct page **rpages; /* pages store raw data in cluster */ 1486 unsigned int nr_rpages; /* total page number in rpages */ 1487 struct page **cpages; /* pages store compressed data in cluster */ 1488 unsigned int nr_cpages; /* total page number in cpages */ | 724 FI_HOT_DATA, /* indicate file is hot */ 725 FI_EXTRA_ATTR, /* indicate file has extra attribute */ 726 FI_PROJ_INHERIT, /* indicate file inherits projectid */ 727 FI_PIN_FILE, /* indicate file should not be gced */ 728 FI_ATOMIC_REVOKE_REQUEST, /* request to drop atomic data */ 729 FI_VERITY_IN_PROGRESS, /* building fs-verity Merkle tree */ 730 FI_COMPRESSED_FILE, /* indicate file's data can be compressed */ 731 FI_COMPRESS_CORRUPT, /* indicate compressed cluster is corrupted */ --- 754 unchanged lines hidden (view full) --- 1486 struct inode *inode; /* inode the context belong to */ 1487 pgoff_t cluster_idx; /* cluster index number */ 1488 unsigned int cluster_size; /* page count in cluster */ 1489 unsigned int log_cluster_size; /* log of cluster size */ 1490 struct page **rpages; /* pages store raw data in cluster */ 1491 unsigned int nr_rpages; /* total page number in rpages */ 1492 struct page **cpages; /* pages store compressed data in cluster */ 1493 unsigned int nr_cpages; /* total page number in cpages */ |
1494 unsigned int valid_nr_cpages; /* valid page number in cpages */ |
|
1489 void *rbuf; /* virtual mapped address on rpages */ 1490 struct compress_data *cbuf; /* virtual mapped address on cpages */ 1491 size_t rlen; /* valid data length in rbuf */ 1492 size_t clen; /* valid data length in cbuf */ 1493 void *private; /* payload buffer for specified compression algorithm */ 1494 void *private2; /* extra payload buffer */ 1495}; 1496 --- 299 unchanged lines hidden (view full) --- 1796 unsigned int iostat_period_ms; 1797 1798 /* For io latency related statistics info in one iostat period */ 1799 spinlock_t iostat_lat_lock; 1800 struct iostat_lat_info *iostat_io_lat; 1801#endif 1802}; 1803 | 1495 void *rbuf; /* virtual mapped address on rpages */ 1496 struct compress_data *cbuf; /* virtual mapped address on cpages */ 1497 size_t rlen; /* valid data length in rbuf */ 1498 size_t clen; /* valid data length in cbuf */ 1499 void *private; /* payload buffer for specified compression algorithm */ 1500 void *private2; /* extra payload buffer */ 1501}; 1502 --- 299 unchanged lines hidden (view full) --- 1802 unsigned int iostat_period_ms; 1803 1804 /* For io latency related statistics info in one iostat period */ 1805 spinlock_t iostat_lat_lock; 1806 struct iostat_lat_info *iostat_io_lat; 1807#endif 1808}; 1809 |
1804struct f2fs_private_dio { 1805 struct inode *inode; 1806 void *orig_private; 1807 bio_end_io_t *orig_end_io; 1808 bool write; 1809}; 1810 | |
1811#ifdef CONFIG_F2FS_FAULT_INJECTION 1812#define f2fs_show_injection_info(sbi, type) \ 1813 printk_ratelimited("%sF2FS-fs (%s) : inject %s in %s of %pS\n", \ 1814 KERN_INFO, sbi->sb->s_id, \ 1815 f2fs_fault_name[type], \ 1816 __func__, __builtin_return_address(0)) 1817static inline bool time_to_inject(struct f2fs_sb_info *sbi, int type) 1818{ --- 1790 unchanged lines hidden (view full) --- 3609struct block_device *f2fs_target_device(struct f2fs_sb_info *sbi, 3610 block_t blk_addr, struct bio *bio); 3611int f2fs_target_device_index(struct f2fs_sb_info *sbi, block_t blkaddr); 3612void f2fs_set_data_blkaddr(struct dnode_of_data *dn); 3613void f2fs_update_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr); 3614int f2fs_reserve_new_blocks(struct dnode_of_data *dn, blkcnt_t count); 3615int f2fs_reserve_new_block(struct dnode_of_data *dn); 3616int f2fs_get_block(struct dnode_of_data *dn, pgoff_t index); | 1810#ifdef CONFIG_F2FS_FAULT_INJECTION 1811#define f2fs_show_injection_info(sbi, type) \ 1812 printk_ratelimited("%sF2FS-fs (%s) : inject %s in %s of %pS\n", \ 1813 KERN_INFO, sbi->sb->s_id, \ 1814 f2fs_fault_name[type], \ 1815 __func__, __builtin_return_address(0)) 1816static inline bool time_to_inject(struct f2fs_sb_info *sbi, int type) 1817{ --- 1790 unchanged lines hidden (view full) --- 3608struct block_device *f2fs_target_device(struct f2fs_sb_info *sbi, 3609 block_t blk_addr, struct bio *bio); 3610int f2fs_target_device_index(struct f2fs_sb_info *sbi, block_t blkaddr); 3611void f2fs_set_data_blkaddr(struct dnode_of_data *dn); 3612void f2fs_update_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr); 3613int f2fs_reserve_new_blocks(struct dnode_of_data *dn, blkcnt_t count); 3614int f2fs_reserve_new_block(struct dnode_of_data *dn); 3615int f2fs_get_block(struct dnode_of_data *dn, pgoff_t index); |
3617int f2fs_preallocate_blocks(struct kiocb *iocb, struct iov_iter *from); | |
3618int f2fs_reserve_block(struct dnode_of_data *dn, pgoff_t index); 3619struct page *f2fs_get_read_data_page(struct inode *inode, pgoff_t index, 3620 int op_flags, bool for_write); 3621struct page *f2fs_find_data_page(struct inode *inode, pgoff_t index); 3622struct page *f2fs_get_lock_data_page(struct inode *inode, pgoff_t index, 3623 bool for_write); 3624struct page *f2fs_get_new_data_page(struct inode *inode, 3625 struct page *ipage, pgoff_t index, bool new_i_size); --- 6 unchanged lines hidden (view full) --- 3632int f2fs_encrypt_one_page(struct f2fs_io_info *fio); 3633bool f2fs_should_update_inplace(struct inode *inode, struct f2fs_io_info *fio); 3634bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio); 3635int f2fs_write_single_data_page(struct page *page, int *submitted, 3636 struct bio **bio, sector_t *last_block, 3637 struct writeback_control *wbc, 3638 enum iostat_type io_type, 3639 int compr_blocks, bool allow_balance); | 3616int f2fs_reserve_block(struct dnode_of_data *dn, pgoff_t index); 3617struct page *f2fs_get_read_data_page(struct inode *inode, pgoff_t index, 3618 int op_flags, bool for_write); 3619struct page *f2fs_find_data_page(struct inode *inode, pgoff_t index); 3620struct page *f2fs_get_lock_data_page(struct inode *inode, pgoff_t index, 3621 bool for_write); 3622struct page *f2fs_get_new_data_page(struct inode *inode, 3623 struct page *ipage, pgoff_t index, bool new_i_size); --- 6 unchanged lines hidden (view full) --- 3630int f2fs_encrypt_one_page(struct f2fs_io_info *fio); 3631bool f2fs_should_update_inplace(struct inode *inode, struct f2fs_io_info *fio); 3632bool f2fs_should_update_outplace(struct inode *inode, struct f2fs_io_info *fio); 3633int f2fs_write_single_data_page(struct page *page, int *submitted, 3634 struct bio **bio, sector_t *last_block, 3635 struct writeback_control *wbc, 3636 enum iostat_type io_type, 3637 int compr_blocks, bool allow_balance); |
3638void f2fs_write_failed(struct inode *inode, loff_t to); |
|
3640void f2fs_invalidate_page(struct page *page, unsigned int offset, 3641 unsigned int length); 3642int f2fs_release_page(struct page *page, gfp_t wait); 3643#ifdef CONFIG_MIGRATION 3644int f2fs_migrate_page(struct address_space *mapping, struct page *newpage, 3645 struct page *page, enum migrate_mode mode); 3646#endif 3647bool f2fs_overwrite_io(struct inode *inode, loff_t pos, size_t len); 3648void f2fs_clear_page_cache_dirty_tag(struct page *page); 3649int f2fs_init_post_read_processing(void); 3650void f2fs_destroy_post_read_processing(void); 3651int f2fs_init_post_read_wq(struct f2fs_sb_info *sbi); 3652void f2fs_destroy_post_read_wq(struct f2fs_sb_info *sbi); | 3639void f2fs_invalidate_page(struct page *page, unsigned int offset, 3640 unsigned int length); 3641int f2fs_release_page(struct page *page, gfp_t wait); 3642#ifdef CONFIG_MIGRATION 3643int f2fs_migrate_page(struct address_space *mapping, struct page *newpage, 3644 struct page *page, enum migrate_mode mode); 3645#endif 3646bool f2fs_overwrite_io(struct inode *inode, loff_t pos, size_t len); 3647void f2fs_clear_page_cache_dirty_tag(struct page *page); 3648int f2fs_init_post_read_processing(void); 3649void f2fs_destroy_post_read_processing(void); 3650int f2fs_init_post_read_wq(struct f2fs_sb_info *sbi); 3651void f2fs_destroy_post_read_wq(struct f2fs_sb_info *sbi); |
3652extern const struct iomap_ops f2fs_iomap_ops; |
|
3653 3654/* 3655 * gc.c 3656 */ 3657int f2fs_start_gc_thread(struct f2fs_sb_info *sbi); 3658void f2fs_stop_gc_thread(struct f2fs_sb_info *sbi); 3659block_t f2fs_start_bidx_of_node(unsigned int node_ofs, struct inode *inode); 3660int f2fs_gc(struct f2fs_sb_info *sbi, bool sync, bool background, bool force, --- 747 unchanged lines hidden --- | 3653 3654/* 3655 * gc.c 3656 */ 3657int f2fs_start_gc_thread(struct f2fs_sb_info *sbi); 3658void f2fs_stop_gc_thread(struct f2fs_sb_info *sbi); 3659block_t f2fs_start_bidx_of_node(unsigned int node_ofs, struct inode *inode); 3660int f2fs_gc(struct f2fs_sb_info *sbi, bool sync, bool background, bool force, --- 747 unchanged lines hidden --- |