linux/fs/f2fs
Jaegeuk Kim 649d7df29c f2fs: fix to set PageUptodate in f2fs_write_end correctly
Previously, f2fs_write_begin sets PageUptodate all the time. But, when user
tries to update the entire page (i.e., len == PAGE_SIZE), we need to consider
that the page is able to be copied partially afterwards. In such the case,
we will lose the remaing region in the page.

This patch fixes this by setting PageUptodate in f2fs_write_end as given copied
result. In the short copy case, it returns zero to let generic_perform_write
retry copying user data again.

As a result, f2fs_write_end() works:
   PageUptodate      len      copied    return   retry
1. no                4096     4096      4096     false  -> return 4096
2. no                4096     1024      0        true   -> goto #1 case
3. yes               2048     2048      2048     false  -> return 2048
4. yes               2048     1024      1024     false  -> return 1024

Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2016-09-13 13:02:34 -07:00
..
acl.c f2fs: avoid mark_inode_dirty 2016-07-08 10:34:09 -07:00
acl.h f2fs: clean up coding style and redundancy 2016-07-25 12:58:12 -07:00
checkpoint.c f2fs: fix to set superblock dirty correctly 2016-09-07 18:53:47 -07:00
data.c f2fs: fix to set PageUptodate in f2fs_write_end correctly 2016-09-13 13:02:34 -07:00
debug.c f2fs: add discard info to sys entry of f2fs status 2016-08-29 18:31:06 -07:00
dir.c f2fs: set dentry bits on random location in memory 2016-09-07 18:53:47 -07:00
extent_cache.c f2fs: disable extent_cache for fcollapse/finsert inodes 2016-07-15 15:21:20 -07:00
f2fs.h f2fs: avoid ENOMEM during roll-forward recovery 2016-09-13 13:02:29 -07:00
file.c f2fs: fix parameters of __exchange_data_block 2016-09-13 13:02:33 -07:00
gc.c f2fs: check free_sections for defragmentation 2016-09-12 10:30:41 -07:00
gc.h f2fs: detect idle time depending on user behavior 2016-01-11 15:56:37 -08:00
hash.c f2fs: introduce dot and dotdot name check 2015-05-28 15:41:34 -07:00
inline.c f2fs: set dentry bits on random location in memory 2016-09-07 18:53:47 -07:00
inode.c f2fs: avoid ENOMEM during roll-forward recovery 2016-09-13 13:02:29 -07:00
Kconfig f2fs: add mount option to select fault injection ratio 2016-05-07 10:32:22 -07:00
Makefile fs crypto: move per-file encryption from f2fs tree to fs/crypto 2016-03-17 21:19:33 -07:00
namei.c f2fs: fix to detect temporary name of multimedia file 2016-09-07 18:53:49 -07:00
node.c f2fs: avoid ENOMEM during roll-forward recovery 2016-09-13 13:02:29 -07:00
node.h f2fs: produce more nids and reduce readahead nats 2016-07-06 10:44:08 -07:00
recovery.c f2fs: avoid ENOMEM during roll-forward recovery 2016-09-13 13:02:29 -07:00
segment.c f2fs: check free_sections for defragmentation 2016-09-12 10:30:41 -07:00
segment.h f2fs: check free_sections for defragmentation 2016-09-12 10:30:41 -07:00
shrinker.c f2fs: produce more nids and reduce readahead nats 2016-07-06 10:44:08 -07:00
super.c f2fs: enable inline_dentry by default and add noinline_dentry option 2016-08-29 18:31:17 -07:00
trace.c f2fs: use bio op accessors 2016-06-07 13:41:38 -06: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 lost xattrs of directories 2016-09-07 17:27:39 -07:00
xattr.h f2fs: add missing argument to f2fs_setxattr stub 2016-03-17 21:19:47 -07:00