From: Chao Yu <yuchao0@huawei.com>
Date: Fri, 19 Jun 2020 09:14:19 +0000 (+0800)
Subject: f2fs: fix to check page dirty status before writeback
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=eb1353cfa9c1e9415b03dc117f8399969fa02102;p=linux.git

f2fs: fix to check page dirty status before writeback

In f2fs_write_raw_pages(), we need to check page dirty status before
writeback, because there could be a racer (e.g. reclaimer) helps
writebacking the dirty page.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---

diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c
index cde6868c77bb7..dcc9f807a6473 100644
--- a/fs/f2fs/compress.c
+++ b/fs/f2fs/compress.c
@@ -1322,6 +1322,12 @@ retry_write:
 				congestion_wait(BLK_RW_ASYNC,
 						DEFAULT_IO_TIMEOUT);
 				lock_page(cc->rpages[i]);
+
+				if (!PageDirty(cc->rpages[i])) {
+					unlock_page(cc->rpages[i]);
+					continue;
+				}
+
 				clear_page_dirty_for_io(cc->rpages[i]);
 				goto retry_write;
 			}