Watch
1
Fork
You've already forked kernel_a52xq
0
mirror of https://github.com/a52xq-dev/kernel.git synced 2026-10-18 21:58:11 +07:00
kernel_a52xq/fs/f2fs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gabriel Krisman Bertazi cababeac91 f2fs: Return EOF on unaligned end of file DIO read
[ Upstream commit 20d0a107fb35f37578b919f62bd474d6d358d579 ]

Reading past end of file returns EOF for aligned reads but -EINVAL for
unaligned reads on f2fs.  While documentation is not strict about this
corner case, most filesystem returns EOF on this case, like iomap
filesystems.  This patch consolidates the behavior for f2fs, by making
it return EOF(0).

it can be verified by a read loop on a file that does a partial read
before EOF (A file that doesn't end at an aligned address).  The
following code fails on an unaligned file on f2fs, but not on
btrfs, ext4, and xfs.

  while (done < total) {
    ssize_t delta = pread(fd, buf + done, total - done, off + done);
    if (!delta)
      break;
    ...
  }

It is arguable whether filesystems should actually return EOF or
-EINVAL, but since iomap filesystems support it, and so does the
original DIO code, it seems reasonable to consolidate on that.

Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-09-23 12:10:59 +02:00
..
acl.c f2fs: fix wrong return value of f2fs_acl_create 2019-02-12 19:47:02 +01:00
acl.h f2fs: remove dead code f2fs_check_acl 2016-09-14 16:52:36 -07:00
checkpoint.c f2fs: use generic EFSBADCRC/EFSCORRUPTED 2019-10-01 08:26:13 +02:00
data.c f2fs: Return EOF on unaligned end of file DIO read 2020-09-23 12:10:59 +02:00
debug.c f2fs: don't access node/meta inode mapping after iput 2019-07-10 09:53:45 +02:00
dir.c f2fs: fix to avoid accessing uninitialized field of inode page in is_alive() 2020-01-27 14:51:13 +01:00
extent_cache.c f2fs: avoid sleeping under spin_lock 2018-11-13 11:08:37 -08:00
f2fs.h f2fs: fix error path in do_recover_data() 2020-09-03 11:24:20 +02:00
file.c f2fs: fix potential overflow 2020-01-17 19:47:13 +01:00
gc.c f2fs: fix to allow node segment for GC by ioctl path 2019-12-13 08:51:51 +01:00
gc.h f2fs: introduce sbi->gc_mode to determine the policy 2018-05-31 11:31:51 -07:00
hash.c f2fs: check entire encrypted bigname when finding a dentry 2017-05-04 11:44:35 -04:00
inline.c f2fs: fix error path in do_recover_data() 2020-09-03 11:24:20 +02:00
inode.c f2fs: fix to update time in lazytime mode 2020-01-04 19:12:37 +01:00
Kconfig fs/*/Kconfig: drop links to 404-compliant http://acl.bestbits.at 2018-01-01 12:45:37 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
namei.c f2fs: set I_LINKABLE early to avoid wrong access by vfs 2020-02-24 08:34:48 +01:00
node.c f2fs: fix indefinite loop scanning for free nid 2020-09-23 12:10:58 +02:00
node.h f2fs: let checkpoint flush dnode page of regular 2018-08-01 11:52:36 -07:00
recovery.c f2fs: fix error path in do_recover_data() 2020-09-03 11:24:20 +02:00
segment.c f2fs: fix to account preflush command for noflush_merge mode 2019-12-13 08:51:48 +01:00
segment.h f2fs: use generic EFSBADCRC/EFSCORRUPTED 2019-10-01 08:26:13 +02:00
shrinker.c f2fs: fix sbi->extent_list corruption issue 2019-02-12 19:47:17 +01:00
super.c f2fs: fix use-after-free issue 2020-09-03 11:24:21 +02:00
sysfs.c f2fs: fix memleak of kobject 2020-02-24 08:34:49 +01:00
trace.c f2fs: do not use mutex lock in atomic context 2019-04-05 22:32:59 +02:00
trace.h f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
xattr.c f2fs: fix to avoid memory leakage in f2fs_listxattr 2020-04-29 16:31:17 +02:00
xattr.h f2fs: fix to avoid accessing xattr across the boundary 2019-06-19 08:18:02 +02:00