Lines Matching refs:inode
59 struct inode vfs_inode;
62 static inline struct hugetlbfs_inode_info *HUGETLBFS_I(struct inode *inode) in HUGETLBFS_I() argument
64 return container_of(inode, struct hugetlbfs_inode_info, vfs_inode); in HUGETLBFS_I()
99 struct inode *inode = file_inode(file); in hugetlbfs_file_mmap() local
120 mutex_lock(&inode->i_mutex); in hugetlbfs_file_mmap()
126 if (hugetlb_reserve_pages(inode, in hugetlbfs_file_mmap()
134 if (vma->vm_flags & VM_WRITE && inode->i_size < len) in hugetlbfs_file_mmap()
135 inode->i_size = len; in hugetlbfs_file_mmap()
137 mutex_unlock(&inode->i_mutex); in hugetlbfs_file_mmap()
224 struct inode *inode = mapping->host; in hugetlbfs_read_iter() local
237 isize = i_size_read(inode); in hugetlbfs_read_iter()
304 static void truncate_hugepages(struct inode *inode, loff_t lstart) in truncate_hugepages() argument
306 struct hstate *h = hstate_inode(inode); in truncate_hugepages()
307 struct address_space *mapping = &inode->i_data; in truncate_hugepages()
337 hugetlb_unreserve_pages(inode, start, freed); in truncate_hugepages()
340 static void hugetlbfs_evict_inode(struct inode *inode) in hugetlbfs_evict_inode() argument
344 truncate_hugepages(inode, 0); in hugetlbfs_evict_inode()
345 resv_map = (struct resv_map *)inode->i_mapping->private_data; in hugetlbfs_evict_inode()
349 clear_inode(inode); in hugetlbfs_evict_inode()
376 static int hugetlb_vmtruncate(struct inode *inode, loff_t offset) in hugetlb_vmtruncate() argument
379 struct address_space *mapping = inode->i_mapping; in hugetlb_vmtruncate()
380 struct hstate *h = hstate_inode(inode); in hugetlb_vmtruncate()
385 i_size_write(inode, offset); in hugetlb_vmtruncate()
390 truncate_hugepages(inode, offset); in hugetlb_vmtruncate()
396 struct inode *inode = d_inode(dentry); in hugetlbfs_setattr() local
397 struct hstate *h = hstate_inode(inode); in hugetlbfs_setattr()
401 BUG_ON(!inode); in hugetlbfs_setattr()
403 error = inode_change_ok(inode, attr); in hugetlbfs_setattr()
411 error = hugetlb_vmtruncate(inode, attr->ia_size); in hugetlbfs_setattr()
416 setattr_copy(inode, attr); in hugetlbfs_setattr()
417 mark_inode_dirty(inode); in hugetlbfs_setattr()
421 static struct inode *hugetlbfs_get_root(struct super_block *sb, in hugetlbfs_get_root()
424 struct inode *inode; in hugetlbfs_get_root() local
426 inode = new_inode(sb); in hugetlbfs_get_root()
427 if (inode) { in hugetlbfs_get_root()
429 inode->i_ino = get_next_ino(); in hugetlbfs_get_root()
430 inode->i_mode = S_IFDIR | config->mode; in hugetlbfs_get_root()
431 inode->i_uid = config->uid; in hugetlbfs_get_root()
432 inode->i_gid = config->gid; in hugetlbfs_get_root()
433 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; in hugetlbfs_get_root()
434 info = HUGETLBFS_I(inode); in hugetlbfs_get_root()
436 inode->i_op = &hugetlbfs_dir_inode_operations; in hugetlbfs_get_root()
437 inode->i_fop = &simple_dir_operations; in hugetlbfs_get_root()
439 inc_nlink(inode); in hugetlbfs_get_root()
440 lockdep_annotate_inode_mutex_key(inode); in hugetlbfs_get_root()
442 return inode; in hugetlbfs_get_root()
453 static struct inode *hugetlbfs_get_inode(struct super_block *sb, in hugetlbfs_get_inode()
454 struct inode *dir, in hugetlbfs_get_inode()
457 struct inode *inode; in hugetlbfs_get_inode() local
464 inode = new_inode(sb); in hugetlbfs_get_inode()
465 if (inode) { in hugetlbfs_get_inode()
467 inode->i_ino = get_next_ino(); in hugetlbfs_get_inode()
468 inode_init_owner(inode, dir, mode); in hugetlbfs_get_inode()
469 lockdep_set_class(&inode->i_mapping->i_mmap_rwsem, in hugetlbfs_get_inode()
471 inode->i_mapping->a_ops = &hugetlbfs_aops; in hugetlbfs_get_inode()
472 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; in hugetlbfs_get_inode()
473 inode->i_mapping->private_data = resv_map; in hugetlbfs_get_inode()
474 info = HUGETLBFS_I(inode); in hugetlbfs_get_inode()
485 init_special_inode(inode, mode, dev); in hugetlbfs_get_inode()
488 inode->i_op = &hugetlbfs_inode_operations; in hugetlbfs_get_inode()
489 inode->i_fop = &hugetlbfs_file_operations; in hugetlbfs_get_inode()
492 inode->i_op = &hugetlbfs_dir_inode_operations; in hugetlbfs_get_inode()
493 inode->i_fop = &simple_dir_operations; in hugetlbfs_get_inode()
496 inc_nlink(inode); in hugetlbfs_get_inode()
499 inode->i_op = &page_symlink_inode_operations; in hugetlbfs_get_inode()
502 lockdep_annotate_inode_mutex_key(inode); in hugetlbfs_get_inode()
506 return inode; in hugetlbfs_get_inode()
512 static int hugetlbfs_mknod(struct inode *dir, in hugetlbfs_mknod()
515 struct inode *inode; in hugetlbfs_mknod() local
518 inode = hugetlbfs_get_inode(dir->i_sb, dir, mode, dev); in hugetlbfs_mknod()
519 if (inode) { in hugetlbfs_mknod()
521 d_instantiate(dentry, inode); in hugetlbfs_mknod()
528 static int hugetlbfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in hugetlbfs_mkdir()
536 static int hugetlbfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, bool excl) in hugetlbfs_create()
541 static int hugetlbfs_symlink(struct inode *dir, in hugetlbfs_symlink()
544 struct inode *inode; in hugetlbfs_symlink() local
547 inode = hugetlbfs_get_inode(dir->i_sb, dir, S_IFLNK|S_IRWXUGO, 0); in hugetlbfs_symlink()
548 if (inode) { in hugetlbfs_symlink()
550 error = page_symlink(inode, symname, l); in hugetlbfs_symlink()
552 d_instantiate(dentry, inode); in hugetlbfs_symlink()
555 iput(inode); in hugetlbfs_symlink()
657 static struct inode *hugetlbfs_alloc_inode(struct super_block *sb) in hugetlbfs_alloc_inode()
674 struct inode *inode = container_of(head, struct inode, i_rcu); in hugetlbfs_i_callback() local
675 kmem_cache_free(hugetlbfs_inode_cachep, HUGETLBFS_I(inode)); in hugetlbfs_i_callback()
678 static void hugetlbfs_destroy_inode(struct inode *inode) in hugetlbfs_destroy_inode() argument
680 hugetlbfs_inc_free_inodes(HUGETLBFS_SB(inode->i_sb)); in hugetlbfs_destroy_inode()
681 mpol_free_shared_policy(&HUGETLBFS_I(inode)->policy); in hugetlbfs_destroy_inode()
682 call_rcu(&inode->i_rcu, hugetlbfs_i_callback); in hugetlbfs_destroy_inode()
973 struct inode *inode; in hugetlb_file_setup() local
1011 inode = hugetlbfs_get_inode(sb, NULL, S_IFREG | S_IRWXUGO, 0); in hugetlb_file_setup()
1012 if (!inode) in hugetlb_file_setup()
1016 if (hugetlb_reserve_pages(inode, 0, in hugetlb_file_setup()
1017 size >> huge_page_shift(hstate_inode(inode)), NULL, in hugetlb_file_setup()
1021 d_instantiate(path.dentry, inode); in hugetlb_file_setup()
1022 inode->i_size = size; in hugetlb_file_setup()
1023 clear_nlink(inode); in hugetlb_file_setup()
1033 iput(inode); in hugetlb_file_setup()