OSDN Git Service

UPSTREAM: f2fs: clear PageError on writepage - part 2
authorJaegeuk Kim <jaegeuk@kernel.org>
Thu, 12 Apr 2018 06:09:04 +0000 (23:09 -0700)
committerJaegeuk Kim <jaegeuk@google.com>
Tue, 8 May 2018 16:08:58 +0000 (16:08 +0000)
This patch clears PageError in some pages tagged by read path, but when we
write the pages with valid contents, writepage should clear the bit likewise
ext4.

Change-Id: I7d599ea65d0e30e5faa1cbfb3e1309f62511202b
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit a44b418c31458b213ab59659776f5597e7e78b32)

fs/f2fs/gc.c
fs/f2fs/inline.c
fs/f2fs/node.c
fs/f2fs/segment.c

index c009b50..d28d31c 100644 (file)
@@ -693,6 +693,7 @@ static void move_data_block(struct inode *inode, block_t bidx,
                dec_page_count(fio.sbi, F2FS_DIRTY_META);
 
        set_page_writeback(fio.encrypted_page);
+       ClearPageError(page);
 
        /* allocate block address */
        f2fs_wait_on_page_writeback(dn.node_page, NODE, true);
index 922a213..ac951ee 100644 (file)
@@ -157,6 +157,7 @@ int f2fs_convert_inline_page(struct dnode_of_data *dn, struct page *page)
 
        /* write data page to try to make data consistent */
        set_page_writeback(page);
+       ClearPageError(page);
        fio.old_blkaddr = dn->data_blkaddr;
        set_inode_flag(dn->inode, FI_HOT_DATA);
        write_data_page(dn, &fio);
index 3871e7d..16aee2a 100644 (file)
@@ -1398,6 +1398,7 @@ static int __write_node_page(struct page *page, bool atomic, bool *submitted,
                fio.op_flags |= WRITE_FLUSH_FUA;
 
        set_page_writeback(page);
+       ClearPageError(page);
        fio.old_blkaddr = ni.blk_addr;
        write_node_page(nid, &fio);
        set_node_addr(sbi, &ni, fio.new_blkaddr, is_fsync_dnode(page));
index d7bac60..01bc94d 100644 (file)
@@ -2838,6 +2838,7 @@ void write_meta_page(struct f2fs_sb_info *sbi, struct page *page,
                fio.op_flags &= ~REQ_META;
 
        set_page_writeback(page);
+       ClearPageError(page);
        f2fs_submit_page_write(&fio);
 
        f2fs_update_iostat(sbi, io_type, F2FS_BLKSIZE);