diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-07-13 20:44:14 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-07-25 11:54:25 -0400 |
commit | 548aedac5128e4bb256bab5c8e1db88e626697fc (patch) | |
tree | 2469f4784afd19e535858247dea683888daa0420 /fs | |
parent | 33b40178cb3bd75294d1a758b3f509a0d38682ab (diff) |
f2fs: handle error cases in move_encrypted_block
This patch fixes some missing error handlers.
Reviewed-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/f2fs/gc.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index e1e73617d13b..883a841dfc6d 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c | |||
@@ -556,27 +556,34 @@ static void move_encrypted_block(struct inode *inode, block_t bidx) | |||
556 | if (!fio.encrypted_page) | 556 | if (!fio.encrypted_page) |
557 | goto put_out; | 557 | goto put_out; |
558 | 558 | ||
559 | f2fs_submit_page_bio(&fio); | 559 | err = f2fs_submit_page_bio(&fio); |
560 | if (err) | ||
561 | goto put_page_out; | ||
562 | |||
563 | /* write page */ | ||
564 | lock_page(fio.encrypted_page); | ||
565 | |||
566 | if (unlikely(!PageUptodate(fio.encrypted_page))) | ||
567 | goto put_page_out; | ||
568 | if (unlikely(fio.encrypted_page->mapping != META_MAPPING(fio.sbi))) | ||
569 | goto put_page_out; | ||
570 | |||
571 | set_page_writeback(fio.encrypted_page); | ||
560 | 572 | ||
561 | /* allocate block address */ | 573 | /* allocate block address */ |
562 | f2fs_wait_on_page_writeback(dn.node_page, NODE); | 574 | f2fs_wait_on_page_writeback(dn.node_page, NODE); |
563 | |||
564 | allocate_data_block(fio.sbi, NULL, fio.blk_addr, | 575 | allocate_data_block(fio.sbi, NULL, fio.blk_addr, |
565 | &fio.blk_addr, &sum, CURSEG_COLD_DATA); | 576 | &fio.blk_addr, &sum, CURSEG_COLD_DATA); |
566 | dn.data_blkaddr = fio.blk_addr; | ||
567 | |||
568 | /* write page */ | ||
569 | lock_page(fio.encrypted_page); | ||
570 | set_page_writeback(fio.encrypted_page); | ||
571 | fio.rw = WRITE_SYNC; | 577 | fio.rw = WRITE_SYNC; |
572 | f2fs_submit_page_mbio(&fio); | 578 | f2fs_submit_page_mbio(&fio); |
573 | 579 | ||
580 | dn.data_blkaddr = fio.blk_addr; | ||
574 | set_data_blkaddr(&dn); | 581 | set_data_blkaddr(&dn); |
575 | f2fs_update_extent_cache(&dn); | 582 | f2fs_update_extent_cache(&dn); |
576 | set_inode_flag(F2FS_I(inode), FI_APPEND_WRITE); | 583 | set_inode_flag(F2FS_I(inode), FI_APPEND_WRITE); |
577 | if (page->index == 0) | 584 | if (page->index == 0) |
578 | set_inode_flag(F2FS_I(inode), FI_FIRST_BLOCK_WRITTEN); | 585 | set_inode_flag(F2FS_I(inode), FI_FIRST_BLOCK_WRITTEN); |
579 | 586 | put_page_out: | |
580 | f2fs_put_page(fio.encrypted_page, 1); | 587 | f2fs_put_page(fio.encrypted_page, 1); |
581 | put_out: | 588 | put_out: |
582 | f2fs_put_dnode(&dn); | 589 | f2fs_put_dnode(&dn); |