linux-stable/fs/f2fs
Gabriel Krisman Bertazi 20d0a107fb f2fs: Return EOF on unaligned end of file DIO read
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>
2020-09-08 20:31:33 -07:00
..
Kconfig f2fs: compress: support lzo-rle compress algorithm 2020-05-11 20:36:46 -07:00
Makefile f2fs: support data compression 2020-01-17 16:48:07 -08:00
acl.c f2fs: Replace spaces with tab 2019-05-08 21:23:11 -07:00
acl.h f2fs: Use the correct style for SPDX License Identifier 2020-05-08 06:55:55 -07:00
checkpoint.c f2fs: prepare a waiter before entering io_schedule 2020-08-03 20:54:58 -07:00
compress.c f2fs-for-5.9-rc1 2020-08-10 18:33:22 -07:00
data.c f2fs: Return EOF on unaligned end of file DIO read 2020-09-08 20:31:33 -07:00
debug.c f2fs: show more debug info for per-temperature log 2020-07-07 21:51:45 -07:00
dir.c f2fs: fix typo in comment of f2fs_do_add_link 2020-07-07 21:51:45 -07:00
extent_cache.c f2fs: fix to wait page writeback before update 2020-07-07 21:51:45 -07:00
f2fs.h treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
file.c f2fs: make file immutable even if releasing zero compression block 2020-08-03 18:05:03 -07:00
gc.c f2fs: add GC_URGENT_LOW mode in gc_urgent 2020-07-07 21:51:49 -07:00
gc.h f2fs: Use the correct style for SPDX License Identifier 2020-05-08 06:55:55 -07:00
hash.c f2fs-for-5.8-rc1 2020-06-09 11:28:59 -07:00
inline.c f2fs: fix error path in do_recover_data() 2020-07-08 10:11:19 -07:00
inode.c f2fs: fix to wait page writeback before update 2020-07-07 21:51:45 -07:00
namei.c f2fs: space related cleanup 2020-07-26 08:15:40 -07:00
node.c f2fs: fix indefinite loop scanning for free nid 2020-09-08 20:31:33 -07:00
node.h f2fs: shrink spinlock coverage 2020-05-11 20:36:46 -07:00
recovery.c f2fs: fix error path in do_recover_data() 2020-07-08 10:11:19 -07:00
segment.c f2fs: Fix type of section block count variables 2020-09-08 20:31:33 -07:00
segment.h f2fs: segment.h: delete a duplicated word 2020-07-20 15:47:38 -07:00
shrinker.c f2fs: fix inconsistent comments 2020-03-10 09:18:33 -07:00
super.c f2fs-for-5.9-rc1 2020-08-10 18:33:22 -07:00
sysfs.c f2fs: space related cleanup 2020-07-26 08:15:40 -07:00
trace.c f2fs: do not use mutex lock in atomic context 2019-03-05 19:58:06 -08:00
trace.h f2fs: Use the correct style for SPDX License Identifier 2020-05-08 06:55:55 -07:00
verity.c f2fs: use macro instead of f2fs verity version 2020-08-03 10:32:51 -07:00
xattr.c f2fs: space related cleanup 2020-07-26 08:15:40 -07:00
xattr.h f2fs: code cleanup by removing ifdef macro surrounding 2020-05-26 18:56:10 -07:00