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 ---