Lines Matching refs:inode
122 static int shmem_getpage_gfp(struct inode *inode, pgoff_t index,
125 static inline int shmem_getpage(struct inode *inode, pgoff_t index, in shmem_getpage() argument
128 return shmem_getpage_gfp(inode, index, pagep, sgp, in shmem_getpage()
129 mapping_gfp_mask(inode->i_mapping), fault_type); in shmem_getpage()
234 static void shmem_recalc_inode(struct inode *inode) in shmem_recalc_inode() argument
236 struct shmem_inode_info *info = SHMEM_I(inode); in shmem_recalc_inode()
239 freed = info->alloced - info->swapped - inode->i_mapping->nrpages; in shmem_recalc_inode()
241 struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb); in shmem_recalc_inode()
245 inode->i_blocks -= freed * BLOCKS_PER_PAGE; in shmem_recalc_inode()
394 static void shmem_undo_range(struct inode *inode, loff_t lstart, loff_t lend, in shmem_undo_range() argument
397 struct address_space *mapping = inode->i_mapping; in shmem_undo_range()
398 struct shmem_inode_info *info = SHMEM_I(inode); in shmem_undo_range()
453 shmem_getpage(inode, start - 1, &page, SGP_READ, NULL); in shmem_undo_range()
468 shmem_getpage(inode, end, &page, SGP_READ, NULL); in shmem_undo_range()
534 shmem_recalc_inode(inode); in shmem_undo_range()
538 void shmem_truncate_range(struct inode *inode, loff_t lstart, loff_t lend) in shmem_truncate_range() argument
540 shmem_undo_range(inode, lstart, lend, false); in shmem_truncate_range()
541 inode->i_ctime = inode->i_mtime = CURRENT_TIME; in shmem_truncate_range()
547 struct inode *inode = d_inode(dentry); in shmem_setattr() local
548 struct shmem_inode_info *info = SHMEM_I(inode); in shmem_setattr()
551 error = inode_change_ok(inode, attr); in shmem_setattr()
555 if (S_ISREG(inode->i_mode) && (attr->ia_valid & ATTR_SIZE)) { in shmem_setattr()
556 loff_t oldsize = inode->i_size; in shmem_setattr()
565 error = shmem_reacct_size(SHMEM_I(inode)->flags, in shmem_setattr()
569 i_size_write(inode, newsize); in shmem_setattr()
570 inode->i_ctime = inode->i_mtime = CURRENT_TIME; in shmem_setattr()
574 unmap_mapping_range(inode->i_mapping, holebegin, 0, 1); in shmem_setattr()
575 shmem_truncate_range(inode, newsize, (loff_t)-1); in shmem_setattr()
577 unmap_mapping_range(inode->i_mapping, holebegin, 0, 1); in shmem_setattr()
581 setattr_copy(inode, attr); in shmem_setattr()
583 error = posix_acl_chmod(inode, inode->i_mode); in shmem_setattr()
587 static void shmem_evict_inode(struct inode *inode) in shmem_evict_inode() argument
589 struct shmem_inode_info *info = SHMEM_I(inode); in shmem_evict_inode()
591 if (inode->i_mapping->a_ops == &shmem_aops) { in shmem_evict_inode()
592 shmem_unacct_size(info->flags, inode->i_size); in shmem_evict_inode()
593 inode->i_size = 0; in shmem_evict_inode()
594 shmem_truncate_range(inode, 0, (loff_t)-1); in shmem_evict_inode()
604 WARN_ON(inode->i_blocks); in shmem_evict_inode()
605 shmem_free_inode(inode->i_sb); in shmem_evict_inode()
606 clear_inode(inode); in shmem_evict_inode()
748 struct inode *inode; in shmem_writepage() local
755 inode = mapping->host; in shmem_writepage()
756 info = SHMEM_I(inode); in shmem_writepage()
786 if (inode->i_private) { in shmem_writepage()
788 spin_lock(&inode->i_lock); in shmem_writepage()
789 shmem_falloc = inode->i_private; in shmem_writepage()
797 spin_unlock(&inode->i_lock); in shmem_writepage()
828 shmem_recalc_inode(inode); in shmem_writepage()
1032 static int shmem_getpage_gfp(struct inode *inode, pgoff_t index, in shmem_getpage_gfp() argument
1035 struct address_space *mapping = inode->i_mapping; in shmem_getpage_gfp()
1056 ((loff_t)index << PAGE_CACHE_SHIFT) >= i_size_read(inode)) { in shmem_getpage_gfp()
1081 info = SHMEM_I(inode); in shmem_getpage_gfp()
1082 sbinfo = SHMEM_SB(inode->i_sb); in shmem_getpage_gfp()
1145 shmem_recalc_inode(inode); in shmem_getpage_gfp()
1198 inode->i_blocks += BLOCKS_PER_PAGE; in shmem_getpage_gfp()
1199 shmem_recalc_inode(inode); in shmem_getpage_gfp()
1225 ((loff_t)index << PAGE_CACHE_SHIFT) >= i_size_read(inode)) { in shmem_getpage_gfp()
1239 info = SHMEM_I(inode); in shmem_getpage_gfp()
1244 inode->i_blocks -= BLOCKS_PER_PAGE; in shmem_getpage_gfp()
1247 sbinfo = SHMEM_SB(inode->i_sb); in shmem_getpage_gfp()
1262 info = SHMEM_I(inode); in shmem_getpage_gfp()
1264 shmem_recalc_inode(inode); in shmem_getpage_gfp()
1275 struct inode *inode = file_inode(vma->vm_file); in shmem_fault() local
1296 if (unlikely(inode->i_private)) { in shmem_fault()
1299 spin_lock(&inode->i_lock); in shmem_fault()
1300 shmem_falloc = inode->i_private; in shmem_fault()
1319 spin_unlock(&inode->i_lock); in shmem_fault()
1329 spin_lock(&inode->i_lock); in shmem_fault()
1331 spin_unlock(&inode->i_lock); in shmem_fault()
1334 spin_unlock(&inode->i_lock); in shmem_fault()
1337 error = shmem_getpage(inode, vmf->pgoff, &vmf->page, SGP_CACHE, &ret); in shmem_fault()
1351 struct inode *inode = file_inode(vma->vm_file); in shmem_set_policy() local
1352 return mpol_set_shared_policy(&SHMEM_I(inode)->policy, vma, mpol); in shmem_set_policy()
1358 struct inode *inode = file_inode(vma->vm_file); in shmem_get_policy() local
1362 return mpol_shared_policy_lookup(&SHMEM_I(inode)->policy, index); in shmem_get_policy()
1368 struct inode *inode = file_inode(file); in shmem_lock() local
1369 struct shmem_inode_info *info = SHMEM_I(inode); in shmem_lock()
1374 if (!user_shm_lock(inode->i_size, user)) in shmem_lock()
1380 user_shm_unlock(inode->i_size, user); in shmem_lock()
1398 static struct inode *shmem_get_inode(struct super_block *sb, const struct inode *dir, in shmem_get_inode()
1401 struct inode *inode; in shmem_get_inode() local
1408 inode = new_inode(sb); in shmem_get_inode()
1409 if (inode) { in shmem_get_inode()
1410 inode->i_ino = get_next_ino(); in shmem_get_inode()
1411 inode_init_owner(inode, dir, mode); in shmem_get_inode()
1412 inode->i_blocks = 0; in shmem_get_inode()
1413 inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; in shmem_get_inode()
1414 inode->i_generation = get_seconds(); in shmem_get_inode()
1415 info = SHMEM_I(inode); in shmem_get_inode()
1416 memset(info, 0, (char *)inode - (char *)info); in shmem_get_inode()
1422 cache_no_acl(inode); in shmem_get_inode()
1426 inode->i_op = &shmem_special_inode_operations; in shmem_get_inode()
1427 init_special_inode(inode, mode, dev); in shmem_get_inode()
1430 inode->i_mapping->a_ops = &shmem_aops; in shmem_get_inode()
1431 inode->i_op = &shmem_inode_operations; in shmem_get_inode()
1432 inode->i_fop = &shmem_file_operations; in shmem_get_inode()
1437 inc_nlink(inode); in shmem_get_inode()
1439 inode->i_size = 2 * BOGO_DIRENT_SIZE; in shmem_get_inode()
1440 inode->i_op = &shmem_dir_inode_operations; in shmem_get_inode()
1441 inode->i_fop = &simple_dir_operations; in shmem_get_inode()
1453 return inode; in shmem_get_inode()
1469 static int shmem_initxattrs(struct inode *, const struct xattr *, void *);
1479 struct inode *inode = mapping->host; in shmem_write_begin() local
1480 struct shmem_inode_info *info = SHMEM_I(inode); in shmem_write_begin()
1487 if ((info->seals & F_SEAL_GROW) && pos + len > inode->i_size) in shmem_write_begin()
1491 return shmem_getpage(inode, index, pagep, SGP_WRITE, NULL); in shmem_write_begin()
1499 struct inode *inode = mapping->host; in shmem_write_end() local
1501 if (pos + copied > inode->i_size) in shmem_write_end()
1502 i_size_write(inode, pos + copied); in shmem_write_end()
1522 struct inode *inode = file_inode(file); in shmem_file_read_iter() local
1523 struct address_space *mapping = inode->i_mapping; in shmem_file_read_iter()
1546 loff_t i_size = i_size_read(inode); in shmem_file_read_iter()
1557 error = shmem_getpage(inode, index, &page, sgp, NULL); in shmem_file_read_iter()
1571 i_size = i_size_read(inode); in shmem_file_read_iter()
1631 struct inode *inode = mapping->host; in shmem_file_splice_read() local
1648 isize = i_size_read(inode); in shmem_file_splice_read()
1670 error = shmem_getpage(inode, index, &page, SGP_CACHE, NULL); in shmem_file_splice_read()
1692 error = shmem_getpage(inode, index, &page, in shmem_file_splice_read()
1701 isize = i_size_read(inode); in shmem_file_splice_read()
1793 struct inode *inode = mapping->host; in shmem_file_llseek() local
1799 MAX_LFS_FILESIZE, i_size_read(inode)); in shmem_file_llseek()
1800 mutex_lock(&inode->i_mutex); in shmem_file_llseek()
1805 else if (offset >= inode->i_size) in shmem_file_llseek()
1809 end = (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; in shmem_file_llseek()
1813 if (new_offset < inode->i_size) in shmem_file_llseek()
1818 offset = inode->i_size; in shmem_file_llseek()
1824 mutex_unlock(&inode->i_mutex); in shmem_file_llseek()
1948 struct inode *inode = file_inode(file); in shmem_add_seals() local
1949 struct shmem_inode_info *info = SHMEM_I(inode); in shmem_add_seals()
1989 mutex_lock(&inode->i_mutex); in shmem_add_seals()
2012 mutex_unlock(&inode->i_mutex); in shmem_add_seals()
2052 struct inode *inode = file_inode(file); in shmem_fallocate() local
2053 struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb); in shmem_fallocate()
2054 struct shmem_inode_info *info = SHMEM_I(inode); in shmem_fallocate()
2062 mutex_lock(&inode->i_mutex); in shmem_fallocate()
2079 spin_lock(&inode->i_lock); in shmem_fallocate()
2080 inode->i_private = &shmem_falloc; in shmem_fallocate()
2081 spin_unlock(&inode->i_lock); in shmem_fallocate()
2086 shmem_truncate_range(inode, offset, offset + len - 1); in shmem_fallocate()
2089 spin_lock(&inode->i_lock); in shmem_fallocate()
2090 inode->i_private = NULL; in shmem_fallocate()
2092 spin_unlock(&inode->i_lock); in shmem_fallocate()
2098 error = inode_newsize_ok(inode, offset + len); in shmem_fallocate()
2102 if ((info->seals & F_SEAL_GROW) && offset + len > inode->i_size) { in shmem_fallocate()
2120 spin_lock(&inode->i_lock); in shmem_fallocate()
2121 inode->i_private = &shmem_falloc; in shmem_fallocate()
2122 spin_unlock(&inode->i_lock); in shmem_fallocate()
2136 error = shmem_getpage(inode, index, &page, SGP_FALLOC, in shmem_fallocate()
2140 shmem_undo_range(inode, in shmem_fallocate()
2167 if (!(mode & FALLOC_FL_KEEP_SIZE) && offset + len > inode->i_size) in shmem_fallocate()
2168 i_size_write(inode, offset + len); in shmem_fallocate()
2169 inode->i_ctime = CURRENT_TIME; in shmem_fallocate()
2171 spin_lock(&inode->i_lock); in shmem_fallocate()
2172 inode->i_private = NULL; in shmem_fallocate()
2173 spin_unlock(&inode->i_lock); in shmem_fallocate()
2175 mutex_unlock(&inode->i_mutex); in shmem_fallocate()
2204 shmem_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev) in shmem_mknod()
2206 struct inode *inode; in shmem_mknod() local
2209 inode = shmem_get_inode(dir->i_sb, dir, mode, dev, VM_NORESERVE); in shmem_mknod()
2210 if (inode) { in shmem_mknod()
2211 error = simple_acl_create(dir, inode); in shmem_mknod()
2214 error = security_inode_init_security(inode, dir, in shmem_mknod()
2223 d_instantiate(dentry, inode); in shmem_mknod()
2228 iput(inode); in shmem_mknod()
2233 shmem_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) in shmem_tmpfile()
2235 struct inode *inode; in shmem_tmpfile() local
2238 inode = shmem_get_inode(dir->i_sb, dir, mode, 0, VM_NORESERVE); in shmem_tmpfile()
2239 if (inode) { in shmem_tmpfile()
2240 error = security_inode_init_security(inode, dir, in shmem_tmpfile()
2245 error = simple_acl_create(dir, inode); in shmem_tmpfile()
2248 d_tmpfile(dentry, inode); in shmem_tmpfile()
2252 iput(inode); in shmem_tmpfile()
2256 static int shmem_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in shmem_mkdir()
2266 static int shmem_create(struct inode *dir, struct dentry *dentry, umode_t mode, in shmem_create()
2275 static int shmem_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) in shmem_link()
2277 struct inode *inode = d_inode(old_dentry); in shmem_link() local
2285 ret = shmem_reserve_inode(inode->i_sb); in shmem_link()
2290 inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; in shmem_link()
2291 inc_nlink(inode); in shmem_link()
2292 ihold(inode); /* New dentry reference */ in shmem_link()
2294 d_instantiate(dentry, inode); in shmem_link()
2299 static int shmem_unlink(struct inode *dir, struct dentry *dentry) in shmem_unlink()
2301 struct inode *inode = d_inode(dentry); in shmem_unlink() local
2303 if (inode->i_nlink > 1 && !S_ISDIR(inode->i_mode)) in shmem_unlink()
2304 shmem_free_inode(inode->i_sb); in shmem_unlink()
2307 inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; in shmem_unlink()
2308 drop_nlink(inode); in shmem_unlink()
2313 static int shmem_rmdir(struct inode *dir, struct dentry *dentry) in shmem_rmdir()
2323 static int shmem_exchange(struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, … in shmem_exchange()
2345 static int shmem_whiteout(struct inode *old_dir, struct dentry *old_dentry) in shmem_whiteout()
2377 static int shmem_rename2(struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, s… in shmem_rename2()
2379 struct inode *inode = d_inode(old_dentry); in shmem_rename2() local
2380 int they_are_dirs = S_ISDIR(inode->i_mode); in shmem_rename2()
2414 inode->i_ctime = CURRENT_TIME; in shmem_rename2()
2418 static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *symname) in shmem_symlink()
2422 struct inode *inode; in shmem_symlink() local
2431 inode = shmem_get_inode(dir->i_sb, dir, S_IFLNK|S_IRWXUGO, 0, VM_NORESERVE); in shmem_symlink()
2432 if (!inode) in shmem_symlink()
2435 error = security_inode_init_security(inode, dir, &dentry->d_name, in shmem_symlink()
2439 iput(inode); in shmem_symlink()
2445 info = SHMEM_I(inode); in shmem_symlink()
2446 inode->i_size = len-1; in shmem_symlink()
2450 iput(inode); in shmem_symlink()
2453 inode->i_op = &shmem_short_symlink_operations; in shmem_symlink()
2455 error = shmem_getpage(inode, 0, &page, SGP_WRITE, NULL); in shmem_symlink()
2457 iput(inode); in shmem_symlink()
2460 inode->i_mapping->a_ops = &shmem_aops; in shmem_symlink()
2461 inode->i_op = &shmem_symlink_inode_operations; in shmem_symlink()
2472 d_instantiate(dentry, inode); in shmem_symlink()
2514 static int shmem_initxattrs(struct inode *inode, in shmem_initxattrs() argument
2518 struct shmem_inode_info *info = SHMEM_I(inode); in shmem_initxattrs()
2671 static int shmem_match(struct inode *ino, void *vfh) in shmem_match()
2682 struct inode *inode; in shmem_fh_to_dentry() local
2692 inode = ilookup5(sb, (unsigned long)(inum + fid->raw[0]), in shmem_fh_to_dentry()
2694 if (inode) { in shmem_fh_to_dentry()
2695 dentry = d_find_alias(inode); in shmem_fh_to_dentry()
2696 iput(inode); in shmem_fh_to_dentry()
2702 static int shmem_encode_fh(struct inode *inode, __u32 *fh, int *len, in shmem_encode_fh() argument
2703 struct inode *parent) in shmem_encode_fh()
2710 if (inode_unhashed(inode)) { in shmem_encode_fh()
2718 if (inode_unhashed(inode)) in shmem_encode_fh()
2719 __insert_inode_hash(inode, in shmem_encode_fh()
2720 inode->i_ino + inode->i_generation); in shmem_encode_fh()
2724 fh[0] = inode->i_generation; in shmem_encode_fh()
2725 fh[1] = inode->i_ino; in shmem_encode_fh()
2726 fh[2] = ((__u64)inode->i_ino) >> 32; in shmem_encode_fh()
2991 struct inode *inode; in shmem_fill_super() local
3046 inode = shmem_get_inode(sb, NULL, S_IFDIR | sbinfo->mode, 0, VM_NORESERVE); in shmem_fill_super()
3047 if (!inode) in shmem_fill_super()
3049 inode->i_uid = sbinfo->uid; in shmem_fill_super()
3050 inode->i_gid = sbinfo->gid; in shmem_fill_super()
3051 sb->s_root = d_make_root(inode); in shmem_fill_super()
3063 static struct inode *shmem_alloc_inode(struct super_block *sb) in shmem_alloc_inode()
3074 struct inode *inode = container_of(head, struct inode, i_rcu); in shmem_destroy_callback() local
3075 kmem_cache_free(shmem_inode_cachep, SHMEM_I(inode)); in shmem_destroy_callback()
3078 static void shmem_destroy_inode(struct inode *inode) in shmem_destroy_inode() argument
3080 if (S_ISREG(inode->i_mode)) in shmem_destroy_inode()
3081 mpol_free_shared_policy(&SHMEM_I(inode)->policy); in shmem_destroy_inode()
3082 call_rcu(&inode->i_rcu, shmem_destroy_callback); in shmem_destroy_inode()
3292 void shmem_truncate_range(struct inode *inode, loff_t lstart, loff_t lend) in shmem_truncate_range() argument
3294 truncate_inode_pages_range(inode->i_mapping, lstart, lend); in shmem_truncate_range()
3316 struct inode *inode; in __shmem_file_setup() local
3342 inode = shmem_get_inode(sb, NULL, S_IFREG | S_IRWXUGO, 0, flags); in __shmem_file_setup()
3343 if (!inode) in __shmem_file_setup()
3346 inode->i_flags |= i_flags; in __shmem_file_setup()
3347 d_instantiate(path.dentry, inode); in __shmem_file_setup()
3348 inode->i_size = size; in __shmem_file_setup()
3349 clear_nlink(inode); /* It is unlinked */ in __shmem_file_setup()
3350 res = ERR_PTR(ramfs_nommu_expand_for_mapping(inode, size)); in __shmem_file_setup()
3440 struct inode *inode = mapping->host; in shmem_read_mapping_page_gfp() local
3445 error = shmem_getpage_gfp(inode, index, &page, SGP_CACHE, gfp, NULL); in shmem_read_mapping_page_gfp()