diff options
author | Chao Yu <chao2.yu@samsung.com> | 2015-05-28 07:15:35 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-06-02 12:52:07 -0400 |
commit | 528e34593d6eff11a289ef23452c66175a340f0b (patch) | |
tree | ee116eb15e84ee2837207649a484c999d7a2c66f /fs/f2fs | |
parent | 96c6dd59bf1d8b30afd3681550b321f4183e1914 (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.h | 4 | ||||
-rw-r--r-- | fs/f2fs/file.c | 12 | ||||
-rw-r--r-- | fs/f2fs/recovery.c | 9 | ||||
-rw-r--r-- | fs/f2fs/segment.c | 18 |
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 *); | |||
1695 | void write_node_page(unsigned int, struct f2fs_io_info *); | 1695 | void write_node_page(unsigned int, struct f2fs_io_info *); |
1696 | void write_data_page(struct dnode_of_data *, struct f2fs_io_info *); | 1696 | void write_data_page(struct dnode_of_data *, struct f2fs_io_info *); |
1697 | void rewrite_data_page(struct f2fs_io_info *); | 1697 | void rewrite_data_page(struct f2fs_io_info *); |
1698 | void f2fs_replace_block(struct f2fs_sb_info *, struct f2fs_summary *, | 1698 | void 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); |
1700 | void allocate_data_block(struct f2fs_sb_info *, struct page *, | 1700 | void 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); |
1702 | void f2fs_wait_on_page_writeback(struct page *, enum page_type); | 1702 | void 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 | ||
1305 | void f2fs_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum, | 1305 | static 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 | ||
1366 | void 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 | |||
1365 | static inline bool is_merged_page(struct f2fs_sb_info *sbi, | 1381 | static 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 | { |