Lines Matching refs:inode

58  * @inode1:     pointer to first inode
59 * @inode2: pointer to second inode
61 static void swap_inode_data(struct inode *inode1, struct inode *inode2)
89 void ext4_reset_inode_seed(struct inode *inode)
91 struct ext4_inode_info *ei = EXT4_I(inode);
92 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
93 __le32 inum = cpu_to_le32(inode->i_ino);
94 __le32 gen = cpu_to_le32(inode->i_generation);
97 if (!ext4_has_metadata_csum(inode->i_sb))
105 * Swap the information from the given @inode and the inode
110 * @inode: the inode to swap with EXT4_BOOT_LOADER_INO
114 struct inode *inode)
118 struct inode *inode_bl;
132 lock_two_nondirectories(inode, inode_bl);
134 if (inode->i_nlink != 1 || !S_ISREG(inode->i_mode) ||
135 IS_SWAPFILE(inode) || IS_ENCRYPTED(inode) ||
136 (EXT4_I(inode)->i_flags & EXT4_JOURNAL_DATA_FL) ||
137 ext4_has_inline_data(inode)) {
142 if (IS_RDONLY(inode) || IS_APPEND(inode) || IS_IMMUTABLE(inode) ||
143 !inode_owner_or_capable(inode) || !capable(CAP_SYS_ADMIN)) {
148 down_write(&EXT4_I(inode)->i_mmap_sem);
149 err = filemap_write_and_wait(inode->i_mapping);
158 inode_dio_wait(inode);
161 truncate_inode_pages(&inode->i_data, 0);
172 ext4_double_down_write_data_sem(inode, inode_bl);
175 /* this inode has never been used as a BOOT_LOADER */
192 err = dquot_initialize(inode);
196 size = (qsize_t)(inode->i_blocks) * (1 << 9) + inode->i_bytes;
199 swap_inode_data(inode, inode_bl);
201 inode->i_ctime = inode_bl->i_ctime = current_time(inode);
203 inode->i_generation = prandom_u32();
205 ext4_reset_inode_seed(inode);
208 ext4_discard_preallocations(inode, 0);
210 err = ext4_mark_inode_dirty(handle, inode);
213 ext4_warning(inode->i_sb,
214 "couldn't mark inode #%lu dirty (err %d)",
215 inode->i_ino, err);
217 swap_inode_data(inode, inode_bl);
218 ext4_mark_inode_dirty(handle, inode);
224 inode_bl->i_blocks = inode->i_blocks;
225 inode_bl->i_bytes = inode->i_bytes;
230 "couldn't mark inode #%lu dirty (err %d)",
235 /* Bootloader inode should not be counted into quota information. */
237 dquot_free_space(inode, diff);
239 err = dquot_alloc_space(inode, -1 * diff);
246 swap_inode_data(inode, inode_bl);
247 ext4_mark_inode_dirty(handle, inode);
254 ext4_double_up_write_data_sem(inode, inode_bl);
257 up_write(&EXT4_I(inode)->i_mmap_sem);
259 unlock_two_nondirectories(inode, inode_bl);
278 * anything else in the inode. Don't error out if we're only trying to set
281 static int ext4_ioctl_check_immutable(struct inode *inode, __u32 new_projid,
284 struct ext4_inode_info *ei = EXT4_I(inode);
292 if (ext4_has_feature_project(inode->i_sb) &&
299 static void ext4_dax_dontcache(struct inode *inode, unsigned int flags)
301 struct ext4_inode_info *ei = EXT4_I(inode);
303 if (S_ISDIR(inode->i_mode))
306 if (test_opt2(inode->i_sb, DAX_NEVER) ||
307 test_opt(inode->i_sb, DAX_ALWAYS))
311 d_mark_dontcache(inode);
314 static bool dax_compatible(struct inode *inode, unsigned int oldflags,
318 if (S_ISDIR(inode->i_mode)) {
325 ext4_test_inode_state(inode,
337 static int ext4_ioctl_setflags(struct inode *inode,
340 struct ext4_inode_info *ei = EXT4_I(inode);
345 struct super_block *sb = inode->i_sb;
348 if (ext4_is_quota_file(inode))
353 err = vfs_ioc_setflags_prepare(inode, oldflags, flags);
366 if (!dax_compatible(inode, oldflags, flags)) {
380 if (!S_ISDIR(inode->i_mode)) {
385 if (!ext4_empty_dir(inode)) {
397 if (S_ISREG(inode->i_mode) && !IS_IMMUTABLE(inode) &&
399 inode_dio_wait(inode);
400 err = filemap_write_and_wait(inode->i_mapping);
405 handle = ext4_journal_start(inode, EXT4_HT_INODE, 1);
410 if (IS_SYNC(inode))
412 err = ext4_reserve_inode_write(handle, inode, &iloc);
416 ext4_dax_dontcache(inode, flags);
425 ext4_set_inode_flag(inode, i);
427 ext4_clear_inode_flag(inode, i);
430 ext4_set_inode_flags(inode, false);
432 inode->i_ctime = current_time(inode);
434 err = ext4_mark_iloc_dirty(handle, inode, &iloc);
443 * S_DAX if the inode is DAX
445 if (IS_DAX(inode)) {
450 err = ext4_change_inode_journal_flag(inode,
457 err = ext4_ext_migrate(inode);
459 err = ext4_ind_migrate(inode);
469 struct inode *inode = file_inode(filp);
470 struct super_block *sb = inode->i_sb;
471 struct ext4_inode_info *ei = EXT4_I(inode);
491 if (projid_eq(kprojid, EXT4_I(inode)->i_projid))
496 if (ext4_is_quota_file(inode))
499 err = dquot_initialize(inode);
503 err = ext4_get_inode_loc(inode, &iloc);
509 err = ext4_expand_extra_isize(inode,
518 handle = ext4_journal_start(inode, EXT4_HT_QUOTA,
524 err = ext4_reserve_inode_write(handle, inode, &iloc);
532 * counts xattr inode references.
534 down_read(&EXT4_I(inode)->xattr_sem);
535 err = __dquot_transfer(inode, transfer_to);
536 up_read(&EXT4_I(inode)->xattr_sem);
542 EXT4_I(inode)->i_projid = kprojid;
543 inode->i_ctime = current_time(inode);
545 rc = ext4_mark_iloc_dirty(handle, inode, &iloc);
781 static void ext4_fill_fsxattr(struct inode *inode, struct fsxattr *fa)
783 struct ext4_inode_info *ei = EXT4_I(inode);
788 if (ext4_has_feature_project(inode->i_sb))
800 struct inode *inode = file_inode(filp);
813 error = ext4_get_es_cache(inode, &fieinfo, fiemap.fm_start,
825 struct inode *inode = file_inode(filp);
826 struct super_block *sb = inode->i_sb;
827 struct ext4_inode_info *ei = EXT4_I(inode);
837 if (S_ISREG(inode->i_mode))
843 if (!inode_owner_or_capable(inode))
858 if (ext4_mask_flags(inode->i_mode, flags) != flags)
865 inode_lock(inode);
866 err = ext4_ioctl_check_immutable(inode,
870 err = ext4_ioctl_setflags(inode, flags);
871 inode_unlock(inode);
877 return put_user(inode->i_generation, (int __user *) arg);
885 if (!inode_owner_or_capable(inode))
888 if (ext4_has_metadata_csum(inode->i_sb)) {
889 ext4_warning(sb, "Setting inode version is not "
902 inode_lock(inode);
903 handle = ext4_journal_start(inode, EXT4_HT_INODE, 1);
908 err = ext4_reserve_inode_write(handle, inode, &iloc);
910 inode->i_ctime = current_time(inode);
911 inode->i_generation = generation;
912 err = ext4_mark_iloc_dirty(handle, inode, &iloc);
917 inode_unlock(inode);
988 } else if (IS_DAX(inode)) {
1024 if (!inode_owner_or_capable(inode))
1034 * inode format to prevent read.
1036 inode_lock((inode));
1037 err = ext4_ext_migrate(inode);
1038 inode_unlock((inode));
1046 if (!inode_owner_or_capable(inode))
1052 err = ext4_alloc_da_blocks(inode);
1065 err = swap_inode_boot_loader(sb, inode);
1142 return ext4_ext_precache(inode);
1229 if (!inode_owner_or_capable(inode))
1231 ext4_clear_inode_es(inode);
1239 if (ext4_test_inode_state(inode, EXT4_STATE_EXT_PRECACHED))
1241 if (ext4_test_inode_state(inode, EXT4_STATE_NEW))
1243 if (ext4_test_inode_state(inode, EXT4_STATE_NEWENTRY))
1245 if (ext4_test_inode_state(inode, EXT4_STATE_DA_ALLOC_CLOSE))
1258 ext4_fill_fsxattr(inode, &fa);
1275 if (!inode_owner_or_capable(inode))
1282 if (ext4_mask_flags(inode->i_mode, flags) != flags)
1289 inode_lock(inode);
1290 ext4_fill_fsxattr(inode, &old_fa);
1291 err = vfs_ioc_fssetxattr_check(inode, &old_fa, &fa);
1296 err = ext4_ioctl_check_immutable(inode, fa.fsx_projid, flags);
1299 err = ext4_ioctl_setflags(inode, flags);
1304 inode_unlock(inode);