summaryrefslogtreecommitdiffstats
path: root/fs/f2fs
diff options
context:
space:
mode:
authorChao Yu <chao2.yu@samsung.com>2015-05-28 07:15:35 -0400
committerJaegeuk Kim <jaegeuk@kernel.org>2015-06-02 12:52:07 -0400
commit528e34593d6eff11a289ef23452c66175a340f0b (patch)
treeee116eb15e84ee2837207649a484c999d7a2c66f /fs/f2fs
parent96c6dd59bf1d8b30afd3681550b321f4183e1914 (diff)
f2fs: hide common code in f2fs_replace_block
This patch clean up codes through: 1.rename f2fs_replace_block to __f2fs_replace_block(). 2.introduce new f2fs_replace_block() to include __f2fs_replace_block() and some common related codes around __f2fs_replace_block(). Then, newly introduced function f2fs_replace_block can be used by following patch. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs')
-rw-r--r--fs/f2fs/f2fs.h4
-rw-r--r--fs/f2fs/file.c12
-rw-r--r--fs/f2fs/recovery.c9
-rw-r--r--fs/f2fs/segment.c18
4 files changed, 23 insertions, 20 deletions
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 70cdf7b81e80..1a0716c36940 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -1695,8 +1695,8 @@ void write_meta_page(struct f2fs_sb_info *, struct page *);
1695void write_node_page(unsigned int, struct f2fs_io_info *); 1695void write_node_page(unsigned int, struct f2fs_io_info *);
1696void write_data_page(struct dnode_of_data *, struct f2fs_io_info *); 1696void write_data_page(struct dnode_of_data *, struct f2fs_io_info *);
1697void rewrite_data_page(struct f2fs_io_info *); 1697void rewrite_data_page(struct f2fs_io_info *);
1698void f2fs_replace_block(struct f2fs_sb_info *, struct f2fs_summary *, 1698void f2fs_replace_block(struct f2fs_sb_info *, struct dnode_of_data *,
1699 block_t, block_t, bool); 1699 block_t, block_t, unsigned char, bool);
1700void allocate_data_block(struct f2fs_sb_info *, struct page *, 1700void allocate_data_block(struct f2fs_sb_info *, struct page *,
1701 block_t, block_t *, struct f2fs_summary *, int); 1701 block_t, block_t *, struct f2fs_summary *, int);
1702void f2fs_wait_on_page_writeback(struct page *, enum page_type); 1702void f2fs_wait_on_page_writeback(struct page *, enum page_type);
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 6b4ba7429dba..aec96d3f8222 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -854,18 +854,10 @@ static int f2fs_do_collapse(struct inode *inode, pgoff_t start, pgoff_t end)
854 set_data_blkaddr(&dn); 854 set_data_blkaddr(&dn);
855 } else if (new_addr != NEW_ADDR) { 855 } else if (new_addr != NEW_ADDR) {
856 struct node_info ni; 856 struct node_info ni;
857 struct f2fs_summary sum;
858 857
859 get_node_info(sbi, dn.nid, &ni); 858 get_node_info(sbi, dn.nid, &ni);
860 set_summary(&sum, dn.nid, dn.ofs_in_node, 859 f2fs_replace_block(sbi, &dn, old_addr, new_addr,
861 ni.version); 860 ni.version, true);
862
863 f2fs_replace_block(sbi, &sum, old_addr,
864 new_addr, true);
865
866 dn.data_blkaddr = new_addr;
867 set_data_blkaddr(&dn);
868 f2fs_update_extent_cache(&dn);
869 } 861 }
870 862
871 f2fs_put_dnode(&dn); 863 f2fs_put_dnode(&dn);
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
index 9de25878db2b..24a8c1d4f45f 100644
--- a/fs/f2fs/recovery.c
+++ b/fs/f2fs/recovery.c
@@ -360,7 +360,6 @@ static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode,
360 struct f2fs_inode_info *fi = F2FS_I(inode); 360 struct f2fs_inode_info *fi = F2FS_I(inode);
361 unsigned int start, end; 361 unsigned int start, end;
362 struct dnode_of_data dn; 362 struct dnode_of_data dn;
363 struct f2fs_summary sum;
364 struct node_info ni; 363 struct node_info ni;
365 int err = 0, recovered = 0; 364 int err = 0, recovered = 0;
366 365
@@ -420,13 +419,9 @@ static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode,
420 if (err) 419 if (err)
421 goto err; 420 goto err;
422 421
423 set_summary(&sum, dn.nid, dn.ofs_in_node, ni.version);
424
425 /* write dummy data page */ 422 /* write dummy data page */
426 f2fs_replace_block(sbi, &sum, src, dest, false); 423 f2fs_replace_block(sbi, &dn, src, dest,
427 dn.data_blkaddr = dest; 424 ni.version, false);
428 set_data_blkaddr(&dn);
429 f2fs_update_extent_cache(&dn);
430 recovered++; 425 recovered++;
431 } 426 }
432 dn.ofs_in_node++; 427 dn.ofs_in_node++;
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 59566ae3f964..46283a153acf 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1302,7 +1302,8 @@ void rewrite_data_page(struct f2fs_io_info *fio)
1302 f2fs_submit_page_mbio(fio); 1302 f2fs_submit_page_mbio(fio);
1303} 1303}
1304 1304
1305void f2fs_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum, 1305static void __f2fs_replace_block(struct f2fs_sb_info *sbi,
1306 struct f2fs_summary *sum,
1306 block_t old_blkaddr, block_t new_blkaddr, 1307 block_t old_blkaddr, block_t new_blkaddr,
1307 bool recover_curseg) 1308 bool recover_curseg)
1308{ 1309{
@@ -1362,6 +1363,21 @@ void f2fs_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
1362 mutex_unlock(&curseg->curseg_mutex); 1363 mutex_unlock(&curseg->curseg_mutex);
1363} 1364}
1364 1365
1366void f2fs_replace_block(struct f2fs_sb_info *sbi, struct dnode_of_data *dn,
1367 block_t old_addr, block_t new_addr,
1368 unsigned char version, bool recover_curseg)
1369{
1370 struct f2fs_summary sum;
1371
1372 set_summary(&sum, dn->nid, dn->ofs_in_node, version);
1373
1374 __f2fs_replace_block(sbi, &sum, old_addr, new_addr, recover_curseg);
1375
1376 dn->data_blkaddr = new_addr;
1377 set_data_blkaddr(dn);
1378 f2fs_update_extent_cache(dn);
1379}
1380
1365static inline bool is_merged_page(struct f2fs_sb_info *sbi, 1381static inline bool is_merged_page(struct f2fs_sb_info *sbi,
1366 struct page *page, enum page_type type) 1382 struct page *page, enum page_type type)
1367{ 1383{