f2fs: fix to add refcount once page is tagged PG_private
As Gao Xiang reported in bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202749 f2fs may skip pageout() due to incorrect page reference count. The problem here is that MM defined the rule [1] very clearly that once page was set with PG_private flag, we should increment the refcount in that page, also main flows like pageout(), migrate_page() will assume there is one additional page reference count if page_has_private() returns true. But currently, f2fs won't add/del refcount when changing PG_private flag. Anyway, f2fs should follow MM's rule to make MM's related flows running as expected. [1] https://lore.kernel.org/lkml/2b19b3c4-2bc4-15fa-15cc-27a13e5c7af1@aol.com/ Reported-by:Gao Xiang <gaoxiang25@huawei.com> Signed-off-by:
Chao Yu <yuchao0@huawei.com> Signed-off-by:
Jaegeuk Kim <jaegeuk@kernel.org>
Showing
- fs/f2fs/checkpoint.c 2 additions, 2 deletionsfs/f2fs/checkpoint.c
- fs/f2fs/data.c 8 additions, 13 deletionsfs/f2fs/data.c
- fs/f2fs/dir.c 1 addition, 1 deletionfs/f2fs/dir.c
- fs/f2fs/f2fs.h 21 additions, 0 deletionsfs/f2fs/f2fs.h
- fs/f2fs/node.c 1 addition, 1 deletionfs/f2fs/node.c
- fs/f2fs/segment.c 3 additions, 6 deletionsfs/f2fs/segment.c
Loading
Please register or sign in to comment