Lines Matching defs:inode
224 /* target inode for block we're allocating */
225 struct inode *inode;
228 /* logical block in target inode */
292 struct inode *inode; /* file being written to */
310 #define EXT4_BAD_INO 1 /* Bad blocks inode */
311 #define EXT4_ROOT_INO 2 /* Root inode */
312 #define EXT4_USR_QUOTA_INO 3 /* User quota inode */
313 #define EXT4_GRP_QUOTA_INO 4 /* Group quota inode */
314 #define EXT4_BOOT_LOADER_INO 5 /* Boot loader inode */
315 #define EXT4_UNDEL_DIR_INO 6 /* Undelete directory inode */
316 #define EXT4_RESIZE_INO 7 /* Reserved group descriptors inode */
317 #define EXT4_JOURNAL_INO 8 /* Journal inode */
319 /* First non-reserved inode for old ext4 filesystems */
492 #define EXT4_VERITY_FL 0x00100000 /* Verity protected inode */
554 /* Mask out flags that are inappropriate for the given type of inode. */
591 EXT4_INODE_VERITY = 20, /* Verity protected inode */
595 EXT4_INODE_INLINE_DATA = 28, /* Data in inode. */
674 INODE_BITMAP, /* inode bitmap */
675 INODE_TABLE, /* inode tables */
764 * Structure of an inode on the disk
800 __le16 l_i_checksum_lo;/* crc32c(uuid+inum+inode) LE */
817 __le16 i_checksum_hi; /* crc32c(uuid+inum+inode) BE */
832 * Extended fields will fit into an inode if the filesystem was formatted
837 * the extended inode fields is critical for correct filesystem operation.
838 * This macro checks if a certain field fits in the inode. Note that
839 * inode-size = GOOD_OLD_INODE_SIZE + i_extra_isize
885 #define EXT4_INODE_SET_XTIME_VAL(xtime, inode, raw_inode, ts) \
887 if (EXT4_FITS_IN_INODE(raw_inode, EXT4_I(inode), xtime ## _extra)) { \
894 #define EXT4_INODE_SET_XTIME(xtime, inode, raw_inode) \
895 EXT4_INODE_SET_XTIME_VAL(xtime, inode, raw_inode, (inode)->xtime)
897 #define EXT4_INODE_SET_CTIME(inode, raw_inode) \
898 EXT4_INODE_SET_XTIME_VAL(i_ctime, inode, raw_inode, inode_get_ctime(inode))
905 #define EXT4_INODE_GET_XTIME_VAL(xtime, inode, raw_inode) \
906 (EXT4_FITS_IN_INODE(raw_inode, EXT4_I(inode), xtime ## _extra) ? \
913 #define EXT4_INODE_GET_XTIME(xtime, inode, raw_inode) \
915 (inode)->xtime = EXT4_INODE_GET_XTIME_VAL(xtime, inode, raw_inode); \
918 #define EXT4_INODE_GET_CTIME(inode, raw_inode) \
920 inode_set_ctime_to_ts(inode, \
921 EXT4_INODE_GET_XTIME_VAL(i_ctime, inode, raw_inode)); \
968 * allocate blocks to the quota inode during ext4_map_blocks(), while
969 * holding i_data_sem for a normal (non-quota) inode. Since we don't
970 * do quota tracking for the quota inode, this avoids deadlock (as
975 * I_DATA_SEM_OTHER - Used by move_inode.c for the second normal inode
976 * where the second inode has larger inode number
990 * fourth extended file system inode data in memory
999 * this file's inode. Constant across the lifetime of the inode,
1001 * place a file's data blocks near its inode block, and new inodes
1002 * near to their parent directory's inode.
1044 /* Number of ongoing updates on this inode */
1047 /* Fast commit wait queue for this inode */
1054 * i_disksize keeps track of what the inode size is ON DISK, not
1062 * into the on-disk inode when writing inodes out, instead of i_size.
1072 * ext4_getblock(). In the 2.4 ext2 design, great chunks of inode's
1075 * truncate, the inode and all the metadata blocks *must* be in a
1081 struct inode vfs_inode;
1084 spinlock_t i_raw_lock; /* protects updates to the raw inode */
1088 * struct timespec64 i_{a,c,m}time in the generic inode.
1142 * Transactions that contain inode's metadata needed to complete
1152 /* Precomputed uuid+inum+igen checksum for seeding inode checksums */
1328 __le32 s_first_ino; /* First non-reserved inode */
1329 __le16 s_inode_size; /* size of inode structure */
1349 /*E0*/ __le32 s_journal_inum; /* inode number of journal file */
1359 __le32 s_jnl_blocks[17]; /* Backup of the journal inode */
1380 __le32 s_snapshot_list; /* inode number of the head of the
1385 __le32 s_first_error_ino; /* inode involved in first error */
1390 __le32 s_last_error_ino; /* inode involved in last error */
1396 __le32 s_usr_quota_inum; /* inode for tracking user quota */
1397 __le32 s_grp_quota_inum; /* inode for tracking group quota */
1402 __le32 s_lpf_ino; /* Location of the lost+found inode */
1403 __le32 s_prj_quota_inum; /* inode for tracking project quota */
1486 unsigned long s_itb_per_group; /* Number of inode table blocks per group */
1561 struct inode *s_buddy_cache;
1638 /* Lazy inode table initialization info */
1678 * Barrier between writepages ops and changing any inode's JOURNAL_DATA
1749 static inline struct ext4_inode_info *EXT4_I(struct inode *inode)
1751 return container_of(inode, struct ext4_inode_info, vfs_inode);
1890 EXT4_STATE_NEW, /* inode is newly created */
1891 EXT4_STATE_XATTR, /* has in-inode xattrs */
1896 EXT4_STATE_MAY_INLINE_DATA, /* may have in-inode data */
1905 static inline int ext4_test_inode_##name(struct inode *inode, int bit) \
1907 return test_bit(bit + (offset), &EXT4_I(inode)->i_##field); \
1909 static inline void ext4_set_inode_##name(struct inode *inode, int bit) \
1911 set_bit(bit + (offset), &EXT4_I(inode)->i_##field); \
1913 static inline void ext4_clear_inode_##name(struct inode *inode, int bit) \
1915 clear_bit(bit + (offset), &EXT4_I(inode)->i_##field); \
1920 static inline int ext4_test_inode_flag(struct inode *inode, int bit);
1921 static inline void ext4_set_inode_flag(struct inode *inode, int bit);
1922 static inline void ext4_clear_inode_flag(struct inode *inode, int bit);
1927 static inline int ext4_test_inode_state(struct inode *inode, int bit);
1928 static inline void ext4_set_inode_state(struct inode *inode, int bit);
1929 static inline void ext4_clear_inode_state(struct inode *inode, int bit);
1952 static inline bool ext4_verity_in_progress(struct inode *inode)
1955 ext4_test_inode_state(inode, EXT4_STATE_VERITY_IN_PROGRESS);
1958 #define NEXT_ORPHAN(inode) EXT4_I(inode)->i_dtime
1973 #define EXT4_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */
2036 #define EXT4_FEATURE_INCOMPAT_EA_INODE 0x0400 /* EA in inode */
2040 #define EXT4_FEATURE_INCOMPAT_INLINE_DATA 0x8000 /* data in inode */
2287 __le32 inode; /* Inode number */
2311 __le32 inode; /* Inode number */
2329 static inline bool ext4_hash_in_dirent(const struct inode *inode)
2331 return IS_CASEFOLDED(inode) && IS_ENCRYPTED(inode);
2384 const struct inode *dir)
2507 * Describe an inode's exact location on disk and in memory
2521 static inline bool ext4_is_quota_file(struct inode *inode)
2523 return IS_NOQUOTA(inode) &&
2524 !(EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL);
2566 * Timeout and state flag for lazy initialization inode thread.
2574 * Lazy inode table initialization info
2702 extern ext4_fsblk_t ext4_new_meta_blocks(handle_t *handle, struct inode *inode,
2728 ext4_fsblk_t ext4_inode_to_goal_block(struct inode *);
2731 extern int ext4_fname_setup_ci_filename(struct inode *dir,
2740 int ext4_fname_setup_filename(struct inode *dir, const struct qstr *iname,
2743 int ext4_fname_prepare_lookup(struct inode *dir, struct dentry *dentry,
2751 static inline int ext4_fname_setup_filename(struct inode *dir,
2768 static inline int ext4_fname_prepare_lookup(struct inode *dir,
2791 extern int __ext4_check_dir_entry(const char *, unsigned int, struct inode *,
2804 extern int ext4_find_dest_de(struct inode *dir, struct inode *inode,
2809 void ext4_insert_dentry(struct inode *dir, struct inode *inode,
2813 static inline void ext4_update_dx_flag(struct inode *inode)
2815 if (!ext4_has_feature_dir_index(inode->i_sb) &&
2816 ext4_test_inode_flag(inode, EXT4_INODE_INDEX)) {
2818 WARN_ON_ONCE(ext4_has_feature_metadata_csum(inode->i_sb));
2819 ext4_clear_inode_flag(inode, EXT4_INODE_INDEX);
2833 extern int ext4_check_all_de(struct inode *dir, struct buffer_head *bh,
2840 extern int ext4fs_dirhash(const struct inode *dir, const char *name, int len,
2845 extern struct inode *__ext4_new_inode(struct mnt_idmap *, handle_t *,
2846 struct inode *, umode_t,
2861 extern void ext4_free_inode(handle_t *, struct inode *);
2862 extern struct inode * ext4_orphan_get(struct super_block *, unsigned long);
2873 void ext4_fc_init_inode(struct inode *inode);
2874 void ext4_fc_track_range(handle_t *handle, struct inode *inode, ext4_lblk_t start,
2876 void __ext4_fc_track_unlink(handle_t *handle, struct inode *inode,
2878 void __ext4_fc_track_link(handle_t *handle, struct inode *inode,
2882 void __ext4_fc_track_create(handle_t *handle, struct inode *inode,
2885 void ext4_fc_track_inode(handle_t *handle, struct inode *inode);
2887 void ext4_fc_start_update(struct inode *inode);
2888 void ext4_fc_stop_update(struct inode *inode);
2889 void ext4_fc_del(struct inode *inode);
2907 extern void ext4_discard_preallocations(struct inode *, unsigned int);
2916 extern void ext4_free_blocks(handle_t *handle, struct inode *inode,
2934 /* inode.c */
2935 void ext4_inode_csum_set(struct inode *inode, struct ext4_inode *raw,
2937 int ext4_inode_is_fast_symlink(struct inode *inode);
2938 struct buffer_head *ext4_getblk(handle_t *, struct inode *, ext4_lblk_t, int);
2939 struct buffer_head *ext4_bread(handle_t *, struct inode *, ext4_lblk_t, int);
2940 int ext4_bread_batch(struct inode *inode, ext4_lblk_t block, int bh_count,
2942 int ext4_get_block_unwritten(struct inode *inode, sector_t iblock,
2944 int ext4_get_block(struct inode *inode, sector_t iblock,
2946 int ext4_da_get_block_prep(struct inode *inode, sector_t iblock,
2949 struct inode *inode,
2954 int (*fn)(handle_t *handle, struct inode *inode,
2956 int do_journal_get_write_access(handle_t *handle, struct inode *inode,
2963 EXT4_IGET_SPECIAL = 0x0001, /* OK to iget a system inode */
2965 EXT4_IGET_BAD = 0x0004, /* Allow to iget a bad inode */
2969 extern struct inode *__ext4_iget(struct super_block *sb, unsigned long ino,
2976 extern int ext4_write_inode(struct inode *, struct writeback_control *);
2979 extern u32 ext4_dio_alignment(struct inode *inode);
2982 extern void ext4_evict_inode(struct inode *);
2983 extern void ext4_clear_inode(struct inode *);
2986 extern void ext4_dirty_inode(struct inode *, int);
2987 extern int ext4_change_inode_journal_flag(struct inode *, int);
2988 extern int ext4_get_inode_loc(struct inode *, struct ext4_iloc *);
2991 extern int ext4_inode_attach_jinode(struct inode *inode);
2992 extern int ext4_can_truncate(struct inode *inode);
2993 extern int ext4_truncate(struct inode *);
2994 extern int ext4_break_layouts(struct inode *);
2996 extern void ext4_set_inode_flags(struct inode *, bool init);
2997 extern int ext4_alloc_da_blocks(struct inode *inode);
2998 extern void ext4_set_aops(struct inode *inode);
2999 extern int ext4_writepage_trans_blocks(struct inode *);
3001 extern int ext4_chunk_trans_blocks(struct inode *, int nrblocks);
3002 extern int ext4_zero_partial_blocks(handle_t *handle, struct inode *inode,
3005 extern qsize_t *ext4_get_reserved_space(struct inode *inode);
3006 extern int ext4_get_projid(struct inode *inode, kprojid_t *projid);
3007 extern void ext4_da_release_space(struct inode *inode, int to_free);
3008 extern void ext4_da_update_reserve_space(struct inode *inode,
3010 extern int ext4_issue_zeroout(struct inode *inode, ext4_lblk_t lblk,
3014 extern int ext4_ind_map_blocks(handle_t *handle, struct inode *inode,
3016 extern int ext4_ind_trans_blocks(struct inode *inode, int nrblocks);
3017 extern void ext4_ind_truncate(handle_t *, struct inode *inode);
3018 extern int ext4_ind_remove_space(handle_t *handle, struct inode *inode,
3027 extern void ext4_reset_inode_seed(struct inode *inode);
3032 extern int ext4_ext_migrate(struct inode *);
3033 extern int ext4_ind_migrate(struct inode *inode);
3036 extern int ext4_init_new_dir(handle_t *handle, struct inode *dir,
3037 struct inode *inode);
3038 extern int ext4_dirblock_csum_verify(struct inode *inode,
3045 struct inode *dir,
3049 extern int ext4_generic_delete_entry(struct inode *dir,
3055 extern bool ext4_empty_dir(struct inode *inode);
3099 void __ext4_error_inode(struct inode *, const char *, unsigned int,
3110 void __ext4_warning_inode(const struct inode *inode, const char *function,
3122 #define EXT4_ERROR_INODE(inode, fmt, a...) \
3123 ext4_error_inode((inode), __func__, __LINE__, 0, (fmt), ## a)
3125 #define EXT4_ERROR_INODE_ERR(inode, err, fmt, a...) \
3126 __ext4_error_inode((inode), __func__, __LINE__, 0, (err), (fmt), ## a)
3128 #define ext4_error_inode_block(inode, block, err, fmt, a...) \
3129 __ext4_error_inode((inode), __func__, __LINE__, (block), (err), \
3140 #define ext4_error_inode(inode, func, line, block, fmt, ...) \
3141 __ext4_error_inode(inode, func, line, block, 0, fmt, ##__VA_ARGS__)
3142 #define ext4_error_inode_err(inode, func, line, block, err, fmt, ...) \
3143 __ext4_error_inode((inode), (func), (line), (block), \
3155 #define ext4_warning_inode(inode, fmt, ...) \
3156 __ext4_warning_inode(inode, __func__, __LINE__, fmt, ##__VA_ARGS__)
3167 #define ext4_error_inode(inode, func, line, block, fmt, ...) \
3170 __ext4_error_inode(inode, "", 0, block, 0, " "); \
3172 #define ext4_error_inode_err(inode, func, line, block, err, fmt, ...) \
3175 __ext4_error_inode(inode, "", 0, block, err, " "); \
3197 #define ext4_warning_inode(inode, fmt, ...) \
3200 __ext4_warning_inode(inode, "", 0, " "); \
3366 static inline void ext4_update_i_disksize(struct inode *inode, loff_t newsize)
3368 WARN_ON_ONCE(S_ISREG(inode->i_mode) &&
3369 !inode_is_locked(inode));
3370 down_write(&EXT4_I(inode)->i_data_sem);
3371 if (newsize > EXT4_I(inode)->i_disksize)
3372 WRITE_ONCE(EXT4_I(inode)->i_disksize, newsize);
3373 up_write(&EXT4_I(inode)->i_data_sem);
3377 static inline int ext4_update_inode_size(struct inode *inode, loff_t newsize)
3381 if (newsize > inode->i_size) {
3382 i_size_write(inode, newsize);
3385 if (newsize > EXT4_I(inode)->i_disksize) {
3386 ext4_update_i_disksize(inode, newsize);
3392 int ext4_update_disksize_before_punch(struct inode *inode, loff_t offset,
3510 #define ext4_check_indirect_blockref(inode, bh) \
3511 ext4_check_blockref(__func__, __LINE__, inode, \
3513 EXT4_ADDR_PER_BLOCK((inode)->i_sb))
3515 #define ext4_ind_check_inode(inode) \
3516 ext4_check_blockref(__func__, __LINE__, inode, \
3517 EXT4_I(inode)->i_data, \
3533 extern int ext4_get_max_inline_size(struct inode *inode);
3534 extern int ext4_find_inline_data_nolock(struct inode *inode);
3535 extern int ext4_destroy_inline_data(handle_t *handle, struct inode *inode);
3537 int ext4_readpage_inline(struct inode *inode, struct folio *folio);
3539 struct inode *inode,
3542 int ext4_write_inline_data_end(struct inode *inode, loff_t pos, unsigned len,
3545 struct inode *inode,
3551 struct inode *dir, struct inode *inode);
3553 struct inode *parent,
3554 struct inode *inode);
3559 struct inode *dir, ext4_lblk_t block,
3563 extern struct buffer_head *ext4_find_inline_entry(struct inode *dir,
3568 struct inode *dir,
3572 extern bool empty_inline_dir(struct inode *dir, int *has_inline_data);
3573 extern struct buffer_head *ext4_get_first_inline_block(struct inode *inode,
3576 extern void *ext4_read_inline_link(struct inode *inode);
3579 extern int ext4_inline_data_iomap(struct inode *inode, struct iomap *iomap);
3581 extern int ext4_inline_data_truncate(struct inode *inode, int *has_inline);
3583 extern int ext4_convert_inline_data(struct inode *inode);
3585 static inline int ext4_has_inline_data(struct inode *inode)
3587 return ext4_test_inode_flag(inode, EXT4_INODE_INLINE_DATA) &&
3588 EXT4_I(inode)->i_inline_off;
3595 extern struct ext4_dir_entry_2 *ext4_init_dot_dotdot(struct inode *inode,
3601 extern int ext4_handle_dirty_dirblock(handle_t *handle, struct inode *inode,
3603 extern int __ext4_unlink(struct inode *dir, const struct qstr *d_name,
3604 struct inode *inode, struct dentry *dentry);
3605 extern int __ext4_link(struct inode *dir, struct inode *inode,
3627 extern int ext4_mpage_readpages(struct inode *inode,
3649 extern int ext4_inode_block_valid(struct inode *inode,
3653 struct inode *, __le32 *, unsigned int);
3654 extern int ext4_sb_block_valid(struct super_block *sb, struct inode *inode,
3668 extern void ext4_ext_tree_init(handle_t *handle, struct inode *inode);
3669 extern int ext4_ext_index_trans_blocks(struct inode *inode, int extents);
3670 extern int ext4_ext_map_blocks(handle_t *handle, struct inode *inode,
3672 extern int ext4_ext_truncate(handle_t *, struct inode *);
3673 extern int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start,
3679 extern int ext4_convert_unwritten_extents(handle_t *handle, struct inode *inode,
3683 extern int ext4_map_blocks(handle_t *handle, struct inode *inode,
3685 extern int ext4_ext_calc_credits_for_single_extent(struct inode *inode,
3688 extern int ext4_ext_insert_extent(handle_t *, struct inode *,
3691 extern struct ext4_ext_path *ext4_find_extent(struct inode *, ext4_lblk_t,
3695 extern int ext4_ext_check_inode(struct inode *inode);
3697 extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
3699 extern int ext4_get_es_cache(struct inode *inode,
3702 extern int ext4_ext_precache(struct inode *inode);
3703 extern int ext4_swap_extents(handle_t *handle, struct inode *inode1,
3704 struct inode *inode2, ext4_lblk_t lblk1,
3707 extern int ext4_clu_mapped(struct inode *inode, ext4_lblk_t lclu);
3708 extern int ext4_datasem_ensure_credits(handle_t *handle, struct inode *inode,
3711 extern void ext4_ext_replay_shrink_inode(struct inode *inode, ext4_lblk_t end);
3712 extern int ext4_ext_replay_set_iblocks(struct inode *inode);
3713 extern int ext4_ext_replay_update_ex(struct inode *inode, ext4_lblk_t start,
3715 extern int ext4_ext_clear_bb(struct inode *inode);
3719 extern void ext4_double_down_write_data_sem(struct inode *first,
3720 struct inode *second);
3721 extern void ext4_double_up_write_data_sem(struct inode *orig_inode,
3722 struct inode *donor_inode);
3730 extern ext4_io_end_t *ext4_init_io_end(struct inode *inode, gfp_t flags);
3753 extern int ext4_orphan_add(handle_t *, struct inode *);
3754 extern int ext4_orphan_del(handle_t *, struct inode *);
3766 * Add new method to test whether block and inode bitmaps are properly
3791 static inline void ext4_set_io_unwritten_flag(struct inode *inode,
3796 atomic_inc(&EXT4_I(inode)->i_unwritten);
3802 struct inode *inode = io_end->inode;
3807 if (atomic_dec_and_test(&EXT4_I(inode)->i_unwritten))
3808 wake_up_all(ext4_ioend_wq(inode));