linux/fs/f2fs
Jaegeuk Kim 164a63fa6b Revert "f2fs: fix to clear PG_checked flag in set_page_dirty()"
This reverts commit 66110abc4c.

If we clear the cold data flag out of the writeback flow, we can miscount
-1 by end_io, which incurs a deadlock caused by all I/Os being blocked during
heavy GC.

Balancing F2FS Async:
 - IO (CP:    1, Data:   -1, Flush: (   0    0    1), Discard: (   ...

GC thread:                              IRQ
- move_data_page()
 - set_page_dirty()
  - clear_cold_data()
                                        - f2fs_write_end_io()
                                         - type = WB_DATA_TYPE(page);
                                           here, we get wrong type
                                         - dec_page_count(sbi, type);
 - f2fs_wait_on_page_writeback()

Cc: <stable@vger.kernel.org>
Reported-and-Tested-by: Park Ju Hyung <qkrwngud825@gmail.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-10-22 17:54:46 -07:00
..
acl.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
acl.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
checkpoint.c f2fs: checkpoint disabling 2018-10-16 09:36:39 -07:00
data.c Revert "f2fs: fix to clear PG_checked flag in set_page_dirty()" 2018-10-22 17:54:46 -07:00
debug.c f2fs: account read IOs and use IO counts for is_idle 2018-10-22 17:54:46 -07:00
dir.c f2fs: do not update REQ_TIME in case of error conditions 2018-10-16 09:37:00 -07:00
extent_cache.c f2fs: use rb_*_cached friends 2018-10-16 09:36:59 -07:00
f2fs.h f2fs: account read IOs and use IO counts for is_idle 2018-10-22 17:54:46 -07:00
file.c f2fs: do not update REQ_TIME in case of error conditions 2018-10-16 09:37:00 -07:00
gc.c f2fs: submit cached bio to avoid endless PageWriteback 2018-10-16 09:36:59 -07:00
gc.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
hash.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
inline.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
inode.c f2fs: fix to recover cold bit of inode block during POR 2018-10-16 09:36:59 -07: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: update REQ_TIME in f2fs_cross_rename() 2018-10-16 09:37:00 -07:00
node.c f2fs: remove unneeded disable_nat_bits() 2018-10-16 09:36:59 -07:00
node.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
recovery.c f2fs: avoid f2fs_bug_on if f2fs_get_meta_page_nofail got EIO 2018-09-28 10:39:58 -07:00
segment.c f2fs: use rb_*_cached friends 2018-10-16 09:36:59 -07:00
segment.h f2fs: checkpoint disabling 2018-10-16 09:36:39 -07:00
shrinker.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
super.c f2fs: allow to mount, if quota is failed 2018-10-16 09:37:00 -07:00
sysfs.c f2fs: support superblock checksum 2018-09-30 18:34:18 -07:00
trace.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
trace.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
xattr.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
xattr.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00