Lines Matching refs:inode

14 static int exfat_cont_expand(struct inode *inode, loff_t size)
16 struct address_space *mapping = inode->i_mapping;
17 loff_t start = i_size_read(inode), count = size - i_size_read(inode);
20 err = generic_cont_expand_simple(inode, size);
24 inode->i_ctime = inode->i_mtime = current_time(inode);
25 mark_inode_dirty(inode);
27 if (!IS_SYNC(inode))
34 err2 = write_inode_now(inode, 1);
43 static bool exfat_allow_set_time(struct exfat_sb_info *sbi, struct inode *inode)
47 if (!uid_eq(current_fsuid(), inode->i_uid)) {
48 if (in_group_p(inode->i_gid))
59 struct inode *inode, umode_t *mode_ptr)
63 i_mode = inode->i_mode;
73 if (exfat_mode_can_hold_ro(inode)) {
82 * If exfat_mode_can_hold_ro(inode) is false, can't change
95 int __exfat_truncate(struct inode *inode, loff_t new_size)
100 struct super_block *sb = inode->i_sb;
102 struct exfat_inode_info *ei = EXFAT_I(inode);
111 num_clusters_new = EXFAT_B_TO_CLU_ROUND_UP(i_size_read(inode), sbi);
146 i_size_write(inode, new_size);
165 ts = current_time(inode);
191 err = exfat_free_dentry_set(es, inode_needs_sync(inode));
205 exfat_cache_inval_inode(inode);
217 if (exfat_free_cluster(inode, &clu))
225 void exfat_truncate(struct inode *inode, loff_t size)
227 struct super_block *sb = inode->i_sb;
229 struct exfat_inode_info *ei = EXFAT_I(inode);
230 unsigned int blocksize = i_blocksize(inode);
243 err = __exfat_truncate(inode, i_size_read(inode));
247 inode->i_ctime = inode->i_mtime = current_time(inode);
248 if (IS_DIRSYNC(inode))
249 exfat_sync_inode(inode);
251 mark_inode_dirty(inode);
253 inode->i_blocks = round_up(i_size_read(inode), sbi->cluster_size) >> 9;
255 aligned_size = i_size_read(inode);
261 if (ei->i_size_ondisk > i_size_read(inode))
264 if (ei->i_size_aligned > i_size_read(inode))
272 struct inode *inode = d_backing_inode(path->dentry);
273 struct exfat_inode_info *ei = EXFAT_I(inode);
275 generic_fillattr(inode, stat);
280 stat->blksize = EXFAT_SB(inode->i_sb)->cluster_size;
287 struct inode *inode = dentry->d_inode;
292 attr->ia_size > i_size_read(inode)) {
293 error = exfat_cont_expand(inode, attr->ia_size);
299 /* Check for setting the inode time. */
302 exfat_allow_set_time(sbi, inode)) {
327 if (exfat_sanitize_mode(sbi, inode, &attr->ia_mode) < 0)
332 error = exfat_block_truncate_page(inode, attr->ia_size);
336 down_write(&EXFAT_I(inode)->truncate_lock);
337 truncate_setsize(inode, attr->ia_size);
338 exfat_truncate(inode, attr->ia_size);
339 up_write(&EXFAT_I(inode)->truncate_lock);
342 setattr_copy(inode, attr);
343 exfat_truncate_atime(&inode->i_atime);
344 mark_inode_dirty(inode);
352 struct inode *inode = filp->f_mapping->host;
359 err = sync_blockdev(inode->i_sb->s_bdev);
363 return blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL);