This patch fixes to update page flag (e.g. Uptodate/cold flag) in
->write_begin.

Otherwise, page will be non-uptodate when we try to write entire
page, and cold data flag in page will not be clean when gced page
is being rewritten.

Signed-off-by: Chao Yu <chao2...@samsung.com>
---
 fs/f2fs/data.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 056f4f9..a869d80 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -1249,8 +1249,10 @@ put_next:
        f2fs_put_dnode(&dn);
        f2fs_unlock_op(sbi);
 
-       if ((len == PAGE_CACHE_SIZE) || PageUptodate(page))
-               return 0;
+       if (len == PAGE_CACHE_SIZE)
+               goto out_update;
+       if (PageUptodate(page))
+               goto out_clear;
 
        f2fs_wait_on_page_writeback(page, DATA);
 
@@ -1260,7 +1262,7 @@ put_next:
 
                /* Reading beyond i_size is simple: memset to zero */
                zero_user_segments(page, 0, start, end, PAGE_CACHE_SIZE);
-               goto out;
+               goto out_update;
        }
 
        if (dn.data_blkaddr == NEW_ADDR) {
@@ -1298,8 +1300,9 @@ put_next:
                        }
                }
        }
-out:
+out_update:
        SetPageUptodate(page);
+out_clear:
        clear_cold_data(page);
        return 0;
 
-- 
2.4.2



------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to