Lines Matching refs:inode

309 static void swap_inode_data(struct inode *inode1, struct inode *inode2)  in swap_inode_data()
337 void ext4_reset_inode_seed(struct inode *inode) in ext4_reset_inode_seed() argument
339 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_reset_inode_seed()
340 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); in ext4_reset_inode_seed()
341 __le32 inum = cpu_to_le32(inode->i_ino); in ext4_reset_inode_seed()
342 __le32 gen = cpu_to_le32(inode->i_generation); in ext4_reset_inode_seed()
345 if (!ext4_has_metadata_csum(inode->i_sb)) in ext4_reset_inode_seed()
364 struct inode *inode) in swap_inode_boot_loader() argument
368 struct inode *inode_bl; in swap_inode_boot_loader()
382 lock_two_nondirectories(inode, inode_bl); in swap_inode_boot_loader()
384 if (inode->i_nlink != 1 || !S_ISREG(inode->i_mode) || in swap_inode_boot_loader()
385 IS_SWAPFILE(inode) || IS_ENCRYPTED(inode) || in swap_inode_boot_loader()
386 (EXT4_I(inode)->i_flags & EXT4_JOURNAL_DATA_FL) || in swap_inode_boot_loader()
387 ext4_has_inline_data(inode)) { in swap_inode_boot_loader()
392 if (IS_RDONLY(inode) || IS_APPEND(inode) || IS_IMMUTABLE(inode) || in swap_inode_boot_loader()
393 !inode_owner_or_capable(idmap, inode) || in swap_inode_boot_loader()
399 filemap_invalidate_lock(inode->i_mapping); in swap_inode_boot_loader()
400 err = filemap_write_and_wait(inode->i_mapping); in swap_inode_boot_loader()
409 inode_dio_wait(inode); in swap_inode_boot_loader()
412 truncate_inode_pages(&inode->i_data, 0); in swap_inode_boot_loader()
423 ext4_double_down_write_data_sem(inode, inode_bl); in swap_inode_boot_loader()
443 err = dquot_initialize(inode); in swap_inode_boot_loader()
447 size = (qsize_t)(inode->i_blocks) * (1 << 9) + inode->i_bytes; in swap_inode_boot_loader()
450 swap_inode_data(inode, inode_bl); in swap_inode_boot_loader()
452 inode_set_ctime_current(inode); in swap_inode_boot_loader()
454 inode_inc_iversion(inode); in swap_inode_boot_loader()
456 inode->i_generation = get_random_u32(); in swap_inode_boot_loader()
458 ext4_reset_inode_seed(inode); in swap_inode_boot_loader()
461 ext4_discard_preallocations(inode, 0); in swap_inode_boot_loader()
463 err = ext4_mark_inode_dirty(handle, inode); in swap_inode_boot_loader()
466 ext4_warning(inode->i_sb, in swap_inode_boot_loader()
468 inode->i_ino, err); in swap_inode_boot_loader()
470 swap_inode_data(inode, inode_bl); in swap_inode_boot_loader()
471 ext4_mark_inode_dirty(handle, inode); in swap_inode_boot_loader()
477 inode_bl->i_blocks = inode->i_blocks; in swap_inode_boot_loader()
478 inode_bl->i_bytes = inode->i_bytes; in swap_inode_boot_loader()
490 dquot_free_space(inode, diff); in swap_inode_boot_loader()
492 err = dquot_alloc_space(inode, -1 * diff); in swap_inode_boot_loader()
499 swap_inode_data(inode, inode_bl); in swap_inode_boot_loader()
500 ext4_mark_inode_dirty(handle, inode); in swap_inode_boot_loader()
506 ext4_double_up_write_data_sem(inode, inode_bl); in swap_inode_boot_loader()
509 filemap_invalidate_unlock(inode->i_mapping); in swap_inode_boot_loader()
511 unlock_two_nondirectories(inode, inode_bl); in swap_inode_boot_loader()
521 static int ext4_ioctl_check_immutable(struct inode *inode, __u32 new_projid, in ext4_ioctl_check_immutable() argument
524 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_ioctl_check_immutable()
532 if (ext4_has_feature_project(inode->i_sb) && in ext4_ioctl_check_immutable()
539 static void ext4_dax_dontcache(struct inode *inode, unsigned int flags) in ext4_dax_dontcache() argument
541 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_dax_dontcache()
543 if (S_ISDIR(inode->i_mode)) in ext4_dax_dontcache()
546 if (test_opt2(inode->i_sb, DAX_NEVER) || in ext4_dax_dontcache()
547 test_opt(inode->i_sb, DAX_ALWAYS)) in ext4_dax_dontcache()
551 d_mark_dontcache(inode); in ext4_dax_dontcache()
554 static bool dax_compatible(struct inode *inode, unsigned int oldflags, in dax_compatible() argument
558 if (S_ISDIR(inode->i_mode)) { in dax_compatible()
565 ext4_test_inode_state(inode, in dax_compatible()
577 static int ext4_ioctl_setflags(struct inode *inode, in ext4_ioctl_setflags() argument
580 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_ioctl_setflags()
585 struct super_block *sb = inode->i_sb; in ext4_ioctl_setflags()
588 if (ext4_is_quota_file(inode)) in ext4_ioctl_setflags()
601 if (!dax_compatible(inode, oldflags, flags)) { in ext4_ioctl_setflags()
615 if (!S_ISDIR(inode->i_mode)) { in ext4_ioctl_setflags()
620 if (!ext4_empty_dir(inode)) { in ext4_ioctl_setflags()
632 if (S_ISREG(inode->i_mode) && !IS_IMMUTABLE(inode) && in ext4_ioctl_setflags()
634 inode_dio_wait(inode); in ext4_ioctl_setflags()
635 err = filemap_write_and_wait(inode->i_mapping); in ext4_ioctl_setflags()
640 handle = ext4_journal_start(inode, EXT4_HT_INODE, 1); in ext4_ioctl_setflags()
645 if (IS_SYNC(inode)) in ext4_ioctl_setflags()
647 err = ext4_reserve_inode_write(handle, inode, &iloc); in ext4_ioctl_setflags()
651 ext4_dax_dontcache(inode, flags); in ext4_ioctl_setflags()
660 ext4_set_inode_flag(inode, i); in ext4_ioctl_setflags()
662 ext4_clear_inode_flag(inode, i); in ext4_ioctl_setflags()
665 ext4_set_inode_flags(inode, false); in ext4_ioctl_setflags()
667 inode_set_ctime_current(inode); in ext4_ioctl_setflags()
668 inode_inc_iversion(inode); in ext4_ioctl_setflags()
670 err = ext4_mark_iloc_dirty(handle, inode, &iloc); in ext4_ioctl_setflags()
681 if (IS_DAX(inode)) { in ext4_ioctl_setflags()
686 err = ext4_change_inode_journal_flag(inode, in ext4_ioctl_setflags()
693 err = ext4_ext_migrate(inode); in ext4_ioctl_setflags()
695 err = ext4_ind_migrate(inode); in ext4_ioctl_setflags()
703 static int ext4_ioctl_setproject(struct inode *inode, __u32 projid) in ext4_ioctl_setproject() argument
705 struct super_block *sb = inode->i_sb; in ext4_ioctl_setproject()
706 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_ioctl_setproject()
726 if (projid_eq(kprojid, EXT4_I(inode)->i_projid)) in ext4_ioctl_setproject()
731 if (ext4_is_quota_file(inode)) in ext4_ioctl_setproject()
734 err = dquot_initialize(inode); in ext4_ioctl_setproject()
738 err = ext4_get_inode_loc(inode, &iloc); in ext4_ioctl_setproject()
744 err = ext4_expand_extra_isize(inode, in ext4_ioctl_setproject()
753 handle = ext4_journal_start(inode, EXT4_HT_QUOTA, in ext4_ioctl_setproject()
759 err = ext4_reserve_inode_write(handle, inode, &iloc); in ext4_ioctl_setproject()
769 down_read(&EXT4_I(inode)->xattr_sem); in ext4_ioctl_setproject()
770 err = __dquot_transfer(inode, transfer_to); in ext4_ioctl_setproject()
771 up_read(&EXT4_I(inode)->xattr_sem); in ext4_ioctl_setproject()
777 EXT4_I(inode)->i_projid = kprojid; in ext4_ioctl_setproject()
778 inode_set_ctime_current(inode); in ext4_ioctl_setproject()
779 inode_inc_iversion(inode); in ext4_ioctl_setproject()
781 rc = ext4_mark_iloc_dirty(handle, inode, &iloc); in ext4_ioctl_setproject()
789 static int ext4_ioctl_setproject(struct inode *inode, __u32 projid) in ext4_ioctl_setproject() argument
976 struct inode *inode = d_inode(dentry); in ext4_fileattr_get() local
977 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_fileattr_get()
980 if (S_ISREG(inode->i_mode)) in ext4_fileattr_get()
984 if (ext4_has_feature_project(inode->i_sb)) in ext4_fileattr_get()
993 struct inode *inode = d_inode(dentry); in ext4_fileattr_set() local
1007 if (ext4_mask_flags(inode->i_mode, flags) != flags) in ext4_fileattr_set()
1009 err = ext4_ioctl_check_immutable(inode, fa->fsx_projid, flags); in ext4_fileattr_set()
1012 err = ext4_ioctl_setflags(inode, flags); in ext4_fileattr_set()
1015 err = ext4_ioctl_setproject(inode, fa->fsx_projid); in ext4_fileattr_set()
1028 struct inode *inode = file_inode(filp); in ext4_ioctl_get_es_cache() local
1041 error = ext4_get_es_cache(inode, &fieinfo, fiemap.fm_start, in ext4_ioctl_get_es_cache()
1226 struct inode *inode = file_inode(filp); in __ext4_ioctl() local
1227 struct super_block *sb = inode->i_sb; in __ext4_ioctl()
1237 return put_user(inode->i_generation, (int __user *) arg); in __ext4_ioctl()
1245 if (!inode_owner_or_capable(idmap, inode)) in __ext4_ioctl()
1248 if (ext4_has_metadata_csum(inode->i_sb)) { in __ext4_ioctl()
1262 inode_lock(inode); in __ext4_ioctl()
1263 handle = ext4_journal_start(inode, EXT4_HT_INODE, 1); in __ext4_ioctl()
1268 err = ext4_reserve_inode_write(handle, inode, &iloc); in __ext4_ioctl()
1270 inode_set_ctime_current(inode); in __ext4_ioctl()
1271 inode_inc_iversion(inode); in __ext4_ioctl()
1272 inode->i_generation = generation; in __ext4_ioctl()
1273 err = ext4_mark_iloc_dirty(handle, inode, &iloc); in __ext4_ioctl()
1278 inode_unlock(inode); in __ext4_ioctl()
1351 } else if (IS_DAX(inode)) { in __ext4_ioctl()
1387 if (!inode_owner_or_capable(idmap, inode)) in __ext4_ioctl()
1399 inode_lock((inode)); in __ext4_ioctl()
1400 err = ext4_ext_migrate(inode); in __ext4_ioctl()
1401 inode_unlock((inode)); in __ext4_ioctl()
1409 if (!inode_owner_or_capable(idmap, inode)) in __ext4_ioctl()
1415 err = ext4_alloc_da_blocks(inode); in __ext4_ioctl()
1428 err = swap_inode_boot_loader(sb, idmap, inode); in __ext4_ioctl()
1506 return ext4_ext_precache(inode); in __ext4_ioctl()
1553 if (!inode_owner_or_capable(idmap, inode)) in __ext4_ioctl()
1555 ext4_clear_inode_es(inode); in __ext4_ioctl()
1563 if (ext4_test_inode_state(inode, EXT4_STATE_EXT_PRECACHED)) in __ext4_ioctl()
1565 if (ext4_test_inode_state(inode, EXT4_STATE_NEW)) in __ext4_ioctl()
1567 if (ext4_test_inode_state(inode, EXT4_STATE_NEWENTRY)) in __ext4_ioctl()
1569 if (ext4_test_inode_state(inode, EXT4_STATE_DA_ALLOC_CLOSE)) in __ext4_ioctl()