diff options
Diffstat (limited to 'fs/f2fs/recovery.c')
-rw-r--r-- | fs/f2fs/recovery.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c index 9160a37e1c7a..41afb9534bbd 100644 --- a/fs/f2fs/recovery.c +++ b/fs/f2fs/recovery.c | |||
@@ -346,6 +346,10 @@ static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode, | |||
346 | if (IS_INODE(page)) { | 346 | if (IS_INODE(page)) { |
347 | recover_inline_xattr(inode, page); | 347 | recover_inline_xattr(inode, page); |
348 | } else if (f2fs_has_xattr_block(ofs_of_node(page))) { | 348 | } else if (f2fs_has_xattr_block(ofs_of_node(page))) { |
349 | /* | ||
350 | * Deprecated; xattr blocks should be found from cold log. | ||
351 | * But, we should remain this for backward compatibility. | ||
352 | */ | ||
349 | recover_xattr_data(inode, page, blkaddr); | 353 | recover_xattr_data(inode, page, blkaddr); |
350 | goto out; | 354 | goto out; |
351 | } | 355 | } |
@@ -396,7 +400,8 @@ static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode, | |||
396 | 400 | ||
397 | /* write dummy data page */ | 401 | /* write dummy data page */ |
398 | recover_data_page(sbi, NULL, &sum, src, dest); | 402 | recover_data_page(sbi, NULL, &sum, src, dest); |
399 | update_extent_cache(dest, &dn); | 403 | dn.data_blkaddr = dest; |
404 | update_extent_cache(&dn); | ||
400 | recovered++; | 405 | recovered++; |
401 | } | 406 | } |
402 | dn.ofs_in_node++; | 407 | dn.ofs_in_node++; |
@@ -503,7 +508,7 @@ int recover_fsync_data(struct f2fs_sb_info *sbi) | |||
503 | INIT_LIST_HEAD(&inode_list); | 508 | INIT_LIST_HEAD(&inode_list); |
504 | 509 | ||
505 | /* step #1: find fsynced inode numbers */ | 510 | /* step #1: find fsynced inode numbers */ |
506 | sbi->por_doing = true; | 511 | set_sbi_flag(sbi, SBI_POR_DOING); |
507 | 512 | ||
508 | /* prevent checkpoint */ | 513 | /* prevent checkpoint */ |
509 | mutex_lock(&sbi->cp_mutex); | 514 | mutex_lock(&sbi->cp_mutex); |
@@ -536,7 +541,7 @@ out: | |||
536 | truncate_inode_pages_final(META_MAPPING(sbi)); | 541 | truncate_inode_pages_final(META_MAPPING(sbi)); |
537 | } | 542 | } |
538 | 543 | ||
539 | sbi->por_doing = false; | 544 | clear_sbi_flag(sbi, SBI_POR_DOING); |
540 | if (err) { | 545 | if (err) { |
541 | discard_next_dnode(sbi, blkaddr); | 546 | discard_next_dnode(sbi, blkaddr); |
542 | 547 | ||