Lines Matching refs:inode
58 struct inode *inode = file_inode(iocb->ki_filp); in ext4_should_use_dio() local
59 u32 dio_align = ext4_dio_alignment(inode); in ext4_should_use_dio()
73 struct inode *inode = file_inode(iocb->ki_filp); in ext4_dio_read_iter() local
76 if (!inode_trylock_shared(inode)) in ext4_dio_read_iter()
79 inode_lock_shared(inode); in ext4_dio_read_iter()
83 inode_unlock_shared(inode); in ext4_dio_read_iter()
96 inode_unlock_shared(inode); in ext4_dio_read_iter()
105 struct inode *inode = file_inode(iocb->ki_filp); in ext4_dax_read_iter() local
109 if (!inode_trylock_shared(inode)) in ext4_dax_read_iter()
112 inode_lock_shared(inode); in ext4_dax_read_iter()
118 if (!IS_DAX(inode)) { in ext4_dax_read_iter()
119 inode_unlock_shared(inode); in ext4_dax_read_iter()
124 inode_unlock_shared(inode); in ext4_dax_read_iter()
133 struct inode *inode = file_inode(iocb->ki_filp); in ext4_file_read_iter() local
135 if (unlikely(ext4_forced_shutdown(inode->i_sb))) in ext4_file_read_iter()
142 if (IS_DAX(inode)) in ext4_file_read_iter()
155 struct inode *inode = file_inode(in); in ext4_file_splice_read() local
157 if (unlikely(ext4_forced_shutdown(inode->i_sb))) in ext4_file_splice_read()
167 static int ext4_release_file(struct inode *inode, struct file *filp) in ext4_release_file() argument
169 if (ext4_test_inode_state(inode, EXT4_STATE_DA_ALLOC_CLOSE)) { in ext4_release_file()
170 ext4_alloc_da_blocks(inode); in ext4_release_file()
171 ext4_clear_inode_state(inode, EXT4_STATE_DA_ALLOC_CLOSE); in ext4_release_file()
175 (atomic_read(&inode->i_writecount) == 1) && in ext4_release_file()
176 !EXT4_I(inode)->i_reserved_data_blocks) { in ext4_release_file()
177 down_write(&EXT4_I(inode)->i_data_sem); in ext4_release_file()
178 ext4_discard_preallocations(inode); in ext4_release_file()
179 up_write(&EXT4_I(inode)->i_data_sem); in ext4_release_file()
181 if (is_dx(inode) && filp->private_data) in ext4_release_file()
197 ext4_unaligned_io(struct inode *inode, struct iov_iter *from, loff_t pos) in ext4_unaligned_io() argument
199 struct super_block *sb = inode->i_sb; in ext4_unaligned_io()
209 ext4_extending_io(struct inode *inode, loff_t offset, size_t len) in ext4_extending_io() argument
211 if (offset + len > i_size_read(inode) || in ext4_extending_io()
212 offset + len > EXT4_I(inode)->i_disksize) in ext4_extending_io()
218 static bool ext4_overwrite_io(struct inode *inode, in ext4_overwrite_io() argument
222 unsigned int blkbits = inode->i_blkbits; in ext4_overwrite_io()
225 if (pos + len > i_size_read(inode)) in ext4_overwrite_io()
232 err = ext4_map_blocks(NULL, inode, &map, 0); in ext4_overwrite_io()
247 struct inode *inode = file_inode(iocb->ki_filp); in ext4_generic_write_checks() local
250 if (unlikely(IS_IMMUTABLE(inode))) in ext4_generic_write_checks()
261 if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) { in ext4_generic_write_checks()
262 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); in ext4_generic_write_checks()
290 struct inode *inode = file_inode(iocb->ki_filp); in ext4_buffered_write_iter() local
295 inode_lock(inode); in ext4_buffered_write_iter()
303 inode_unlock(inode); in ext4_buffered_write_iter()
309 static ssize_t ext4_handle_inode_extension(struct inode *inode, loff_t offset, in ext4_handle_inode_extension() argument
314 lockdep_assert_held_write(&inode->i_rwsem); in ext4_handle_inode_extension()
315 handle = ext4_journal_start(inode, EXT4_HT_INODE, 2); in ext4_handle_inode_extension()
319 if (ext4_update_inode_size(inode, offset + written)) { in ext4_handle_inode_extension()
320 int ret = ext4_mark_inode_dirty(handle, inode); in ext4_handle_inode_extension()
327 if ((written == count) && inode->i_nlink) in ext4_handle_inode_extension()
328 ext4_orphan_del(handle, inode); in ext4_handle_inode_extension()
338 static void ext4_inode_extension_cleanup(struct inode *inode, bool need_trunc) in ext4_inode_extension_cleanup() argument
340 lockdep_assert_held_write(&inode->i_rwsem); in ext4_inode_extension_cleanup()
342 ext4_truncate_failed_write(inode); in ext4_inode_extension_cleanup()
348 if (inode->i_nlink) in ext4_inode_extension_cleanup()
349 ext4_orphan_del(NULL, inode); in ext4_inode_extension_cleanup()
358 if (ext4_inode_orphan_tracked(inode) && inode->i_nlink) { in ext4_inode_extension_cleanup()
359 handle_t *handle = ext4_journal_start(inode, EXT4_HT_INODE, 2); in ext4_inode_extension_cleanup()
367 ext4_orphan_del(NULL, inode); in ext4_inode_extension_cleanup()
370 ext4_orphan_del(handle, inode); in ext4_inode_extension_cleanup()
379 struct inode *inode = file_inode(iocb->ki_filp); in ext4_dio_write_end_io() local
384 error = ext4_convert_unwritten_extents_atomic(NULL, inode, pos, in ext4_dio_write_end_io()
387 error = ext4_convert_unwritten_extents(NULL, inode, pos, size); in ext4_dio_write_end_io()
399 if (pos + size <= READ_ONCE(EXT4_I(inode)->i_disksize) && in ext4_dio_write_end_io()
400 pos + size <= i_size_read(inode)) in ext4_dio_write_end_io()
402 error = ext4_handle_inode_extension(inode, pos, size, size); in ext4_dio_write_end_io()
431 struct inode *inode = file_inode(file); in ext4_dio_write_checks() local
445 unaligned_io = ext4_unaligned_io(inode, from, offset); in ext4_dio_write_checks()
446 *extend = ext4_extending_io(inode, offset, count); in ext4_dio_write_checks()
447 overwrite = ext4_overwrite_io(inode, offset, count, &unwritten); in ext4_dio_write_checks()
461 ((!IS_NOSEC(inode) || *extend || !overwrite || in ext4_dio_write_checks()
467 inode_unlock_shared(inode); in ext4_dio_write_checks()
469 inode_lock(inode); in ext4_dio_write_checks()
486 inode_dio_wait(inode); in ext4_dio_write_checks()
497 inode_unlock_shared(inode); in ext4_dio_write_checks()
499 inode_unlock(inode); in ext4_dio_write_checks()
507 struct inode *inode = file_inode(iocb->ki_filp); in ext4_dio_write_iter() local
519 if (offset + count > i_size_read(inode)) in ext4_dio_write_iter()
524 if (!inode_trylock_shared(inode)) in ext4_dio_write_iter()
527 if (!inode_trylock(inode)) in ext4_dio_write_iter()
532 inode_lock_shared(inode); in ext4_dio_write_iter()
534 inode_lock(inode); in ext4_dio_write_iter()
540 inode_unlock_shared(inode); in ext4_dio_write_iter()
542 inode_unlock(inode); in ext4_dio_write_iter()
553 ext4_clear_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA); in ext4_dio_write_iter()
564 handle = ext4_journal_start(inode, EXT4_HT_INODE, 2); in ext4_dio_write_iter()
570 ret = ext4_orphan_add(handle, inode); in ext4_dio_write_iter()
588 ext4_inode_extension_cleanup(inode, ret < 0); in ext4_dio_write_iter()
593 inode_unlock_shared(inode); in ext4_dio_write_iter()
595 inode_unlock(inode); in ext4_dio_write_iter()
642 struct inode *inode = file_inode(iocb->ki_filp); in ext4_dax_write_iter() local
645 if (!inode_trylock(inode)) in ext4_dax_write_iter()
648 inode_lock(inode); in ext4_dax_write_iter()
658 if (offset + count > EXT4_I(inode)->i_disksize) { in ext4_dax_write_iter()
659 handle = ext4_journal_start(inode, EXT4_HT_INODE, 2); in ext4_dax_write_iter()
665 ret = ext4_orphan_add(handle, inode); in ext4_dax_write_iter()
678 ret = ext4_handle_inode_extension(inode, offset, ret, count); in ext4_dax_write_iter()
679 ext4_inode_extension_cleanup(inode, ret < (ssize_t)count); in ext4_dax_write_iter()
682 inode_unlock(inode); in ext4_dax_write_iter()
693 struct inode *inode = file_inode(iocb->ki_filp); in ext4_file_write_iter() local
695 ret = ext4_emergency_state(inode->i_sb); in ext4_file_write_iter()
700 if (IS_DAX(inode)) in ext4_file_write_iter()
707 if (len < EXT4_SB(inode->i_sb)->s_awu_min || in ext4_file_write_iter()
708 len > EXT4_SB(inode->i_sb)->s_awu_max) in ext4_file_write_iter()
729 struct inode *inode = file_inode(vmf->vma->vm_file); in ext4_dax_huge_fault() local
730 struct super_block *sb = inode->i_sb; in ext4_dax_huge_fault()
807 struct inode *inode = file->f_mapping->host; in ext4_file_mmap_prepare() local
808 struct dax_device *dax_dev = EXT4_SB(inode->i_sb)->s_daxdev; in ext4_file_mmap_prepare()
811 ret = ext4_emergency_state(inode->i_sb); in ext4_file_mmap_prepare()
813 ret = ext4_forced_shutdown(inode->i_sb) ? -EIO : 0; in ext4_file_mmap_prepare()
885 static int ext4_file_open(struct inode *inode, struct file *filp) in ext4_file_open() argument
890 ret = ext4_emergency_state(inode->i_sb); in ext4_file_open()
892 ret = ext4_forced_shutdown(inode->i_sb) ? -EIO : 0; in ext4_file_open()
896 ret = ext4_sample_last_mounted(inode->i_sb, filp->f_path.mnt); in ext4_file_open()
900 ret = fscrypt_file_open(inode, filp); in ext4_file_open()
904 ret = fsverity_file_open(inode, filp); in ext4_file_open()
913 ret = ext4_inode_attach_jinode(inode); in ext4_file_open()
918 if (ext4_inode_can_atomic_write(inode)) in ext4_file_open()
922 return dquot_file_open(inode, filp); in ext4_file_open()
932 struct inode *inode = file->f_mapping->host; in ext4_llseek() local
933 loff_t maxbytes = ext4_get_maxbytes(inode); in ext4_llseek()
938 maxbytes, i_size_read(inode)); in ext4_llseek()
940 inode_lock_shared(inode); in ext4_llseek()
941 offset = iomap_seek_hole(inode, offset, in ext4_llseek()
943 inode_unlock_shared(inode); in ext4_llseek()
946 inode_lock_shared(inode); in ext4_llseek()
947 offset = iomap_seek_data(inode, offset, in ext4_llseek()
949 inode_unlock_shared(inode); in ext4_llseek()