It needs to add missing gcing flag on page during block migration,
in order to garantee migrated data be persisted during checkpoint,
otherwise out-of-order persistency between data and node may cause
data corruption after SPOR.

Similar issue was fixed by commit 2d1fe8a86bf5 ("f2fs: fix to tag
gcing flag on page during file defragment").

Signed-off-by: Chao Yu <c...@kernel.org>
---
 fs/f2fs/compress.c | 4 +++-
 fs/f2fs/file.c     | 2 ++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c
index b35be5799726..c5a4364c4482 100644
--- a/fs/f2fs/compress.c
+++ b/fs/f2fs/compress.c
@@ -1036,8 +1036,10 @@ static void set_cluster_dirty(struct compress_ctx *cc)
        int i;
 
        for (i = 0; i < cc->cluster_size; i++)
-               if (cc->rpages[i])
+               if (cc->rpages[i]) {
                        set_page_dirty(cc->rpages[i]);
+                       set_page_private_gcing(cc->rpages[i]);
+               }
 }
 
 static int prepare_compress_overwrite(struct compress_ctx *cc,
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 60290940018d..156b0ff05a3b 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -1312,6 +1312,7 @@ static int __clone_blkaddrs(struct inode *src_inode, 
struct inode *dst_inode,
                        }
                        memcpy_page(pdst, 0, psrc, 0, PAGE_SIZE);
                        set_page_dirty(pdst);
+                       set_page_private_gcing(pdst);
                        f2fs_put_page(pdst, 1);
                        f2fs_put_page(psrc, 1);
 
@@ -4046,6 +4047,7 @@ static int redirty_blocks(struct inode *inode, pgoff_t 
page_idx, int len)
                f2fs_bug_on(F2FS_I_SB(inode), !page);
 
                set_page_dirty(page);
+               set_page_private_gcing(page);
                f2fs_put_page(page, 1);
                f2fs_put_page(page, 0);
        }
-- 
2.40.1



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to