file.c (c8e43d55b1aa05d175daac25d228c7c1c71c7b11) | file.c (e17fe6579de023725ec22a16965e9099e4a05ac9) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * fs/f2fs/file.c 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 */ 8#include <linux/fs.h> --- 15 unchanged lines hidden (view full) --- 24#include <linux/sched/signal.h> 25 26#include "f2fs.h" 27#include "node.h" 28#include "segment.h" 29#include "xattr.h" 30#include "acl.h" 31#include "gc.h" | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * fs/f2fs/file.c 4 * 5 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com/ 7 */ 8#include <linux/fs.h> --- 15 unchanged lines hidden (view full) --- 24#include <linux/sched/signal.h> 25 26#include "f2fs.h" 27#include "node.h" 28#include "segment.h" 29#include "xattr.h" 30#include "acl.h" 31#include "gc.h" |
32#include "trace.h" |
|
32#include <trace/events/f2fs.h> 33#include <uapi/linux/f2fs.h> 34 35static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf) 36{ 37 struct inode *inode = file_inode(vmf->vma->vm_file); 38 vm_fault_t ret; 39 --- 14 unchanged lines hidden (view full) --- 54{ 55 struct page *page = vmf->page; 56 struct inode *inode = file_inode(vmf->vma->vm_file); 57 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); 58 struct dnode_of_data dn; 59 bool need_alloc = true; 60 int err = 0; 61 | 33#include <trace/events/f2fs.h> 34#include <uapi/linux/f2fs.h> 35 36static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf) 37{ 38 struct inode *inode = file_inode(vmf->vma->vm_file); 39 vm_fault_t ret; 40 --- 14 unchanged lines hidden (view full) --- 55{ 56 struct page *page = vmf->page; 57 struct inode *inode = file_inode(vmf->vma->vm_file); 58 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); 59 struct dnode_of_data dn; 60 bool need_alloc = true; 61 int err = 0; 62 |
62 if (unlikely(IS_IMMUTABLE(inode))) 63 return VM_FAULT_SIGBUS; 64 | |
65 if (unlikely(f2fs_cp_error(sbi))) { 66 err = -EIO; 67 goto err; 68 } 69 70 if (!f2fs_is_checkpoint_ready(sbi)) { 71 err = -ENOSPC; 72 goto err; 73 } 74 | 63 if (unlikely(f2fs_cp_error(sbi))) { 64 err = -EIO; 65 goto err; 66 } 67 68 if (!f2fs_is_checkpoint_ready(sbi)) { 69 err = -ENOSPC; 70 goto err; 71 } 72 |
75 err = f2fs_convert_inline_inode(inode); 76 if (err) 77 goto err; 78 | |
79#ifdef CONFIG_F2FS_FS_COMPRESSION 80 if (f2fs_compressed_file(inode)) { 81 int ret = f2fs_is_compressed_cluster(inode, page->index); 82 83 if (ret < 0) { 84 err = ret; 85 goto err; 86 } else if (ret) { --- 280 unchanged lines hidden (view full) --- 367 if (!ret) { 368 f2fs_remove_ino_entry(sbi, ino, UPDATE_INO); 369 clear_inode_flag(inode, FI_UPDATE_WRITE); 370 f2fs_remove_ino_entry(sbi, ino, FLUSH_INO); 371 } 372 f2fs_update_time(sbi, REQ_TIME); 373out: 374 trace_f2fs_sync_file_exit(inode, cp_reason, datasync, ret); | 73#ifdef CONFIG_F2FS_FS_COMPRESSION 74 if (f2fs_compressed_file(inode)) { 75 int ret = f2fs_is_compressed_cluster(inode, page->index); 76 77 if (ret < 0) { 78 err = ret; 79 goto err; 80 } else if (ret) { --- 280 unchanged lines hidden (view full) --- 361 if (!ret) { 362 f2fs_remove_ino_entry(sbi, ino, UPDATE_INO); 363 clear_inode_flag(inode, FI_UPDATE_WRITE); 364 f2fs_remove_ino_entry(sbi, ino, FLUSH_INO); 365 } 366 f2fs_update_time(sbi, REQ_TIME); 367out: 368 trace_f2fs_sync_file_exit(inode, cp_reason, datasync, ret); |
369 f2fs_trace_ios(NULL, 1); |
|
375 return ret; 376} 377 378int f2fs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) 379{ 380 if (unlikely(f2fs_cp_error(F2FS_I_SB(file_inode(file))))) 381 return -EIO; 382 return f2fs_do_sync_file(file, start, end, datasync, false); --- 100 unchanged lines hidden (view full) --- 483 return -ENXIO; 484} 485 486static loff_t f2fs_llseek(struct file *file, loff_t offset, int whence) 487{ 488 struct inode *inode = file->f_mapping->host; 489 loff_t maxbytes = inode->i_sb->s_maxbytes; 490 | 370 return ret; 371} 372 373int f2fs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) 374{ 375 if (unlikely(f2fs_cp_error(F2FS_I_SB(file_inode(file))))) 376 return -EIO; 377 return f2fs_do_sync_file(file, start, end, datasync, false); --- 100 unchanged lines hidden (view full) --- 478 return -ENXIO; 479} 480 481static loff_t f2fs_llseek(struct file *file, loff_t offset, int whence) 482{ 483 struct inode *inode = file->f_mapping->host; 484 loff_t maxbytes = inode->i_sb->s_maxbytes; 485 |
491 if (f2fs_compressed_file(inode)) 492 maxbytes = max_file_blocks(inode) << F2FS_BLKSIZE_BITS; 493 | |
494 switch (whence) { 495 case SEEK_SET: 496 case SEEK_CUR: 497 case SEEK_END: 498 return generic_file_llseek_size(file, offset, whence, 499 maxbytes, i_size_read(inode)); 500 case SEEK_DATA: 501 case SEEK_HOLE: 502 if (offset < 0) 503 return -ENXIO; 504 return f2fs_seek_block(file, offset, whence); 505 } 506 507 return -EINVAL; 508} 509 510static int f2fs_file_mmap(struct file *file, struct vm_area_struct *vma) 511{ 512 struct inode *inode = file_inode(file); | 486 switch (whence) { 487 case SEEK_SET: 488 case SEEK_CUR: 489 case SEEK_END: 490 return generic_file_llseek_size(file, offset, whence, 491 maxbytes, i_size_read(inode)); 492 case SEEK_DATA: 493 case SEEK_HOLE: 494 if (offset < 0) 495 return -ENXIO; 496 return f2fs_seek_block(file, offset, whence); 497 } 498 499 return -EINVAL; 500} 501 502static int f2fs_file_mmap(struct file *file, struct vm_area_struct *vma) 503{ 504 struct inode *inode = file_inode(file); |
505 int err; |
|
513 514 if (unlikely(f2fs_cp_error(F2FS_I_SB(inode)))) 515 return -EIO; 516 517 if (!f2fs_is_compress_backend_ready(inode)) 518 return -EOPNOTSUPP; 519 | 506 507 if (unlikely(f2fs_cp_error(F2FS_I_SB(inode)))) 508 return -EIO; 509 510 if (!f2fs_is_compress_backend_ready(inode)) 511 return -EOPNOTSUPP; 512 |
513 /* we don't need to use inline_data strictly */ 514 err = f2fs_convert_inline_inode(inode); 515 if (err) 516 return err; 517 |
|
520 file_accessed(file); 521 vma->vm_ops = &f2fs_file_vm_ops; 522 set_inode_flag(inode, FI_MMAP_FILE); 523 return 0; 524} 525 526static int f2fs_file_open(struct inode *inode, struct file *filp) 527{ --- 136 unchanged lines hidden (view full) --- 664 int count = 0, err = 0; 665 struct page *ipage; 666 bool truncate_page = false; 667 668 trace_f2fs_truncate_blocks_enter(inode, from); 669 670 free_from = (pgoff_t)F2FS_BLK_ALIGN(from); 671 | 518 file_accessed(file); 519 vma->vm_ops = &f2fs_file_vm_ops; 520 set_inode_flag(inode, FI_MMAP_FILE); 521 return 0; 522} 523 524static int f2fs_file_open(struct inode *inode, struct file *filp) 525{ --- 136 unchanged lines hidden (view full) --- 662 int count = 0, err = 0; 663 struct page *ipage; 664 bool truncate_page = false; 665 666 trace_f2fs_truncate_blocks_enter(inode, from); 667 668 free_from = (pgoff_t)F2FS_BLK_ALIGN(from); 669 |
672 if (free_from >= max_file_blocks(inode)) | 670 if (free_from >= sbi->max_file_blocks) |
673 goto free_partial; 674 675 if (lock) 676 f2fs_lock_op(sbi); 677 678 ipage = f2fs_get_node_page(sbi, inode->i_ino); 679 if (IS_ERR(ipage)) { 680 err = PTR_ERR(ipage); --- 83 unchanged lines hidden (view full) --- 764 765 trace_f2fs_truncate(inode); 766 767 if (time_to_inject(F2FS_I_SB(inode), FAULT_TRUNCATE)) { 768 f2fs_show_injection_info(F2FS_I_SB(inode), FAULT_TRUNCATE); 769 return -EIO; 770 } 771 | 671 goto free_partial; 672 673 if (lock) 674 f2fs_lock_op(sbi); 675 676 ipage = f2fs_get_node_page(sbi, inode->i_ino); 677 if (IS_ERR(ipage)) { 678 err = PTR_ERR(ipage); --- 83 unchanged lines hidden (view full) --- 762 763 trace_f2fs_truncate(inode); 764 765 if (time_to_inject(F2FS_I_SB(inode), FAULT_TRUNCATE)) { 766 f2fs_show_injection_info(F2FS_I_SB(inode), FAULT_TRUNCATE); 767 return -EIO; 768 } 769 |
772 err = dquot_initialize(inode); 773 if (err) 774 return err; 775 | |
776 /* we should check inline_data size */ 777 if (!f2fs_may_inline_data(inode)) { 778 err = f2fs_convert_inline_inode(inode); 779 if (err) 780 return err; 781 } 782 783 err = f2fs_truncate_blocks(inode, i_size_read(inode), true); --- 65 unchanged lines hidden (view full) --- 849 inode->i_atime = attr->ia_atime; 850 if (ia_valid & ATTR_MTIME) 851 inode->i_mtime = attr->ia_mtime; 852 if (ia_valid & ATTR_CTIME) 853 inode->i_ctime = attr->ia_ctime; 854 if (ia_valid & ATTR_MODE) { 855 umode_t mode = attr->ia_mode; 856 | 770 /* we should check inline_data size */ 771 if (!f2fs_may_inline_data(inode)) { 772 err = f2fs_convert_inline_inode(inode); 773 if (err) 774 return err; 775 } 776 777 err = f2fs_truncate_blocks(inode, i_size_read(inode), true); --- 65 unchanged lines hidden (view full) --- 843 inode->i_atime = attr->ia_atime; 844 if (ia_valid & ATTR_MTIME) 845 inode->i_mtime = attr->ia_mtime; 846 if (ia_valid & ATTR_CTIME) 847 inode->i_ctime = attr->ia_ctime; 848 if (ia_valid & ATTR_MODE) { 849 umode_t mode = attr->ia_mode; 850 |
857 if (!in_group_p(inode->i_gid) && 858 !capable_wrt_inode_uidgid(inode, CAP_FSETID)) | 851 if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) |
859 mode &= ~S_ISGID; 860 set_acl_inode(inode, mode); 861 } 862} 863#else 864#define __setattr_copy setattr_copy 865#endif 866 867int f2fs_setattr(struct dentry *dentry, struct iattr *attr) 868{ 869 struct inode *inode = d_inode(dentry); 870 int err; 871 872 if (unlikely(f2fs_cp_error(F2FS_I_SB(inode)))) 873 return -EIO; 874 | 852 mode &= ~S_ISGID; 853 set_acl_inode(inode, mode); 854 } 855} 856#else 857#define __setattr_copy setattr_copy 858#endif 859 860int f2fs_setattr(struct dentry *dentry, struct iattr *attr) 861{ 862 struct inode *inode = d_inode(dentry); 863 int err; 864 865 if (unlikely(f2fs_cp_error(F2FS_I_SB(inode)))) 866 return -EIO; 867 |
875 if (unlikely(IS_IMMUTABLE(inode))) 876 return -EPERM; 877 878 if (unlikely(IS_APPEND(inode) && 879 (attr->ia_valid & (ATTR_MODE | ATTR_UID | 880 ATTR_GID | ATTR_TIMES_SET)))) 881 return -EPERM; 882 | |
883 if ((attr->ia_valid & ATTR_SIZE) && 884 !f2fs_is_compress_backend_ready(inode)) 885 return -EOPNOTSUPP; 886 887 err = setattr_prepare(dentry, attr); 888 if (err) 889 return err; 890 --- 68 unchanged lines hidden (view full) --- 959 F2FS_I(inode)->last_disk_size = i_size_read(inode); 960 spin_unlock(&F2FS_I(inode)->i_size_lock); 961 } 962 963 __setattr_copy(inode, attr); 964 965 if (attr->ia_valid & ATTR_MODE) { 966 err = posix_acl_chmod(inode, f2fs_get_inode_mode(inode)); | 868 if ((attr->ia_valid & ATTR_SIZE) && 869 !f2fs_is_compress_backend_ready(inode)) 870 return -EOPNOTSUPP; 871 872 err = setattr_prepare(dentry, attr); 873 if (err) 874 return err; 875 --- 68 unchanged lines hidden (view full) --- 944 F2FS_I(inode)->last_disk_size = i_size_read(inode); 945 spin_unlock(&F2FS_I(inode)->i_size_lock); 946 } 947 948 __setattr_copy(inode, attr); 949 950 if (attr->ia_valid & ATTR_MODE) { 951 err = posix_acl_chmod(inode, f2fs_get_inode_mode(inode)); |
967 968 if (is_inode_flag_set(inode, FI_ACL_MODE)) { 969 if (!err) 970 inode->i_mode = F2FS_I(inode)->i_acl_mode; | 952 if (err || is_inode_flag_set(inode, FI_ACL_MODE)) { 953 inode->i_mode = F2FS_I(inode)->i_acl_mode; |
971 clear_inode_flag(inode, FI_ACL_MODE); 972 } 973 } 974 975 /* file size may changed here */ 976 f2fs_mark_inode_dirty_sync(inode, true); 977 978 /* inode change will produce dirty node pages flushed by checkpoint */ --- 1763 unchanged lines hidden (view full) --- 2742 sizeof(range))) 2743 return -EFAULT; 2744 2745 /* verify alignment of offset & size */ 2746 if (range.start & (F2FS_BLKSIZE - 1) || range.len & (F2FS_BLKSIZE - 1)) 2747 return -EINVAL; 2748 2749 if (unlikely((range.start + range.len) >> PAGE_SHIFT > | 954 clear_inode_flag(inode, FI_ACL_MODE); 955 } 956 } 957 958 /* file size may changed here */ 959 f2fs_mark_inode_dirty_sync(inode, true); 960 961 /* inode change will produce dirty node pages flushed by checkpoint */ --- 1763 unchanged lines hidden (view full) --- 2725 sizeof(range))) 2726 return -EFAULT; 2727 2728 /* verify alignment of offset & size */ 2729 if (range.start & (F2FS_BLKSIZE - 1) || range.len & (F2FS_BLKSIZE - 1)) 2730 return -EINVAL; 2731 2732 if (unlikely((range.start + range.len) >> PAGE_SHIFT > |
2750 max_file_blocks(inode))) | 2733 sbi->max_file_blocks)) |
2751 return -EINVAL; 2752 2753 err = mnt_want_write_file(filp); 2754 if (err) 2755 return err; 2756 2757 err = f2fs_defragment_range(sbi, filp, &range); 2758 mnt_drop_write_file(filp); --- 546 unchanged lines hidden (view full) --- 3305 if (is_inode_flag_set(inode, FI_NO_EXTENT)) 3306 return -EOPNOTSUPP; 3307 3308 map.m_lblk = 0; 3309 map.m_next_pgofs = NULL; 3310 map.m_next_extent = &m_next_extent; 3311 map.m_seg_type = NO_CHECK_TYPE; 3312 map.m_may_create = false; | 2734 return -EINVAL; 2735 2736 err = mnt_want_write_file(filp); 2737 if (err) 2738 return err; 2739 2740 err = f2fs_defragment_range(sbi, filp, &range); 2741 mnt_drop_write_file(filp); --- 546 unchanged lines hidden (view full) --- 3288 if (is_inode_flag_set(inode, FI_NO_EXTENT)) 3289 return -EOPNOTSUPP; 3290 3291 map.m_lblk = 0; 3292 map.m_next_pgofs = NULL; 3293 map.m_next_extent = &m_next_extent; 3294 map.m_seg_type = NO_CHECK_TYPE; 3295 map.m_may_create = false; |
3313 end = max_file_blocks(inode); | 3296 end = F2FS_I_SB(inode)->max_file_blocks; |
3314 3315 while (map.m_lblk < end) { 3316 map.m_len = end - map.m_lblk; 3317 3318 down_write(&fi->i_gc_rwsem[WRITE]); 3319 err = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_PRECACHE); 3320 up_write(&fi->i_gc_rwsem[WRITE]); 3321 if (err) --- 47 unchanged lines hidden (view full) --- 3369static int f2fs_ioc_measure_verity(struct file *filp, unsigned long arg) 3370{ 3371 if (!f2fs_sb_has_verity(F2FS_I_SB(file_inode(filp)))) 3372 return -EOPNOTSUPP; 3373 3374 return fsverity_ioctl_measure(filp, (void __user *)arg); 3375} 3376 | 3297 3298 while (map.m_lblk < end) { 3299 map.m_len = end - map.m_lblk; 3300 3301 down_write(&fi->i_gc_rwsem[WRITE]); 3302 err = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_PRECACHE); 3303 up_write(&fi->i_gc_rwsem[WRITE]); 3304 if (err) --- 47 unchanged lines hidden (view full) --- 3352static int f2fs_ioc_measure_verity(struct file *filp, unsigned long arg) 3353{ 3354 if (!f2fs_sb_has_verity(F2FS_I_SB(file_inode(filp)))) 3355 return -EOPNOTSUPP; 3356 3357 return fsverity_ioctl_measure(filp, (void __user *)arg); 3358} 3359 |
3360static int f2fs_ioc_read_verity_metadata(struct file *filp, unsigned long arg) 3361{ 3362 if (!f2fs_sb_has_verity(F2FS_I_SB(file_inode(filp)))) 3363 return -EOPNOTSUPP; 3364 3365 return fsverity_ioctl_read_metadata(filp, (const void __user *)arg); 3366} 3367 |
|
3377static int f2fs_ioc_getfslabel(struct file *filp, unsigned long arg) 3378{ 3379 struct inode *inode = file_inode(filp); 3380 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); 3381 char *vbuf; 3382 int count; 3383 int err = 0; 3384 --- 670 unchanged lines hidden (view full) --- 4055 ret = PTR_ERR(page); 4056 break; 4057 } 4058 page_len++; 4059 } 4060 4061 for (i = 0; i < page_len; i++, redirty_idx++) { 4062 page = find_lock_page(mapping, redirty_idx); | 3368static int f2fs_ioc_getfslabel(struct file *filp, unsigned long arg) 3369{ 3370 struct inode *inode = file_inode(filp); 3371 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); 3372 char *vbuf; 3373 int count; 3374 int err = 0; 3375 --- 670 unchanged lines hidden (view full) --- 4046 ret = PTR_ERR(page); 4047 break; 4048 } 4049 page_len++; 4050 } 4051 4052 for (i = 0; i < page_len; i++, redirty_idx++) { 4053 page = find_lock_page(mapping, redirty_idx); |
4063 if (!page) { 4064 ret = -ENOMEM; 4065 break; 4066 } | 4054 if (!page) 4055 ret = -ENOENT; |
4067 set_page_dirty(page); 4068 f2fs_put_page(page, 1); 4069 f2fs_put_page(page, 0); 4070 } 4071 4072 return ret; 4073} 4074 --- 211 unchanged lines hidden (view full) --- 4286 case F2FS_IOC_PRECACHE_EXTENTS: 4287 return f2fs_ioc_precache_extents(filp, arg); 4288 case F2FS_IOC_RESIZE_FS: 4289 return f2fs_ioc_resize_fs(filp, arg); 4290 case FS_IOC_ENABLE_VERITY: 4291 return f2fs_ioc_enable_verity(filp, arg); 4292 case FS_IOC_MEASURE_VERITY: 4293 return f2fs_ioc_measure_verity(filp, arg); | 4056 set_page_dirty(page); 4057 f2fs_put_page(page, 1); 4058 f2fs_put_page(page, 0); 4059 } 4060 4061 return ret; 4062} 4063 --- 211 unchanged lines hidden (view full) --- 4275 case F2FS_IOC_PRECACHE_EXTENTS: 4276 return f2fs_ioc_precache_extents(filp, arg); 4277 case F2FS_IOC_RESIZE_FS: 4278 return f2fs_ioc_resize_fs(filp, arg); 4279 case FS_IOC_ENABLE_VERITY: 4280 return f2fs_ioc_enable_verity(filp, arg); 4281 case FS_IOC_MEASURE_VERITY: 4282 return f2fs_ioc_measure_verity(filp, arg); |
4283 case FS_IOC_READ_VERITY_METADATA: 4284 return f2fs_ioc_read_verity_metadata(filp, arg); |
|
4294 case FS_IOC_GETFSLABEL: 4295 return f2fs_ioc_getfslabel(filp, arg); 4296 case FS_IOC_SETFSLABEL: 4297 return f2fs_ioc_setfslabel(filp, arg); 4298 case F2FS_IOC_GET_COMPRESS_BLOCKS: 4299 return f2fs_get_compress_blocks(filp, arg); 4300 case F2FS_IOC_RELEASE_COMPRESS_BLOCKS: 4301 return f2fs_release_compress_blocks(filp, arg); --- 61 unchanged lines hidden (view full) --- 4363 if (!inode_trylock(inode)) { 4364 ret = -EAGAIN; 4365 goto out; 4366 } 4367 } else { 4368 inode_lock(inode); 4369 } 4370 | 4285 case FS_IOC_GETFSLABEL: 4286 return f2fs_ioc_getfslabel(filp, arg); 4287 case FS_IOC_SETFSLABEL: 4288 return f2fs_ioc_setfslabel(filp, arg); 4289 case F2FS_IOC_GET_COMPRESS_BLOCKS: 4290 return f2fs_get_compress_blocks(filp, arg); 4291 case F2FS_IOC_RELEASE_COMPRESS_BLOCKS: 4292 return f2fs_release_compress_blocks(filp, arg); --- 61 unchanged lines hidden (view full) --- 4354 if (!inode_trylock(inode)) { 4355 ret = -EAGAIN; 4356 goto out; 4357 } 4358 } else { 4359 inode_lock(inode); 4360 } 4361 |
4371 if (unlikely(IS_IMMUTABLE(inode))) { 4372 ret = -EPERM; 4373 goto unlock; 4374 } 4375 | |
4376 ret = generic_write_checks(iocb, from); 4377 if (ret > 0) { 4378 bool preallocated = false; 4379 size_t target_size = 0; 4380 int err; 4381 4382 if (iov_iter_fault_in_readable(from, iov_iter_count(from))) 4383 set_inode_flag(inode, FI_NO_PREALLOC); --- 48 unchanged lines hidden (view full) --- 4432 4433 /* if we couldn't write data, we should deallocate blocks. */ 4434 if (preallocated && i_size_read(inode) < target_size) 4435 f2fs_truncate(inode); 4436 4437 if (ret > 0) 4438 f2fs_update_iostat(F2FS_I_SB(inode), APP_WRITE_IO, ret); 4439 } | 4362 ret = generic_write_checks(iocb, from); 4363 if (ret > 0) { 4364 bool preallocated = false; 4365 size_t target_size = 0; 4366 int err; 4367 4368 if (iov_iter_fault_in_readable(from, iov_iter_count(from))) 4369 set_inode_flag(inode, FI_NO_PREALLOC); --- 48 unchanged lines hidden (view full) --- 4418 4419 /* if we couldn't write data, we should deallocate blocks. */ 4420 if (preallocated && i_size_read(inode) < target_size) 4421 f2fs_truncate(inode); 4422 4423 if (ret > 0) 4424 f2fs_update_iostat(F2FS_I_SB(inode), APP_WRITE_IO, ret); 4425 } |
4440unlock: | |
4441 inode_unlock(inode); 4442out: 4443 trace_f2fs_file_write_iter(inode, iocb->ki_pos, 4444 iov_iter_count(from), ret); 4445 if (ret > 0) 4446 ret = generic_write_sync(iocb, ret); 4447 return ret; 4448} --- 94 unchanged lines hidden (view full) --- 4543 case FS_IOC_FSGETXATTR: 4544 case FS_IOC_FSSETXATTR: 4545 case F2FS_IOC_GET_PIN_FILE: 4546 case F2FS_IOC_SET_PIN_FILE: 4547 case F2FS_IOC_PRECACHE_EXTENTS: 4548 case F2FS_IOC_RESIZE_FS: 4549 case FS_IOC_ENABLE_VERITY: 4550 case FS_IOC_MEASURE_VERITY: | 4426 inode_unlock(inode); 4427out: 4428 trace_f2fs_file_write_iter(inode, iocb->ki_pos, 4429 iov_iter_count(from), ret); 4430 if (ret > 0) 4431 ret = generic_write_sync(iocb, ret); 4432 return ret; 4433} --- 94 unchanged lines hidden (view full) --- 4528 case FS_IOC_FSGETXATTR: 4529 case FS_IOC_FSSETXATTR: 4530 case F2FS_IOC_GET_PIN_FILE: 4531 case F2FS_IOC_SET_PIN_FILE: 4532 case F2FS_IOC_PRECACHE_EXTENTS: 4533 case F2FS_IOC_RESIZE_FS: 4534 case FS_IOC_ENABLE_VERITY: 4535 case FS_IOC_MEASURE_VERITY: |
4536 case FS_IOC_READ_VERITY_METADATA: |
|
4551 case FS_IOC_GETFSLABEL: 4552 case FS_IOC_SETFSLABEL: 4553 case F2FS_IOC_GET_COMPRESS_BLOCKS: 4554 case F2FS_IOC_RELEASE_COMPRESS_BLOCKS: 4555 case F2FS_IOC_RESERVE_COMPRESS_BLOCKS: 4556 case F2FS_IOC_SEC_TRIM_FILE: 4557 case F2FS_IOC_GET_COMPRESS_OPTION: 4558 case F2FS_IOC_SET_COMPRESS_OPTION: --- 27 unchanged lines hidden --- | 4537 case FS_IOC_GETFSLABEL: 4538 case FS_IOC_SETFSLABEL: 4539 case F2FS_IOC_GET_COMPRESS_BLOCKS: 4540 case F2FS_IOC_RELEASE_COMPRESS_BLOCKS: 4541 case F2FS_IOC_RESERVE_COMPRESS_BLOCKS: 4542 case F2FS_IOC_SEC_TRIM_FILE: 4543 case F2FS_IOC_GET_COMPRESS_OPTION: 4544 case F2FS_IOC_SET_COMPRESS_OPTION: --- 27 unchanged lines hidden --- |