Loading fs/f2fs/file.c +9 −0 Original line number Diff line number Diff line Loading @@ -2911,6 +2911,8 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) ret = generic_write_checks(iocb, from); if (ret > 0) { bool preallocated = false; size_t target_size = 0; int err; if (iov_iter_fault_in_readable(from, iov_iter_count(from))) Loading @@ -2927,6 +2929,9 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) } } else { preallocated = true; target_size = iocb->ki_pos + iov_iter_count(from); err = f2fs_preallocate_blocks(iocb, from); if (err) { clear_inode_flag(inode, FI_NO_PREALLOC); Loading @@ -2939,6 +2944,10 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) blk_finish_plug(&plug); clear_inode_flag(inode, FI_NO_PREALLOC); /* if we couldn't write data, we should deallocate blocks. */ if (preallocated && i_size_read(inode) < target_size) f2fs_truncate(inode); if (ret > 0) f2fs_update_iostat(F2FS_I_SB(inode), APP_WRITE_IO, ret); } Loading Loading
fs/f2fs/file.c +9 −0 Original line number Diff line number Diff line Loading @@ -2911,6 +2911,8 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) ret = generic_write_checks(iocb, from); if (ret > 0) { bool preallocated = false; size_t target_size = 0; int err; if (iov_iter_fault_in_readable(from, iov_iter_count(from))) Loading @@ -2927,6 +2929,9 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) } } else { preallocated = true; target_size = iocb->ki_pos + iov_iter_count(from); err = f2fs_preallocate_blocks(iocb, from); if (err) { clear_inode_flag(inode, FI_NO_PREALLOC); Loading @@ -2939,6 +2944,10 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) blk_finish_plug(&plug); clear_inode_flag(inode, FI_NO_PREALLOC); /* if we couldn't write data, we should deallocate blocks. */ if (preallocated && i_size_read(inode) < target_size) f2fs_truncate(inode); if (ret > 0) f2fs_update_iostat(F2FS_I_SB(inode), APP_WRITE_IO, ret); } Loading