Lines Matching refs:inode
36 struct inode *inode = file_inode(vma->vm_file); in f2fs_vm_page_mkwrite() local
37 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_vm_page_mkwrite()
43 sb_start_pagefault(inode->i_sb); in f2fs_vm_page_mkwrite()
45 f2fs_bug_on(sbi, f2fs_has_inline_data(inode)); in f2fs_vm_page_mkwrite()
49 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_vm_page_mkwrite()
60 if (unlikely(page->mapping != inode->i_mapping || in f2fs_vm_page_mkwrite()
61 page_offset(page) > i_size_read(inode) || in f2fs_vm_page_mkwrite()
75 if (((page->index + 1) << PAGE_CACHE_SHIFT) > i_size_read(inode)) { in f2fs_vm_page_mkwrite()
77 offset = i_size_read(inode) & ~PAGE_CACHE_MASK; in f2fs_vm_page_mkwrite()
88 sb_end_pagefault(inode->i_sb); in f2fs_vm_page_mkwrite()
98 static int get_parent_ino(struct inode *inode, nid_t *pino) in get_parent_ino() argument
102 inode = igrab(inode); in get_parent_ino()
103 dentry = d_find_any_alias(inode); in get_parent_ino()
104 iput(inode); in get_parent_ino()
108 if (update_dent_inode(inode, &dentry->d_name)) { in get_parent_ino()
118 static inline bool need_do_checkpoint(struct inode *inode) in need_do_checkpoint() argument
120 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in need_do_checkpoint()
123 if (!S_ISREG(inode->i_mode) || inode->i_nlink != 1) in need_do_checkpoint()
125 else if (file_wrong_pino(inode)) in need_do_checkpoint()
129 else if (!is_checkpointed_node(sbi, F2FS_I(inode)->i_pino)) in need_do_checkpoint()
131 else if (F2FS_I(inode)->xattr_ver == cur_cp_version(F2FS_CKPT(sbi))) in need_do_checkpoint()
152 static void try_to_fix_pino(struct inode *inode) in try_to_fix_pino() argument
154 struct f2fs_inode_info *fi = F2FS_I(inode); in try_to_fix_pino()
159 if (file_wrong_pino(inode) && inode->i_nlink == 1 && in try_to_fix_pino()
160 get_parent_ino(inode, &pino)) { in try_to_fix_pino()
162 file_got_pino(inode); in try_to_fix_pino()
165 mark_inode_dirty_sync(inode); in try_to_fix_pino()
166 f2fs_write_inode(inode, NULL); in try_to_fix_pino()
174 struct inode *inode = file->f_mapping->host; in f2fs_sync_file() local
175 struct f2fs_inode_info *fi = F2FS_I(inode); in f2fs_sync_file()
176 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_sync_file()
177 nid_t ino = inode->i_ino; in f2fs_sync_file()
186 if (unlikely(f2fs_readonly(inode->i_sb))) in f2fs_sync_file()
189 trace_f2fs_sync_file_enter(inode); in f2fs_sync_file()
192 if (get_dirty_pages(inode) <= SM_I(sbi)->min_fsync_blocks) in f2fs_sync_file()
194 ret = filemap_write_and_wait_range(inode->i_mapping, start, end); in f2fs_sync_file()
198 trace_f2fs_sync_file_exit(inode, need_cp, datasync, ret); in f2fs_sync_file()
204 update_inode_page(inode); in f2fs_sync_file()
232 need_cp = need_do_checkpoint(inode); in f2fs_sync_file()
237 ret = f2fs_sync_fs(inode->i_sb, 1); in f2fs_sync_file()
243 try_to_fix_pino(inode); in f2fs_sync_file()
256 mark_inode_dirty_sync(inode); in f2fs_sync_file()
257 f2fs_write_inode(inode, NULL); in f2fs_sync_file()
273 trace_f2fs_sync_file_exit(inode, need_cp, datasync, ret); in f2fs_sync_file()
315 struct inode *inode = file->f_mapping->host; in f2fs_seek_block() local
316 loff_t maxbytes = inode->i_sb->s_maxbytes; in f2fs_seek_block()
323 mutex_lock(&inode->i_mutex); in f2fs_seek_block()
325 isize = i_size_read(inode); in f2fs_seek_block()
330 if (f2fs_has_inline_data(inode) || f2fs_has_inline_dentry(inode)) { in f2fs_seek_block()
338 dirty = __get_first_dirty_index(inode->i_mapping, pgofs, whence); in f2fs_seek_block()
341 set_new_dnode(&dn, inode, NULL, NULL, 0); in f2fs_seek_block()
349 F2FS_I(inode)); in f2fs_seek_block()
356 end_offset = ADDRS_PER_PAGE(dn.node_page, F2FS_I(inode)); in f2fs_seek_block()
378 mutex_unlock(&inode->i_mutex); in f2fs_seek_block()
381 mutex_unlock(&inode->i_mutex); in f2fs_seek_block()
387 struct inode *inode = file->f_mapping->host; in f2fs_llseek() local
388 loff_t maxbytes = inode->i_sb->s_maxbytes; in f2fs_llseek()
395 maxbytes, i_size_read(inode)); in f2fs_llseek()
408 struct inode *inode = file_inode(file); in f2fs_file_mmap() local
411 if (f2fs_has_inline_data(inode)) { in f2fs_file_mmap()
412 int err = f2fs_convert_inline_inode(inode); in f2fs_file_mmap()
425 struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); in truncate_data_blocks_range()
442 clear_inode_flag(F2FS_I(dn->inode), in truncate_data_blocks_range()
447 dec_valid_block_count(sbi, dn->inode, nr_free); in truncate_data_blocks_range()
453 trace_f2fs_truncate_data_blocks_range(dn->inode, dn->nid, in truncate_data_blocks_range()
463 static int truncate_partial_data_page(struct inode *inode, u64 from, in truncate_partial_data_page() argument
472 page = find_data_page(inode, from >> PAGE_CACHE_SHIFT, force); in truncate_partial_data_page()
478 page->mapping != inode->i_mapping)) in truncate_partial_data_page()
490 int truncate_blocks(struct inode *inode, u64 from, bool lock) in truncate_blocks() argument
492 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in truncate_blocks()
493 unsigned int blocksize = inode->i_sb->s_blocksize; in truncate_blocks()
500 trace_f2fs_truncate_blocks_enter(inode, from); in truncate_blocks()
507 ipage = get_node_page(sbi, inode->i_ino); in truncate_blocks()
513 if (f2fs_has_inline_data(inode)) { in truncate_blocks()
521 set_new_dnode(&dn, inode, ipage, NULL, 0); in truncate_blocks()
529 count = ADDRS_PER_PAGE(dn.node_page, F2FS_I(inode)); in truncate_blocks()
541 err = truncate_inode_blocks(inode, free_from); in truncate_blocks()
548 err = truncate_partial_data_page(inode, from, truncate_page); in truncate_blocks()
550 trace_f2fs_truncate_blocks_exit(inode, err); in truncate_blocks()
554 void f2fs_truncate(struct inode *inode) in f2fs_truncate() argument
556 if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || in f2fs_truncate()
557 S_ISLNK(inode->i_mode))) in f2fs_truncate()
560 trace_f2fs_truncate(inode); in f2fs_truncate()
563 if (f2fs_has_inline_data(inode) && !f2fs_may_inline(inode)) { in f2fs_truncate()
564 if (f2fs_convert_inline_inode(inode)) in f2fs_truncate()
568 if (!truncate_blocks(inode, i_size_read(inode), true)) { in f2fs_truncate()
569 inode->i_mtime = inode->i_ctime = CURRENT_TIME; in f2fs_truncate()
570 mark_inode_dirty(inode); in f2fs_truncate()
577 struct inode *inode = d_inode(dentry); in f2fs_getattr() local
578 generic_fillattr(inode, stat); in f2fs_getattr()
584 static void __setattr_copy(struct inode *inode, const struct iattr *attr) in __setattr_copy() argument
586 struct f2fs_inode_info *fi = F2FS_I(inode); in __setattr_copy()
590 inode->i_uid = attr->ia_uid; in __setattr_copy()
592 inode->i_gid = attr->ia_gid; in __setattr_copy()
594 inode->i_atime = timespec_trunc(attr->ia_atime, in __setattr_copy()
595 inode->i_sb->s_time_gran); in __setattr_copy()
597 inode->i_mtime = timespec_trunc(attr->ia_mtime, in __setattr_copy()
598 inode->i_sb->s_time_gran); in __setattr_copy()
600 inode->i_ctime = timespec_trunc(attr->ia_ctime, in __setattr_copy()
601 inode->i_sb->s_time_gran); in __setattr_copy()
605 if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) in __setattr_copy()
616 struct inode *inode = d_inode(dentry); in f2fs_setattr() local
617 struct f2fs_inode_info *fi = F2FS_I(inode); in f2fs_setattr()
620 err = inode_change_ok(inode, attr); in f2fs_setattr()
625 if (attr->ia_size != i_size_read(inode)) { in f2fs_setattr()
626 truncate_setsize(inode, attr->ia_size); in f2fs_setattr()
627 f2fs_truncate(inode); in f2fs_setattr()
628 f2fs_balance_fs(F2FS_I_SB(inode)); in f2fs_setattr()
634 f2fs_truncate(inode); in f2fs_setattr()
638 __setattr_copy(inode, attr); in f2fs_setattr()
641 err = posix_acl_chmod(inode, get_inode_mode(inode)); in f2fs_setattr()
643 inode->i_mode = fi->i_acl_mode; in f2fs_setattr()
648 mark_inode_dirty(inode); in f2fs_setattr()
666 static void fill_zero(struct inode *inode, pgoff_t index, in fill_zero() argument
669 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in fill_zero()
678 page = get_new_data_page(inode, NULL, index, false); in fill_zero()
689 int truncate_hole(struct inode *inode, pgoff_t pg_start, pgoff_t pg_end) in truncate_hole() argument
697 set_new_dnode(&dn, inode, NULL, NULL, 0); in truncate_hole()
712 static int punch_hole(struct inode *inode, loff_t offset, loff_t len) in punch_hole() argument
718 if (!S_ISREG(inode->i_mode)) in punch_hole()
722 if (offset >= inode->i_size) in punch_hole()
725 if (f2fs_has_inline_data(inode)) { in punch_hole()
726 ret = f2fs_convert_inline_inode(inode); in punch_hole()
738 fill_zero(inode, pg_start, off_start, in punch_hole()
742 fill_zero(inode, pg_start++, off_start, in punch_hole()
745 fill_zero(inode, pg_end, 0, off_end); in punch_hole()
748 struct address_space *mapping = inode->i_mapping; in punch_hole()
750 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in punch_hole()
760 ret = truncate_hole(inode, pg_start, pg_end); in punch_hole()
768 static int expand_inode_data(struct inode *inode, loff_t offset, in expand_inode_data() argument
771 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in expand_inode_data()
773 loff_t new_size = i_size_read(inode); in expand_inode_data()
779 ret = inode_newsize_ok(inode, (len + offset)); in expand_inode_data()
783 if (f2fs_has_inline_data(inode)) { in expand_inode_data()
784 ret = f2fs_convert_inline_inode(inode); in expand_inode_data()
803 set_new_dnode(&dn, inode, NULL, NULL, 0); in expand_inode_data()
819 i_size_read(inode) < new_size) { in expand_inode_data()
820 i_size_write(inode, new_size); in expand_inode_data()
821 mark_inode_dirty(inode); in expand_inode_data()
822 update_inode_page(inode); in expand_inode_data()
832 struct inode *inode = file_inode(file); in f2fs_fallocate() local
838 mutex_lock(&inode->i_mutex); in f2fs_fallocate()
841 ret = punch_hole(inode, offset, len); in f2fs_fallocate()
843 ret = expand_inode_data(inode, offset, len, mode); in f2fs_fallocate()
846 inode->i_mtime = inode->i_ctime = CURRENT_TIME; in f2fs_fallocate()
847 mark_inode_dirty(inode); in f2fs_fallocate()
850 mutex_unlock(&inode->i_mutex); in f2fs_fallocate()
852 trace_f2fs_fallocate(inode, mode, offset, len, ret); in f2fs_fallocate()
856 static int f2fs_release_file(struct inode *inode, struct file *filp) in f2fs_release_file() argument
859 if (f2fs_is_atomic_file(inode)) in f2fs_release_file()
860 commit_inmem_pages(inode, true); in f2fs_release_file()
861 if (f2fs_is_volatile_file(inode)) { in f2fs_release_file()
862 set_inode_flag(F2FS_I(inode), FI_DROP_CACHE); in f2fs_release_file()
863 filemap_fdatawrite(inode->i_mapping); in f2fs_release_file()
864 clear_inode_flag(F2FS_I(inode), FI_DROP_CACHE); in f2fs_release_file()
884 struct inode *inode = file_inode(filp); in f2fs_ioc_getflags() local
885 struct f2fs_inode_info *fi = F2FS_I(inode); in f2fs_ioc_getflags()
892 struct inode *inode = file_inode(filp); in f2fs_ioc_setflags() local
893 struct f2fs_inode_info *fi = F2FS_I(inode); in f2fs_ioc_setflags()
902 if (!inode_owner_or_capable(inode)) { in f2fs_ioc_setflags()
912 flags = f2fs_mask_flags(inode->i_mode, flags); in f2fs_ioc_setflags()
914 mutex_lock(&inode->i_mutex); in f2fs_ioc_setflags()
920 mutex_unlock(&inode->i_mutex); in f2fs_ioc_setflags()
929 mutex_unlock(&inode->i_mutex); in f2fs_ioc_setflags()
931 f2fs_set_inode_flags(inode); in f2fs_ioc_setflags()
932 inode->i_ctime = CURRENT_TIME; in f2fs_ioc_setflags()
933 mark_inode_dirty(inode); in f2fs_ioc_setflags()
941 struct inode *inode = file_inode(filp); in f2fs_ioc_getversion() local
943 return put_user(inode->i_generation, (int __user *)arg); in f2fs_ioc_getversion()
948 struct inode *inode = file_inode(filp); in f2fs_ioc_start_atomic_write() local
950 if (!inode_owner_or_capable(inode)) in f2fs_ioc_start_atomic_write()
953 f2fs_balance_fs(F2FS_I_SB(inode)); in f2fs_ioc_start_atomic_write()
955 if (f2fs_is_atomic_file(inode)) in f2fs_ioc_start_atomic_write()
958 set_inode_flag(F2FS_I(inode), FI_ATOMIC_FILE); in f2fs_ioc_start_atomic_write()
960 return f2fs_convert_inline_inode(inode); in f2fs_ioc_start_atomic_write()
965 struct inode *inode = file_inode(filp); in f2fs_ioc_commit_atomic_write() local
968 if (!inode_owner_or_capable(inode)) in f2fs_ioc_commit_atomic_write()
971 if (f2fs_is_volatile_file(inode)) in f2fs_ioc_commit_atomic_write()
978 if (f2fs_is_atomic_file(inode)) in f2fs_ioc_commit_atomic_write()
979 commit_inmem_pages(inode, false); in f2fs_ioc_commit_atomic_write()
983 clear_inode_flag(F2FS_I(inode), FI_ATOMIC_FILE); in f2fs_ioc_commit_atomic_write()
989 struct inode *inode = file_inode(filp); in f2fs_ioc_start_volatile_write() local
991 if (!inode_owner_or_capable(inode)) in f2fs_ioc_start_volatile_write()
994 if (f2fs_is_volatile_file(inode)) in f2fs_ioc_start_volatile_write()
997 set_inode_flag(F2FS_I(inode), FI_VOLATILE_FILE); in f2fs_ioc_start_volatile_write()
999 return f2fs_convert_inline_inode(inode); in f2fs_ioc_start_volatile_write()
1004 struct inode *inode = file_inode(filp); in f2fs_ioc_release_volatile_write() local
1006 if (!inode_owner_or_capable(inode)) in f2fs_ioc_release_volatile_write()
1009 if (!f2fs_is_volatile_file(inode)) in f2fs_ioc_release_volatile_write()
1012 if (!f2fs_is_first_block_written(inode)) in f2fs_ioc_release_volatile_write()
1013 return truncate_partial_data_page(inode, 0, true); in f2fs_ioc_release_volatile_write()
1015 punch_hole(inode, 0, F2FS_BLKSIZE); in f2fs_ioc_release_volatile_write()
1021 struct inode *inode = file_inode(filp); in f2fs_ioc_abort_volatile_write() local
1024 if (!inode_owner_or_capable(inode)) in f2fs_ioc_abort_volatile_write()
1031 f2fs_balance_fs(F2FS_I_SB(inode)); in f2fs_ioc_abort_volatile_write()
1033 if (f2fs_is_atomic_file(inode)) { in f2fs_ioc_abort_volatile_write()
1034 commit_inmem_pages(inode, false); in f2fs_ioc_abort_volatile_write()
1035 clear_inode_flag(F2FS_I(inode), FI_ATOMIC_FILE); in f2fs_ioc_abort_volatile_write()
1038 if (f2fs_is_volatile_file(inode)) { in f2fs_ioc_abort_volatile_write()
1039 clear_inode_flag(F2FS_I(inode), FI_VOLATILE_FILE); in f2fs_ioc_abort_volatile_write()
1040 filemap_fdatawrite(inode->i_mapping); in f2fs_ioc_abort_volatile_write()
1041 set_inode_flag(F2FS_I(inode), FI_VOLATILE_FILE); in f2fs_ioc_abort_volatile_write()
1049 struct inode *inode = file_inode(filp); in f2fs_ioc_shutdown() local
1050 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_ioc_shutdown()
1084 struct inode *inode = file_inode(filp); in f2fs_ioc_fitrim() local
1085 struct super_block *sb = inode->i_sb; in f2fs_ioc_fitrim()