Lines Matching refs:inode

98 	struct inode *inode = file_inode(file);  in hugetlbfs_file_mmap()  local
99 struct hugetlbfs_inode_info *info = HUGETLBFS_I(inode); in hugetlbfs_file_mmap()
141 inode_lock(inode); in hugetlbfs_file_mmap()
152 if (inode->i_flags & S_PRIVATE) in hugetlbfs_file_mmap()
155 if (!hugetlb_reserve_pages(inode, in hugetlbfs_file_mmap()
162 if (vma->vm_flags & VM_WRITE && inode->i_size < len) in hugetlbfs_file_mmap()
163 i_size_write(inode, len); in hugetlbfs_file_mmap()
165 inode_unlock(inode); in hugetlbfs_file_mmap()
315 struct inode *inode = mapping->host; in hugetlbfs_read_iter() local
328 isize = i_size_read(inode); in hugetlbfs_read_iter()
588 static bool remove_inode_single_folio(struct hstate *h, struct inode *inode, in remove_inode_single_folio() argument
616 if (unlikely(hugetlb_unreserve_pages(inode, index, in remove_inode_single_folio()
618 hugetlb_fix_reserve_counts(inode); in remove_inode_single_folio()
645 static void remove_inode_hugepages(struct inode *inode, loff_t lstart, in remove_inode_hugepages() argument
648 struct hstate *h = hstate_inode(inode); in remove_inode_hugepages()
649 struct address_space *mapping = &inode->i_data; in remove_inode_hugepages()
670 if (remove_inode_single_folio(h, inode, mapping, folio, in remove_inode_hugepages()
681 (void)hugetlb_unreserve_pages(inode, in remove_inode_hugepages()
686 static void hugetlbfs_evict_inode(struct inode *inode) in hugetlbfs_evict_inode() argument
690 remove_inode_hugepages(inode, 0, LLONG_MAX); in hugetlbfs_evict_inode()
698 resv_map = (struct resv_map *)(&inode->i_data)->i_private_data; in hugetlbfs_evict_inode()
702 clear_inode(inode); in hugetlbfs_evict_inode()
705 static void hugetlb_vmtruncate(struct inode *inode, loff_t offset) in hugetlb_vmtruncate() argument
708 struct address_space *mapping = inode->i_mapping; in hugetlb_vmtruncate()
709 struct hstate *h = hstate_inode(inode); in hugetlb_vmtruncate()
714 i_size_write(inode, offset); in hugetlb_vmtruncate()
720 remove_inode_hugepages(inode, offset, LLONG_MAX); in hugetlb_vmtruncate()
746 static long hugetlbfs_punch_hole(struct inode *inode, loff_t offset, loff_t len) in hugetlbfs_punch_hole() argument
748 struct hugetlbfs_inode_info *info = HUGETLBFS_I(inode); in hugetlbfs_punch_hole()
749 struct address_space *mapping = inode->i_mapping; in hugetlbfs_punch_hole()
750 struct hstate *h = hstate_inode(inode); in hugetlbfs_punch_hole()
760 inode_lock(inode); in hugetlbfs_punch_hole()
764 inode_unlock(inode); in hugetlbfs_punch_hole()
792 remove_inode_hugepages(inode, hole_start, hole_end); in hugetlbfs_punch_hole()
794 inode_unlock(inode); in hugetlbfs_punch_hole()
802 struct inode *inode = file_inode(file); in hugetlbfs_fallocate() local
803 struct hugetlbfs_inode_info *info = HUGETLBFS_I(inode); in hugetlbfs_fallocate()
804 struct address_space *mapping = inode->i_mapping; in hugetlbfs_fallocate()
805 struct hstate *h = hstate_inode(inode); in hugetlbfs_fallocate()
818 return hugetlbfs_punch_hole(inode, offset, len); in hugetlbfs_fallocate()
828 inode_lock(inode); in hugetlbfs_fallocate()
831 error = inode_newsize_ok(inode, offset + len); in hugetlbfs_fallocate()
835 if ((info->seals & F_SEAL_GROW) && offset + len > inode->i_size) { in hugetlbfs_fallocate()
917 if (!(mode & FALLOC_FL_KEEP_SIZE) && offset + len > inode->i_size) in hugetlbfs_fallocate()
918 i_size_write(inode, offset + len); in hugetlbfs_fallocate()
919 inode_set_ctime_current(inode); in hugetlbfs_fallocate()
921 inode_unlock(inode); in hugetlbfs_fallocate()
928 struct inode *inode = d_inode(dentry); in hugetlbfs_setattr() local
929 struct hstate *h = hstate_inode(inode); in hugetlbfs_setattr()
932 struct hugetlbfs_inode_info *info = HUGETLBFS_I(inode); in hugetlbfs_setattr()
939 loff_t oldsize = inode->i_size; in hugetlbfs_setattr()
948 hugetlb_vmtruncate(inode, newsize); in hugetlbfs_setattr()
951 setattr_copy(idmap, inode, attr); in hugetlbfs_setattr()
952 mark_inode_dirty(inode); in hugetlbfs_setattr()
956 static struct inode *hugetlbfs_get_root(struct super_block *sb, in hugetlbfs_get_root()
959 struct inode *inode; in hugetlbfs_get_root() local
961 inode = new_inode(sb); in hugetlbfs_get_root()
962 if (inode) { in hugetlbfs_get_root()
963 inode->i_ino = get_next_ino(); in hugetlbfs_get_root()
964 inode->i_mode = S_IFDIR | ctx->mode; in hugetlbfs_get_root()
965 inode->i_uid = ctx->uid; in hugetlbfs_get_root()
966 inode->i_gid = ctx->gid; in hugetlbfs_get_root()
967 simple_inode_init_ts(inode); in hugetlbfs_get_root()
968 inode->i_op = &hugetlbfs_dir_inode_operations; in hugetlbfs_get_root()
969 inode->i_fop = &simple_dir_operations; in hugetlbfs_get_root()
971 inc_nlink(inode); in hugetlbfs_get_root()
972 lockdep_annotate_inode_mutex_key(inode); in hugetlbfs_get_root()
974 return inode; in hugetlbfs_get_root()
985 static struct inode *hugetlbfs_get_inode(struct super_block *sb, in hugetlbfs_get_inode()
987 struct inode *dir, in hugetlbfs_get_inode()
990 struct inode *inode; in hugetlbfs_get_inode() local
1003 inode = new_inode(sb); in hugetlbfs_get_inode()
1004 if (inode) { in hugetlbfs_get_inode()
1005 struct hugetlbfs_inode_info *info = HUGETLBFS_I(inode); in hugetlbfs_get_inode()
1007 inode->i_ino = get_next_ino(); in hugetlbfs_get_inode()
1008 inode_init_owner(idmap, inode, dir, mode); in hugetlbfs_get_inode()
1009 lockdep_set_class(&inode->i_mapping->i_mmap_rwsem, in hugetlbfs_get_inode()
1011 inode->i_mapping->a_ops = &hugetlbfs_aops; in hugetlbfs_get_inode()
1012 simple_inode_init_ts(inode); in hugetlbfs_get_inode()
1013 inode->i_mapping->i_private_data = resv_map; in hugetlbfs_get_inode()
1017 init_special_inode(inode, mode, dev); in hugetlbfs_get_inode()
1020 inode->i_op = &hugetlbfs_inode_operations; in hugetlbfs_get_inode()
1021 inode->i_fop = &hugetlbfs_file_operations; in hugetlbfs_get_inode()
1024 inode->i_op = &hugetlbfs_dir_inode_operations; in hugetlbfs_get_inode()
1025 inode->i_fop = &simple_dir_operations; in hugetlbfs_get_inode()
1028 inc_nlink(inode); in hugetlbfs_get_inode()
1031 inode->i_op = &page_symlink_inode_operations; in hugetlbfs_get_inode()
1032 inode_nohighmem(inode); in hugetlbfs_get_inode()
1035 lockdep_annotate_inode_mutex_key(inode); in hugetlbfs_get_inode()
1041 return inode; in hugetlbfs_get_inode()
1047 static int hugetlbfs_mknod(struct mnt_idmap *idmap, struct inode *dir, in hugetlbfs_mknod()
1050 struct inode *inode; in hugetlbfs_mknod() local
1052 inode = hugetlbfs_get_inode(dir->i_sb, idmap, dir, mode, dev); in hugetlbfs_mknod()
1053 if (!inode) in hugetlbfs_mknod()
1056 d_instantiate(dentry, inode); in hugetlbfs_mknod()
1061 static int hugetlbfs_mkdir(struct mnt_idmap *idmap, struct inode *dir, in hugetlbfs_mkdir()
1072 struct inode *dir, struct dentry *dentry, in hugetlbfs_create()
1079 struct inode *dir, struct file *file, in hugetlbfs_tmpfile()
1082 struct inode *inode; in hugetlbfs_tmpfile() local
1084 inode = hugetlbfs_get_inode(dir->i_sb, idmap, dir, mode | S_IFREG, 0); in hugetlbfs_tmpfile()
1085 if (!inode) in hugetlbfs_tmpfile()
1088 d_tmpfile(file, inode); in hugetlbfs_tmpfile()
1093 struct inode *dir, struct dentry *dentry, in hugetlbfs_symlink()
1097 struct inode *inode; in hugetlbfs_symlink() local
1100 inode = hugetlbfs_get_inode(dir->i_sb, idmap, dir, mode, 0); in hugetlbfs_symlink()
1101 if (inode) { in hugetlbfs_symlink()
1103 error = page_symlink(inode, symname, l); in hugetlbfs_symlink()
1105 d_instantiate(dentry, inode); in hugetlbfs_symlink()
1108 iput(inode); in hugetlbfs_symlink()
1258 static struct inode *hugetlbfs_alloc_inode(struct super_block *sb) in hugetlbfs_alloc_inode()
1273 static void hugetlbfs_free_inode(struct inode *inode) in hugetlbfs_free_inode() argument
1275 kmem_cache_free(hugetlbfs_inode_cachep, HUGETLBFS_I(inode)); in hugetlbfs_free_inode()
1278 static void hugetlbfs_destroy_inode(struct inode *inode) in hugetlbfs_destroy_inode() argument
1280 hugetlbfs_inc_free_inodes(HUGETLBFS_SB(inode->i_sb)); in hugetlbfs_destroy_inode()
1592 struct inode *inode; in hugetlb_file_setup() local
1618 inode = hugetlbfs_get_inode(mnt->mnt_sb, &nop_mnt_idmap, NULL, in hugetlb_file_setup()
1620 if (!inode) in hugetlb_file_setup()
1623 inode->i_flags |= S_PRIVATE; in hugetlb_file_setup()
1625 inode->i_size = size; in hugetlb_file_setup()
1626 clear_nlink(inode); in hugetlb_file_setup()
1628 if (!hugetlb_reserve_pages(inode, 0, in hugetlb_file_setup()
1629 size >> huge_page_shift(hstate_inode(inode)), NULL, in hugetlb_file_setup()
1633 file = alloc_file_pseudo(inode, mnt, name, O_RDWR, in hugetlb_file_setup()
1638 iput(inode); in hugetlb_file_setup()