Lines Matching defs:inode

35 static void exfat_pagecache_isize_extended(struct inode *inode, loff_t from,
41 i_size_write(inode, to);
45 folio = filemap_lock_folio(inode->i_mapping, from >> PAGE_SHIFT);
49 i_size_write(inode, to);
78 i_size_write(inode, to);
84 static int exfat_cont_expand(struct inode *inode, loff_t size)
88 struct exfat_inode_info *ei = EXFAT_I(inode);
89 struct super_block *sb = inode->i_sb;
92 loff_t oldsize = i_size_read(inode);
94 ret = inode_newsize_ok(inode, size);
98 num_clusters = exfat_bytes_to_cluster(sbi, exfat_ondisk_size(inode));
120 ret = exfat_alloc_cluster(inode, new_num_clusters - num_clusters,
121 &clu, inode_needs_sync(inode), false);
140 inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
146 exfat_pagecache_isize_extended(inode, oldsize, size);
148 inode->i_blocks = round_up(size, sbi->cluster_size) >> 9;
149 mark_inode_dirty(inode);
151 if (IS_SYNC(inode))
152 return write_inode_now(inode, 1);
157 exfat_free_cluster(inode, &clu);
171 struct inode *inode = file->f_mapping->host;
180 if (!S_ISREG(inode->i_mode))
183 if (unlikely(exfat_forced_shutdown(inode->i_sb)))
186 inode_lock(inode);
188 if (newsize <= i_size_read(inode))
192 err = exfat_cont_expand(inode, newsize);
195 inode_unlock(inode);
201 struct exfat_sb_info *sbi, struct inode *inode)
205 if (!vfsuid_eq_kuid(i_uid_into_vfsuid(idmap, inode),
207 if (vfsgid_in_group_p(i_gid_into_vfsgid(idmap, inode)))
218 struct inode *inode, umode_t *mode_ptr)
222 i_mode = inode->i_mode;
232 if (exfat_mode_can_hold_ro(inode)) {
241 * If exfat_mode_can_hold_ro(inode) is false, can't change
254 int __exfat_truncate(struct inode *inode)
259 struct super_block *sb = inode->i_sb;
261 struct exfat_inode_info *ei = EXFAT_I(inode);
269 num_clusters_new = exfat_bytes_to_cluster_round_up(sbi, i_size_read(inode));
270 num_clusters_phys = exfat_bytes_to_cluster(sbi, exfat_ondisk_size(inode));
274 if (i_size_read(inode) > 0) {
304 if (i_size_read(inode) < exfat_get_valid_size(ei)) {
305 exfat_set_valid_size(ei, i_size_read(inode));
306 exfat_set_zeroed_size(ei, i_size_read(inode));
323 if (__exfat_write_inode(inode, inode_needs_sync(inode)))
335 exfat_cache_inval_inode(inode);
347 if (exfat_free_cluster(inode, &clu))
353 static void exfat_truncate(struct inode *inode)
355 struct super_block *sb = inode->i_sb;
357 struct exfat_inode_info *ei = EXFAT_I(inode);
369 err = __exfat_truncate(inode);
373 inode->i_blocks = round_up(i_size_read(inode), sbi->cluster_size) >> 9;
382 struct inode *inode = d_backing_inode(path->dentry);
383 struct exfat_inode_info *ei = EXFAT_I(inode);
385 generic_fillattr(idmap, request_mask, inode, stat);
390 stat->blksize = EXFAT_SB(inode->i_sb)->cluster_size;
410 struct inode *inode = dentry->d_inode;
414 if (unlikely(exfat_forced_shutdown(inode->i_sb)))
418 attr->ia_size > i_size_read(inode)) {
419 error = exfat_cont_expand(inode, attr->ia_size);
425 /* Check for setting the inode time. */
428 exfat_allow_set_time(idmap, sbi, inode)) {
439 (!uid_eq(from_vfsuid(idmap, i_user_ns(inode), attr->ia_vfsuid),
442 (!gid_eq(from_vfsgid(idmap, i_user_ns(inode), attr->ia_vfsgid),
455 if (exfat_sanitize_mode(sbi, inode, &attr->ia_mode) < 0)
460 inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
462 setattr_copy(idmap, inode, attr);
463 exfat_truncate_inode_atime(inode);
471 inode_dio_wait(inode);
472 filemap_invalidate_lock(inode->i_mapping);
473 truncate_setsize(inode, attr->ia_size);
476 * __exfat_write_inode() is called from exfat_truncate(), inode
479 exfat_truncate(inode);
480 filemap_invalidate_unlock(inode->i_mapping);
482 mark_inode_dirty(inode);
491 static int exfat_ioctl_get_attributes(struct inode *inode, u32 __user *user_attr)
495 inode_lock_shared(inode);
496 attr = exfat_make_attr(inode);
497 inode_unlock_shared(inode);
504 struct inode *inode = file_inode(file);
505 struct exfat_sb_info *sbi = EXFAT_SB(inode->i_sb);
506 int is_dir = S_ISDIR(inode->i_mode);
518 inode_lock(inode);
520 oldattr = exfat_make_attr(inode);
531 ia.ia_ctime = current_time(inode);
535 ia.ia_mode = exfat_make_mode(sbi, attr, 0666 | (inode->i_mode & 0111));
538 if (inode->i_ino == EXFAT_ROOT_INO && attr != EXFAT_ATTR_SUBDIR) {
566 exfat_save_attr(inode, attr);
567 mark_inode_dirty(inode);
569 inode_unlock(inode);
575 static int exfat_ioctl_fitrim(struct inode *inode, unsigned long arg)
583 if (!bdev_max_discard_sectors(inode->i_sb->s_bdev))
590 bdev_discard_granularity(inode->i_sb->s_bdev));
592 ret = exfat_trim_fs(inode, &range);
666 struct inode *inode = file_inode(filp);
671 return exfat_ioctl_get_attributes(inode, user_attr);
675 return exfat_ioctl_shutdown(inode->i_sb, arg);
677 return exfat_ioctl_fitrim(inode, arg);
679 return exfat_ioctl_get_volume_label(inode->i_sb, arg);
681 return exfat_ioctl_set_volume_label(inode->i_sb, arg);
697 struct inode *inode = filp->f_mapping->host;
700 if (unlikely(exfat_forced_shutdown(inode->i_sb)))
707 err = sync_blockdev(inode->i_sb->s_bdev);
711 return blkdev_issue_flush(inode->i_sb->s_bdev);
723 static int exfat_prepare_valid_range(struct inode *inode, loff_t start,
726 struct address_space *mapping = inode->i_mapping;
756 static int exfat_extend_valid_size(struct inode *inode, loff_t new_valid_size)
758 struct exfat_inode_info *ei = EXFAT_I(inode);
763 inode_dio_wait(inode);
768 if (i_size_read(inode) < new_valid_size) {
774 ret = exfat_cont_expand(inode, new_valid_size);
784 filemap_invalidate_lock(inode->i_mapping);
786 unmap_mapping_range(inode->i_mapping, gap_start,
788 ret = exfat_prepare_valid_range(inode, gap_start, new_valid_size);
789 filemap_invalidate_unlock(inode->i_mapping);
791 filemap_invalidate_lock(inode->i_mapping);
792 truncate_setsize(inode, old_valid_size);
793 exfat_truncate(inode);
794 filemap_invalidate_unlock(inode->i_mapping);
800 round_up(new_valid_size, i_blocksize(inode)));
801 mark_inode_dirty(inode);
811 static void exfat_write_failed(struct inode *inode)
813 inode_dio_wait(inode);
814 filemap_invalidate_lock(inode->i_mapping);
815 truncate_pagecache(inode, i_size_read(inode));
816 exfat_truncate(inode);
817 filemap_invalidate_unlock(inode->i_mapping);
876 struct inode *inode = file_inode(file);
877 struct exfat_inode_info *ei = EXFAT_I(inode);
881 if (unlikely(exfat_forced_shutdown(inode->i_sb)))
884 inode_lock(inode);
898 if (pos > i_size_read(inode))
899 truncate_pagecache(inode, i_size_read(inode));
903 ret = exfat_extend_valid_size(inode, pos);
905 exfat_err(inode->i_sb,
922 inode_dio_wait(inode);
926 if (ret != -EIOCBQUEUED && end > i_size_read(inode))
927 exfat_write_failed(inode);
931 inode_unlock(inode);
943 inode_unlock(inode);
950 struct inode *inode = file_inode(iocb->ki_filp);
953 if (unlikely(exfat_forced_shutdown(inode->i_sb)))
956 inode_lock_shared(inode);
966 inode_unlock_shared(inode);
973 struct inode *inode = file_inode(vmf->vma->vm_file);
974 struct exfat_inode_info *ei = EXFAT_I(inode);
978 if (!inode_trylock(inode))
983 new_valid_size = min(mmap_valid_size, i_size_read(inode));
996 err = exfat_prepare_valid_range(inode, zeroed_size,
999 inode_unlock(inode);
1010 round_up(new_valid_size, i_blocksize(inode)));
1012 mark_inode_dirty(inode);
1015 sb_start_pagefault(inode->i_sb);
1018 filemap_invalidate_lock_shared(inode->i_mapping);
1020 filemap_invalidate_unlock_shared(inode->i_mapping);
1021 sb_end_pagefault(inode->i_sb);
1022 inode_unlock(inode);
1053 static int exfat_file_open(struct inode *inode, struct file *filp)
1057 if (unlikely(exfat_forced_shutdown(inode->i_sb)))
1060 err = generic_file_open(inode, filp);
1071 struct inode *inode = file->f_mapping->host;
1075 inode_lock_shared(inode);
1076 offset = iomap_seek_hole(inode, offset, &exfat_iomap_ops);
1077 inode_unlock_shared(inode);
1080 inode_lock_shared(inode);
1081 offset = iomap_seek_data(inode, offset, &exfat_iomap_ops);
1082 inode_unlock_shared(inode);
1089 return vfs_setpos(file, offset, inode->i_sb->s_maxbytes);