summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChao Yu <yuchao0@huawei.com>2019-06-19 23:36:14 -0400
committerJaegeuk Kim <jaegeuk@kernel.org>2019-07-02 18:40:41 -0400
commit10f966bbf521bb9b2e497bbca496a5141f4071d0 (patch)
tree828ab169692133b6220c3a547631349c0a0cbced
parentf91108b801ad7d7668c95841f4cb76494b2a9c8a (diff)
f2fs: use generic EFSBADCRC/EFSCORRUPTED
f2fs uses EFAULT as error number to indicate filesystem is corrupted all the time, but generic filesystems use EUCLEAN for such condition, we need to change to follow others. This patch adds two new macros as below to wrap more generic error code macros, and spread them in code. EFSBADCRC EBADMSG /* Bad CRC detected */ EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */ Reported-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Chao Yu <yuchao0@huawei.com> Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--fs/f2fs/checkpoint.c12
-rw-r--r--fs/f2fs/data.c18
-rw-r--r--fs/f2fs/dir.c2
-rw-r--r--fs/f2fs/f2fs.h3
-rw-r--r--fs/f2fs/file.c2
-rw-r--r--fs/f2fs/gc.c6
-rw-r--r--fs/f2fs/inline.c4
-rw-r--r--fs/f2fs/inode.c4
-rw-r--r--fs/f2fs/node.c6
-rw-r--r--fs/f2fs/recovery.c6
-rw-r--r--fs/f2fs/segment.c10
-rw-r--r--fs/f2fs/segment.h4
-rw-r--r--fs/f2fs/super.c2
-rw-r--r--fs/f2fs/xattr.c4
14 files changed, 46 insertions, 37 deletions
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index a5ae1ef1a6d0..2d23671d2034 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -890,6 +890,7 @@ int f2fs_get_valid_checkpoint(struct f2fs_sb_info *sbi)
890 unsigned int cp_blks = 1 + __cp_payload(sbi); 890 unsigned int cp_blks = 1 + __cp_payload(sbi);
891 block_t cp_blk_no; 891 block_t cp_blk_no;
892 int i; 892 int i;
893 int err;
893 894
894 sbi->ckpt = f2fs_kzalloc(sbi, array_size(blk_size, cp_blks), 895 sbi->ckpt = f2fs_kzalloc(sbi, array_size(blk_size, cp_blks),
895 GFP_KERNEL); 896 GFP_KERNEL);
@@ -917,6 +918,7 @@ int f2fs_get_valid_checkpoint(struct f2fs_sb_info *sbi)
917 } else if (cp2) { 918 } else if (cp2) {
918 cur_page = cp2; 919 cur_page = cp2;
919 } else { 920 } else {
921 err = -EFSCORRUPTED;
920 goto fail_no_cp; 922 goto fail_no_cp;
921 } 923 }
922 924
@@ -929,8 +931,10 @@ int f2fs_get_valid_checkpoint(struct f2fs_sb_info *sbi)
929 sbi->cur_cp_pack = 2; 931 sbi->cur_cp_pack = 2;
930 932
931 /* Sanity checking of checkpoint */ 933 /* Sanity checking of checkpoint */
932 if (f2fs_sanity_check_ckpt(sbi)) 934 if (f2fs_sanity_check_ckpt(sbi)) {
935 err = -EFSCORRUPTED;
933 goto free_fail_no_cp; 936 goto free_fail_no_cp;
937 }
934 938
935 if (cp_blks <= 1) 939 if (cp_blks <= 1)
936 goto done; 940 goto done;
@@ -944,8 +948,10 @@ int f2fs_get_valid_checkpoint(struct f2fs_sb_info *sbi)
944 unsigned char *ckpt = (unsigned char *)sbi->ckpt; 948 unsigned char *ckpt = (unsigned char *)sbi->ckpt;
945 949
946 cur_page = f2fs_get_meta_page(sbi, cp_blk_no + i); 950 cur_page = f2fs_get_meta_page(sbi, cp_blk_no + i);
947 if (IS_ERR(cur_page)) 951 if (IS_ERR(cur_page)) {
952 err = PTR_ERR(cur_page);
948 goto free_fail_no_cp; 953 goto free_fail_no_cp;
954 }
949 sit_bitmap_ptr = page_address(cur_page); 955 sit_bitmap_ptr = page_address(cur_page);
950 memcpy(ckpt + i * blk_size, sit_bitmap_ptr, blk_size); 956 memcpy(ckpt + i * blk_size, sit_bitmap_ptr, blk_size);
951 f2fs_put_page(cur_page, 1); 957 f2fs_put_page(cur_page, 1);
@@ -960,7 +966,7 @@ free_fail_no_cp:
960 f2fs_put_page(cp2, 1); 966 f2fs_put_page(cp2, 1);
961fail_no_cp: 967fail_no_cp:
962 kvfree(sbi->ckpt); 968 kvfree(sbi->ckpt);
963 return -EINVAL; 969 return err;
964} 970}
965 971
966static void __add_dirty_inode(struct inode *inode, enum inode_type type) 972static void __add_dirty_inode(struct inode *inode, enum inode_type type)
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index f4e1672bd96e..1e2d924e2ea7 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -455,7 +455,7 @@ int f2fs_submit_page_bio(struct f2fs_io_info *fio)
455 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr, 455 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr,
456 fio->is_por ? META_POR : (__is_meta_io(fio) ? 456 fio->is_por ? META_POR : (__is_meta_io(fio) ?
457 META_GENERIC : DATA_GENERIC_ENHANCE))) 457 META_GENERIC : DATA_GENERIC_ENHANCE)))
458 return -EFAULT; 458 return -EFSCORRUPTED;
459 459
460 trace_f2fs_submit_page_bio(page, fio); 460 trace_f2fs_submit_page_bio(page, fio);
461 f2fs_trace_ios(fio, 0); 461 f2fs_trace_ios(fio, 0);
@@ -489,7 +489,7 @@ int f2fs_merge_page_bio(struct f2fs_io_info *fio)
489 489
490 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr, 490 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr,
491 __is_meta_io(fio) ? META_GENERIC : DATA_GENERIC)) 491 __is_meta_io(fio) ? META_GENERIC : DATA_GENERIC))
492 return -EFAULT; 492 return -EFSCORRUPTED;
493 493
494 trace_f2fs_submit_page_bio(page, fio); 494 trace_f2fs_submit_page_bio(page, fio);
495 f2fs_trace_ios(fio, 0); 495 f2fs_trace_ios(fio, 0);
@@ -789,7 +789,7 @@ struct page *f2fs_get_read_data_page(struct inode *inode, pgoff_t index,
789 dn.data_blkaddr = ei.blk + index - ei.fofs; 789 dn.data_blkaddr = ei.blk + index - ei.fofs;
790 if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), dn.data_blkaddr, 790 if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), dn.data_blkaddr,
791 DATA_GENERIC_ENHANCE_READ)) { 791 DATA_GENERIC_ENHANCE_READ)) {
792 err = -EFAULT; 792 err = -EFSCORRUPTED;
793 goto put_err; 793 goto put_err;
794 } 794 }
795 goto got_it; 795 goto got_it;
@@ -809,7 +809,7 @@ struct page *f2fs_get_read_data_page(struct inode *inode, pgoff_t index,
809 !f2fs_is_valid_blkaddr(F2FS_I_SB(inode), 809 !f2fs_is_valid_blkaddr(F2FS_I_SB(inode),
810 dn.data_blkaddr, 810 dn.data_blkaddr,
811 DATA_GENERIC_ENHANCE)) { 811 DATA_GENERIC_ENHANCE)) {
812 err = -EFAULT; 812 err = -EFSCORRUPTED;
813 goto put_err; 813 goto put_err;
814 } 814 }
815got_it: 815got_it:
@@ -1155,7 +1155,7 @@ next_block:
1155 1155
1156 if (__is_valid_data_blkaddr(blkaddr) && 1156 if (__is_valid_data_blkaddr(blkaddr) &&
1157 !f2fs_is_valid_blkaddr(sbi, blkaddr, DATA_GENERIC_ENHANCE)) { 1157 !f2fs_is_valid_blkaddr(sbi, blkaddr, DATA_GENERIC_ENHANCE)) {
1158 err = -EFAULT; 1158 err = -EFSCORRUPTED;
1159 goto sync_out; 1159 goto sync_out;
1160 } 1160 }
1161 1161
@@ -1625,7 +1625,7 @@ got_it:
1625 1625
1626 if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), block_nr, 1626 if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), block_nr,
1627 DATA_GENERIC_ENHANCE_READ)) { 1627 DATA_GENERIC_ENHANCE_READ)) {
1628 ret = -EFAULT; 1628 ret = -EFSCORRUPTED;
1629 goto out; 1629 goto out;
1630 } 1630 }
1631 } else { 1631 } else {
@@ -1906,7 +1906,7 @@ int f2fs_do_write_data_page(struct f2fs_io_info *fio)
1906 1906
1907 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr, 1907 if (!f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr,
1908 DATA_GENERIC_ENHANCE)) 1908 DATA_GENERIC_ENHANCE))
1909 return -EFAULT; 1909 return -EFSCORRUPTED;
1910 1910
1911 ipu_force = true; 1911 ipu_force = true;
1912 fio->need_lock = LOCK_DONE; 1912 fio->need_lock = LOCK_DONE;
@@ -1933,7 +1933,7 @@ got_it:
1933 if (__is_valid_data_blkaddr(fio->old_blkaddr) && 1933 if (__is_valid_data_blkaddr(fio->old_blkaddr) &&
1934 !f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr, 1934 !f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr,
1935 DATA_GENERIC_ENHANCE)) { 1935 DATA_GENERIC_ENHANCE)) {
1936 err = -EFAULT; 1936 err = -EFSCORRUPTED;
1937 goto out_writepage; 1937 goto out_writepage;
1938 } 1938 }
1939 /* 1939 /*
@@ -2606,7 +2606,7 @@ repeat:
2606 } else { 2606 } else {
2607 if (!f2fs_is_valid_blkaddr(sbi, blkaddr, 2607 if (!f2fs_is_valid_blkaddr(sbi, blkaddr,
2608 DATA_GENERIC_ENHANCE_READ)) { 2608 DATA_GENERIC_ENHANCE_READ)) {
2609 err = -EFAULT; 2609 err = -EFSCORRUPTED;
2610 goto fail; 2610 goto fail;
2611 } 2611 }
2612 err = f2fs_submit_page_read(inode, page, blkaddr); 2612 err = f2fs_submit_page_read(inode, page, blkaddr);
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
index 0e78edbb8e16..85a1528f319f 100644
--- a/fs/f2fs/dir.c
+++ b/fs/f2fs/dir.c
@@ -818,7 +818,7 @@ int f2fs_fill_dentries(struct dir_context *ctx, struct f2fs_dentry_ptr *d,
818 f2fs_warn(sbi, "%s: corrupted namelen=%d, run fsck to fix.", 818 f2fs_warn(sbi, "%s: corrupted namelen=%d, run fsck to fix.",
819 __func__, le16_to_cpu(de->name_len)); 819 __func__, le16_to_cpu(de->name_len));
820 set_sbi_flag(sbi, SBI_NEED_FSCK); 820 set_sbi_flag(sbi, SBI_NEED_FSCK);
821 err = -EINVAL; 821 err = -EFSCORRUPTED;
822 goto out; 822 goto out;
823 } 823 }
824 824
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 8351fcfda309..d643f05cfa34 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -3708,4 +3708,7 @@ static inline bool is_journalled_quota(struct f2fs_sb_info *sbi)
3708 return false; 3708 return false;
3709} 3709}
3710 3710
3711#define EFSBADCRC EBADMSG /* Bad CRC detected */
3712#define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */
3713
3711#endif /* _LINUX_F2FS_H */ 3714#endif /* _LINUX_F2FS_H */
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 51de1bc6faea..c67ff5057472 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -1023,7 +1023,7 @@ next_dnode:
1023 !f2fs_is_valid_blkaddr(sbi, *blkaddr, 1023 !f2fs_is_valid_blkaddr(sbi, *blkaddr,
1024 DATA_GENERIC_ENHANCE)) { 1024 DATA_GENERIC_ENHANCE)) {
1025 f2fs_put_dnode(&dn); 1025 f2fs_put_dnode(&dn);
1026 return -EFAULT; 1026 return -EFSCORRUPTED;
1027 } 1027 }
1028 1028
1029 if (!f2fs_is_checkpointed_data(sbi, *blkaddr)) { 1029 if (!f2fs_is_checkpointed_data(sbi, *blkaddr)) {
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index c65f87f11de0..6691f526fa40 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -660,7 +660,7 @@ static int ra_data_block(struct inode *inode, pgoff_t index)
660 dn.data_blkaddr = ei.blk + index - ei.fofs; 660 dn.data_blkaddr = ei.blk + index - ei.fofs;
661 if (unlikely(!f2fs_is_valid_blkaddr(sbi, dn.data_blkaddr, 661 if (unlikely(!f2fs_is_valid_blkaddr(sbi, dn.data_blkaddr,
662 DATA_GENERIC_ENHANCE_READ))) { 662 DATA_GENERIC_ENHANCE_READ))) {
663 err = -EFAULT; 663 err = -EFSCORRUPTED;
664 goto put_page; 664 goto put_page;
665 } 665 }
666 goto got_it; 666 goto got_it;
@@ -678,7 +678,7 @@ static int ra_data_block(struct inode *inode, pgoff_t index)
678 } 678 }
679 if (unlikely(!f2fs_is_valid_blkaddr(sbi, dn.data_blkaddr, 679 if (unlikely(!f2fs_is_valid_blkaddr(sbi, dn.data_blkaddr,
680 DATA_GENERIC_ENHANCE))) { 680 DATA_GENERIC_ENHANCE))) {
681 err = -EFAULT; 681 err = -EFSCORRUPTED;
682 goto put_page; 682 goto put_page;
683 } 683 }
684got_it: 684got_it:
@@ -1454,7 +1454,7 @@ int f2fs_resize_fs(struct f2fs_sb_info *sbi, __u64 block_count)
1454 1454
1455 if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) { 1455 if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) {
1456 f2fs_err(sbi, "Should run fsck to repair first."); 1456 f2fs_err(sbi, "Should run fsck to repair first.");
1457 return -EINVAL; 1457 return -EFSCORRUPTED;
1458 } 1458 }
1459 1459
1460 if (test_opt(sbi, DISABLE_CHECKPOINT)) { 1460 if (test_opt(sbi, DISABLE_CHECKPOINT)) {
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
index 0d2764c9912d..3613efca8c00 100644
--- a/fs/f2fs/inline.c
+++ b/fs/f2fs/inline.c
@@ -142,7 +142,7 @@ int f2fs_convert_inline_page(struct dnode_of_data *dn, struct page *page)
142 set_sbi_flag(fio.sbi, SBI_NEED_FSCK); 142 set_sbi_flag(fio.sbi, SBI_NEED_FSCK);
143 f2fs_warn(fio.sbi, "%s: corrupted inline inode ino=%lx, i_addr[0]:0x%x, run fsck to fix.", 143 f2fs_warn(fio.sbi, "%s: corrupted inline inode ino=%lx, i_addr[0]:0x%x, run fsck to fix.",
144 __func__, dn->inode->i_ino, dn->data_blkaddr); 144 __func__, dn->inode->i_ino, dn->data_blkaddr);
145 return -EINVAL; 145 return -EFSCORRUPTED;
146 } 146 }
147 147
148 f2fs_bug_on(F2FS_P_SB(page), PageWriteback(page)); 148 f2fs_bug_on(F2FS_P_SB(page), PageWriteback(page));
@@ -383,7 +383,7 @@ static int f2fs_move_inline_dirents(struct inode *dir, struct page *ipage,
383 set_sbi_flag(F2FS_P_SB(page), SBI_NEED_FSCK); 383 set_sbi_flag(F2FS_P_SB(page), SBI_NEED_FSCK);
384 f2fs_warn(F2FS_P_SB(page), "%s: corrupted inline inode ino=%lx, i_addr[0]:0x%x, run fsck to fix.", 384 f2fs_warn(F2FS_P_SB(page), "%s: corrupted inline inode ino=%lx, i_addr[0]:0x%x, run fsck to fix.",
385 __func__, dir->i_ino, dn.data_blkaddr); 385 __func__, dir->i_ino, dn.data_blkaddr);
386 err = -EINVAL; 386 err = -EFSCORRUPTED;
387 goto out; 387 goto out;
388 } 388 }
389 389
diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
index 9ea3aedb8213..a33d7a849b2d 100644
--- a/fs/f2fs/inode.c
+++ b/fs/f2fs/inode.c
@@ -74,7 +74,7 @@ static int __written_first_block(struct f2fs_sb_info *sbi,
74 if (!__is_valid_data_blkaddr(addr)) 74 if (!__is_valid_data_blkaddr(addr))
75 return 1; 75 return 1;
76 if (!f2fs_is_valid_blkaddr(sbi, addr, DATA_GENERIC_ENHANCE)) 76 if (!f2fs_is_valid_blkaddr(sbi, addr, DATA_GENERIC_ENHANCE))
77 return -EFAULT; 77 return -EFSCORRUPTED;
78 return 0; 78 return 0;
79} 79}
80 80
@@ -358,7 +358,7 @@ static int do_read_inode(struct inode *inode)
358 358
359 if (!sanity_check_inode(inode, node_page)) { 359 if (!sanity_check_inode(inode, node_page)) {
360 f2fs_put_page(node_page, 1); 360 f2fs_put_page(node_page, 1);
361 return -EINVAL; 361 return -EFSCORRUPTED;
362 } 362 }
363 363
364 /* check data exist */ 364 /* check data exist */
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 4d9b4c58d8a9..a18b2a895771 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -36,7 +36,7 @@ int f2fs_check_nid_range(struct f2fs_sb_info *sbi, nid_t nid)
36 set_sbi_flag(sbi, SBI_NEED_FSCK); 36 set_sbi_flag(sbi, SBI_NEED_FSCK);
37 f2fs_warn(sbi, "%s: out-of-range nid=%x, run fsck to fix.", 37 f2fs_warn(sbi, "%s: out-of-range nid=%x, run fsck to fix.",
38 __func__, nid); 38 __func__, nid);
39 return -EINVAL; 39 return -EFSCORRUPTED;
40 } 40 }
41 return 0; 41 return 0;
42} 42}
@@ -1288,7 +1288,7 @@ static int read_node_page(struct page *page, int op_flags)
1288 if (PageUptodate(page)) { 1288 if (PageUptodate(page)) {
1289 if (!f2fs_inode_chksum_verify(sbi, page)) { 1289 if (!f2fs_inode_chksum_verify(sbi, page)) {
1290 ClearPageUptodate(page); 1290 ClearPageUptodate(page);
1291 return -EBADMSG; 1291 return -EFSBADCRC;
1292 } 1292 }
1293 return LOCKED_PAGE; 1293 return LOCKED_PAGE;
1294 } 1294 }
@@ -1372,7 +1372,7 @@ repeat:
1372 } 1372 }
1373 1373
1374 if (!f2fs_inode_chksum_verify(sbi, page)) { 1374 if (!f2fs_inode_chksum_verify(sbi, page)) {
1375 err = -EBADMSG; 1375 err = -EFSBADCRC;
1376 goto out_err; 1376 goto out_err;
1377 } 1377 }
1378page_hit: 1378page_hit:
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
index 72c2c4ba795f..783773e4560d 100644
--- a/fs/f2fs/recovery.c
+++ b/fs/f2fs/recovery.c
@@ -553,7 +553,7 @@ retry_dn:
553 f2fs_warn(sbi, "Inconsistent ofs_of_node, ino:%lu, ofs:%u, %u", 553 f2fs_warn(sbi, "Inconsistent ofs_of_node, ino:%lu, ofs:%u, %u",
554 inode->i_ino, ofs_of_node(dn.node_page), 554 inode->i_ino, ofs_of_node(dn.node_page),
555 ofs_of_node(page)); 555 ofs_of_node(page));
556 err = -EFAULT; 556 err = -EFSCORRUPTED;
557 goto err; 557 goto err;
558 } 558 }
559 559
@@ -565,13 +565,13 @@ retry_dn:
565 565
566 if (__is_valid_data_blkaddr(src) && 566 if (__is_valid_data_blkaddr(src) &&
567 !f2fs_is_valid_blkaddr(sbi, src, META_POR)) { 567 !f2fs_is_valid_blkaddr(sbi, src, META_POR)) {
568 err = -EFAULT; 568 err = -EFSCORRUPTED;
569 goto err; 569 goto err;
570 } 570 }
571 571
572 if (__is_valid_data_blkaddr(dest) && 572 if (__is_valid_data_blkaddr(dest) &&
573 !f2fs_is_valid_blkaddr(sbi, dest, META_POR)) { 573 !f2fs_is_valid_blkaddr(sbi, dest, META_POR)) {
574 err = -EFAULT; 574 err = -EFSCORRUPTED;
575 goto err; 575 goto err;
576 } 576 }
577 577
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index ee96e6fb1a50..478284db3065 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -2819,7 +2819,7 @@ int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range)
2819 2819
2820 if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) { 2820 if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) {
2821 f2fs_warn(sbi, "Found FS corruption, run fsck to fix."); 2821 f2fs_warn(sbi, "Found FS corruption, run fsck to fix.");
2822 return -EIO; 2822 return -EFSCORRUPTED;
2823 } 2823 }
2824 2824
2825 /* start/end segment number in main_area */ 2825 /* start/end segment number in main_area */
@@ -3244,7 +3244,7 @@ int f2fs_inplace_write_data(struct f2fs_io_info *fio)
3244 set_sbi_flag(sbi, SBI_NEED_FSCK); 3244 set_sbi_flag(sbi, SBI_NEED_FSCK);
3245 f2fs_warn(sbi, "%s: incorrect segment(%u) type, run fsck to fix.", 3245 f2fs_warn(sbi, "%s: incorrect segment(%u) type, run fsck to fix.",
3246 __func__, segno); 3246 __func__, segno);
3247 return -EFAULT; 3247 return -EFSCORRUPTED;
3248 } 3248 }
3249 3249
3250 stat_inc_inplace_blocks(fio->sbi); 3250 stat_inc_inplace_blocks(fio->sbi);
@@ -4153,7 +4153,7 @@ static int build_sit_entries(struct f2fs_sb_info *sbi)
4153 f2fs_err(sbi, "Wrong journal entry on segno %u", 4153 f2fs_err(sbi, "Wrong journal entry on segno %u",
4154 start); 4154 start);
4155 set_sbi_flag(sbi, SBI_NEED_FSCK); 4155 set_sbi_flag(sbi, SBI_NEED_FSCK);
4156 err = -EINVAL; 4156 err = -EFSCORRUPTED;
4157 break; 4157 break;
4158 } 4158 }
4159 4159
@@ -4193,7 +4193,7 @@ static int build_sit_entries(struct f2fs_sb_info *sbi)
4193 f2fs_err(sbi, "SIT is corrupted node# %u vs %u", 4193 f2fs_err(sbi, "SIT is corrupted node# %u vs %u",
4194 total_node_blocks, valid_node_count(sbi)); 4194 total_node_blocks, valid_node_count(sbi));
4195 set_sbi_flag(sbi, SBI_NEED_FSCK); 4195 set_sbi_flag(sbi, SBI_NEED_FSCK);
4196 err = -EINVAL; 4196 err = -EFSCORRUPTED;
4197 } 4197 }
4198 4198
4199 return err; 4199 return err;
@@ -4311,7 +4311,7 @@ out:
4311 "Current segment's next free block offset is inconsistent with bitmap, logtype:%u, segno:%u, type:%u, next_blkoff:%u, blkofs:%u", 4311 "Current segment's next free block offset is inconsistent with bitmap, logtype:%u, segno:%u, type:%u, next_blkoff:%u, blkofs:%u",
4312 i, curseg->segno, curseg->alloc_type, 4312 i, curseg->segno, curseg->alloc_type,
4313 curseg->next_blkoff, blkofs); 4313 curseg->next_blkoff, blkofs);
4314 return -EINVAL; 4314 return -EFSCORRUPTED;
4315 } 4315 }
4316 } 4316 }
4317 return 0; 4317 return 0;
diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h
index 2ae6df03b998..b74602813a05 100644
--- a/fs/f2fs/segment.h
+++ b/fs/f2fs/segment.h
@@ -696,7 +696,7 @@ static inline int check_block_count(struct f2fs_sb_info *sbi,
696 f2fs_err(sbi, "Mismatch valid blocks %d vs. %d", 696 f2fs_err(sbi, "Mismatch valid blocks %d vs. %d",
697 GET_SIT_VBLOCKS(raw_sit), valid_blocks); 697 GET_SIT_VBLOCKS(raw_sit), valid_blocks);
698 set_sbi_flag(sbi, SBI_NEED_FSCK); 698 set_sbi_flag(sbi, SBI_NEED_FSCK);
699 return -EINVAL; 699 return -EFSCORRUPTED;
700 } 700 }
701 701
702 /* check segment usage, and check boundary of a given segment number */ 702 /* check segment usage, and check boundary of a given segment number */
@@ -705,7 +705,7 @@ static inline int check_block_count(struct f2fs_sb_info *sbi,
705 f2fs_err(sbi, "Wrong valid blocks %d or segno %u", 705 f2fs_err(sbi, "Wrong valid blocks %d or segno %u",
706 GET_SIT_VBLOCKS(raw_sit), segno); 706 GET_SIT_VBLOCKS(raw_sit), segno);
707 set_sbi_flag(sbi, SBI_NEED_FSCK); 707 set_sbi_flag(sbi, SBI_NEED_FSCK);
708 return -EINVAL; 708 return -EFSCORRUPTED;
709 } 709 }
710 return 0; 710 return 0;
711} 711}
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 2a40944d0810..3ac706506ca2 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -2846,7 +2846,7 @@ static int read_raw_super_block(struct f2fs_sb_info *sbi,
2846 if (sanity_check_raw_super(sbi, bh)) { 2846 if (sanity_check_raw_super(sbi, bh)) {
2847 f2fs_err(sbi, "Can't find valid F2FS filesystem in %dth superblock", 2847 f2fs_err(sbi, "Can't find valid F2FS filesystem in %dth superblock",
2848 block + 1); 2848 block + 1);
2849 err = -EINVAL; 2849 err = -EFSCORRUPTED;
2850 brelse(bh); 2850 brelse(bh);
2851 continue; 2851 continue;
2852 } 2852 }
diff --git a/fs/f2fs/xattr.c b/fs/f2fs/xattr.c
index e791741d193b..963242018663 100644
--- a/fs/f2fs/xattr.c
+++ b/fs/f2fs/xattr.c
@@ -346,7 +346,7 @@ static int lookup_all_xattrs(struct inode *inode, struct page *ipage,
346 346
347 *xe = __find_xattr(cur_addr, last_txattr_addr, index, len, name); 347 *xe = __find_xattr(cur_addr, last_txattr_addr, index, len, name);
348 if (!*xe) { 348 if (!*xe) {
349 err = -EFAULT; 349 err = -EFSCORRUPTED;
350 goto out; 350 goto out;
351 } 351 }
352check: 352check:
@@ -622,7 +622,7 @@ static int __f2fs_setxattr(struct inode *inode, int index,
622 /* find entry with wanted name. */ 622 /* find entry with wanted name. */
623 here = __find_xattr(base_addr, last_base_addr, index, len, name); 623 here = __find_xattr(base_addr, last_base_addr, index, len, name);
624 if (!here) { 624 if (!here) {
625 error = -EFAULT; 625 error = -EFSCORRUPTED;
626 goto exit; 626 goto exit;
627 } 627 }
628 628