f2fs: introduce f2fs_update_data_blkaddr for cleanup
authorChao Yu <chao2.yu@samsung.com>
Wed, 24 Feb 2016 09:16:47 +0000 (17:16 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 26 Feb 2016 19:52:01 +0000 (11:52 -0800)
Add a new help f2fs_update_data_blkaddr to clean up redundant codes.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c
fs/f2fs/extent_cache.c
fs/f2fs/f2fs.h
fs/f2fs/file.c
fs/f2fs/gc.c
fs/f2fs/inline.c
fs/f2fs/segment.c

index 8c736838f13c557f0aa0be23ecdb55d1865a01c5..cc5ce9f5ad80fe2889dd734898af6f32089b10dc 100644 (file)
@@ -300,6 +300,13 @@ void set_data_blkaddr(struct dnode_of_data *dn)
                dn->node_changed = true;
 }
 
+void f2fs_update_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr)
+{
+       dn->data_blkaddr = blkaddr;
+       set_data_blkaddr(dn);
+       f2fs_update_extent_cache(dn);
+}
+
 int reserve_new_block(struct dnode_of_data *dn)
 {
        struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode);
@@ -1110,8 +1117,6 @@ int do_write_data_page(struct f2fs_io_info *fio)
                trace_f2fs_do_write_data_page(page, IPU);
        } else {
                write_data_page(&dn, fio);
-               set_data_blkaddr(&dn);
-               f2fs_update_extent_cache(&dn);
                trace_f2fs_do_write_data_page(page, OPU);
                set_inode_flag(F2FS_I(inode), FI_APPEND_WRITE);
                if (page->index == 0)
index 071a1b19e5afb793e8eeea924af9ce32eca30a76..c859bb04472807e20ef3c0742080023b54bdc196 100644 (file)
@@ -674,17 +674,20 @@ bool f2fs_lookup_extent_cache(struct inode *inode, pgoff_t pgofs,
 void f2fs_update_extent_cache(struct dnode_of_data *dn)
 {
        pgoff_t fofs;
+       block_t blkaddr;
 
        if (!f2fs_may_extent_tree(dn->inode))
                return;
 
-       f2fs_bug_on(F2FS_I_SB(dn->inode), dn->data_blkaddr == NEW_ADDR);
-
+       if (dn->data_blkaddr == NEW_ADDR)
+               blkaddr = NULL_ADDR;
+       else
+               blkaddr = dn->data_blkaddr;
 
        fofs = start_bidx_of_node(ofs_of_node(dn->node_page), dn->inode) +
                                                                dn->ofs_in_node;
 
-       if (f2fs_update_extent_tree_range(dn->inode, fofs, dn->data_blkaddr, 1))
+       if (f2fs_update_extent_tree_range(dn->inode, fofs, blkaddr, 1))
                sync_inode_page(dn);
 }
 
index 35b34f656eedb12f207aa9628af095cade5761c1..684c1e6f375c7656b39148ff4972f2895bdc1a76 100644 (file)
@@ -1910,6 +1910,7 @@ void f2fs_submit_merged_bio_cond(struct f2fs_sb_info *, struct inode *,
 int f2fs_submit_page_bio(struct f2fs_io_info *);
 void f2fs_submit_page_mbio(struct f2fs_io_info *);
 void set_data_blkaddr(struct dnode_of_data *);
+void f2fs_update_data_blkaddr(struct dnode_of_data *, block_t);
 int reserve_new_block(struct dnode_of_data *);
 int f2fs_get_block(struct dnode_of_data *, pgoff_t);
 ssize_t f2fs_preallocate_blocks(struct kiocb *, struct iov_iter *);
index 0e2a2bde26351c26eec3de13d6b43a9ffbb17940..ffa1ec20f96327fc8817d6788162349a4da576f7 100644 (file)
@@ -857,10 +857,8 @@ static int __exchange_data_block(struct inode *inode, pgoff_t src,
        } else {
                new_addr = dn.data_blkaddr;
                if (!is_checkpointed_data(sbi, new_addr)) {
-                       dn.data_blkaddr = NULL_ADDR;
                        /* do not invalidate this block address */
-                       set_data_blkaddr(&dn);
-                       f2fs_update_extent_cache(&dn);
+                       f2fs_update_data_blkaddr(&dn, NULL_ADDR);
                        do_replace = true;
                }
                f2fs_put_dnode(&dn);
@@ -911,9 +909,7 @@ static int __exchange_data_block(struct inode *inode, pgoff_t src,
 
 err_out:
        if (!get_dnode_of_data(&dn, src, LOOKUP_NODE)) {
-               dn.data_blkaddr = new_addr;
-               set_data_blkaddr(&dn);
-               f2fs_update_extent_cache(&dn);
+               f2fs_update_data_blkaddr(&dn, new_addr);
                f2fs_put_dnode(&dn);
        }
        return ret;
@@ -1053,12 +1049,7 @@ static int f2fs_zero_range(struct inode *inode, loff_t offset, loff_t len,
 
                        if (dn.data_blkaddr != NEW_ADDR) {
                                invalidate_blocks(sbi, dn.data_blkaddr);
-
-                               dn.data_blkaddr = NEW_ADDR;
-                               set_data_blkaddr(&dn);
-
-                               dn.data_blkaddr = NULL_ADDR;
-                               f2fs_update_extent_cache(&dn);
+                               f2fs_update_data_blkaddr(&dn, NEW_ADDR);
                        }
                        f2fs_put_dnode(&dn);
                        f2fs_unlock_op(sbi);
index d4bf60f128cf4d71cc5de7c5eba3b79e17ed7c8d..b0051a97824cca08a835e0524cf733156ded88f0 100644 (file)
@@ -624,9 +624,7 @@ static void move_encrypted_block(struct inode *inode, block_t bidx)
        fio.new_blkaddr = newaddr;
        f2fs_submit_page_mbio(&fio);
 
-       dn.data_blkaddr = fio.new_blkaddr;
-       set_data_blkaddr(&dn);
-       f2fs_update_extent_cache(&dn);
+       f2fs_update_data_blkaddr(&dn, newaddr);
        set_inode_flag(F2FS_I(inode), FI_APPEND_WRITE);
        if (page->index == 0)
                set_inode_flag(F2FS_I(inode), FI_FIRST_BLOCK_WRITTEN);
index d40261ca0f29fb5da5af9e34a8f7a6126c04f3dc..1c00f2c718ae2b3a19cf77a2f08cea9b58cdcbe1 100644 (file)
@@ -133,8 +133,6 @@ int f2fs_convert_inline_page(struct dnode_of_data *dn, struct page *page)
        set_page_writeback(page);
        fio.old_blkaddr = dn->data_blkaddr;
        write_data_page(dn, &fio);
-       set_data_blkaddr(dn);
-       f2fs_update_extent_cache(dn);
        f2fs_wait_on_page_writeback(page, DATA, true);
        if (dirty)
                inode_dec_dirty_pages(dn->inode);
index 639c4ff8650254166191ca1ca6acec1841c04ae4..6f16b39f0b528a530cae99ea3b0027bb16cbe2ae 100644 (file)
@@ -1429,7 +1429,7 @@ void write_data_page(struct dnode_of_data *dn, struct f2fs_io_info *fio)
        get_node_info(sbi, dn->nid, &ni);
        set_summary(&sum, dn->nid, dn->ofs_in_node, ni.version);
        do_write_page(&sum, fio);
-       dn->data_blkaddr = fio->new_blkaddr;
+       f2fs_update_data_blkaddr(dn, fio->new_blkaddr);
 }
 
 void rewrite_data_page(struct f2fs_io_info *fio)
@@ -1518,9 +1518,7 @@ void f2fs_replace_block(struct f2fs_sb_info *sbi, struct dnode_of_data *dn,
        __f2fs_replace_block(sbi, &sum, old_addr, new_addr,
                                        recover_curseg, recover_newaddr);
 
-       dn->data_blkaddr = new_addr;
-       set_data_blkaddr(dn);
-       f2fs_update_extent_cache(dn);
+       f2fs_update_data_blkaddr(dn, new_addr);
 }
 
 void f2fs_wait_on_page_writeback(struct page *page,