summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/tree-checker.c
diff options
context:
space:
mode:
authorQu Wenruo <wqu@suse.com>2019-03-20 01:39:14 -0400
committerDavid Sterba <dsterba@suse.com>2019-04-29 13:02:32 -0400
commitbf871c3b43b1dcc3f2a076ff39a8f1ce7959d958 (patch)
tree138860f69a460a93795ae4c369d98a9e26435f0c /fs/btrfs/tree-checker.c
parentf114024376bceb1c0f61a7bad4a72a0f978767af (diff)
btrfs: tree-checker: Make btrfs_check_chunk_valid() return EUCLEAN instead of EIO
To follow the standard behavior of tree-checker. Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/tree-checker.c')
-rw-r--r--fs/btrfs/tree-checker.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/fs/btrfs/tree-checker.c b/fs/btrfs/tree-checker.c
index 80d87814f261..75cc9e1d61bb 100644
--- a/fs/btrfs/tree-checker.c
+++ b/fs/btrfs/tree-checker.c
@@ -496,7 +496,7 @@ static void chunk_err(const struct btrfs_fs_info *fs_info,
496/* 496/*
497 * The common chunk check which could also work on super block sys chunk array. 497 * The common chunk check which could also work on super block sys chunk array.
498 * 498 *
499 * Return -EIO if anything is corrupted. 499 * Return -EUCLEAN if anything is corrupted.
500 * Return 0 if everything is OK. 500 * Return 0 if everything is OK.
501 */ 501 */
502int btrfs_check_chunk_valid(struct btrfs_fs_info *fs_info, 502int btrfs_check_chunk_valid(struct btrfs_fs_info *fs_info,
@@ -520,31 +520,31 @@ int btrfs_check_chunk_valid(struct btrfs_fs_info *fs_info,
520 if (!num_stripes) { 520 if (!num_stripes) {
521 chunk_err(fs_info, leaf, chunk, logical, 521 chunk_err(fs_info, leaf, chunk, logical,
522 "invalid chunk num_stripes, have %u", num_stripes); 522 "invalid chunk num_stripes, have %u", num_stripes);
523 return -EIO; 523 return -EUCLEAN;
524 } 524 }
525 if (!IS_ALIGNED(logical, fs_info->sectorsize)) { 525 if (!IS_ALIGNED(logical, fs_info->sectorsize)) {
526 chunk_err(fs_info, leaf, chunk, logical, 526 chunk_err(fs_info, leaf, chunk, logical,
527 "invalid chunk logical, have %llu should aligned to %u", 527 "invalid chunk logical, have %llu should aligned to %u",
528 logical, fs_info->sectorsize); 528 logical, fs_info->sectorsize);
529 return -EIO; 529 return -EUCLEAN;
530 } 530 }
531 if (btrfs_chunk_sector_size(leaf, chunk) != fs_info->sectorsize) { 531 if (btrfs_chunk_sector_size(leaf, chunk) != fs_info->sectorsize) {
532 chunk_err(fs_info, leaf, chunk, logical, 532 chunk_err(fs_info, leaf, chunk, logical,
533 "invalid chunk sectorsize, have %u expect %u", 533 "invalid chunk sectorsize, have %u expect %u",
534 btrfs_chunk_sector_size(leaf, chunk), 534 btrfs_chunk_sector_size(leaf, chunk),
535 fs_info->sectorsize); 535 fs_info->sectorsize);
536 return -EIO; 536 return -EUCLEAN;
537 } 537 }
538 if (!length || !IS_ALIGNED(length, fs_info->sectorsize)) { 538 if (!length || !IS_ALIGNED(length, fs_info->sectorsize)) {
539 chunk_err(fs_info, leaf, chunk, logical, 539 chunk_err(fs_info, leaf, chunk, logical,
540 "invalid chunk length, have %llu", length); 540 "invalid chunk length, have %llu", length);
541 return -EIO; 541 return -EUCLEAN;
542 } 542 }
543 if (!is_power_of_2(stripe_len) || stripe_len != BTRFS_STRIPE_LEN) { 543 if (!is_power_of_2(stripe_len) || stripe_len != BTRFS_STRIPE_LEN) {
544 chunk_err(fs_info, leaf, chunk, logical, 544 chunk_err(fs_info, leaf, chunk, logical,
545 "invalid chunk stripe length: %llu", 545 "invalid chunk stripe length: %llu",
546 stripe_len); 546 stripe_len);
547 return -EIO; 547 return -EUCLEAN;
548 } 548 }
549 if (~(BTRFS_BLOCK_GROUP_TYPE_MASK | BTRFS_BLOCK_GROUP_PROFILE_MASK) & 549 if (~(BTRFS_BLOCK_GROUP_TYPE_MASK | BTRFS_BLOCK_GROUP_PROFILE_MASK) &
550 type) { 550 type) {
@@ -553,14 +553,14 @@ int btrfs_check_chunk_valid(struct btrfs_fs_info *fs_info,
553 ~(BTRFS_BLOCK_GROUP_TYPE_MASK | 553 ~(BTRFS_BLOCK_GROUP_TYPE_MASK |
554 BTRFS_BLOCK_GROUP_PROFILE_MASK) & 554 BTRFS_BLOCK_GROUP_PROFILE_MASK) &
555 btrfs_chunk_type(leaf, chunk)); 555 btrfs_chunk_type(leaf, chunk));
556 return -EIO; 556 return -EUCLEAN;
557 } 557 }
558 558
559 if ((type & BTRFS_BLOCK_GROUP_TYPE_MASK) == 0) { 559 if ((type & BTRFS_BLOCK_GROUP_TYPE_MASK) == 0) {
560 chunk_err(fs_info, leaf, chunk, logical, 560 chunk_err(fs_info, leaf, chunk, logical,
561 "missing chunk type flag, have 0x%llx one bit must be set in 0x%llx", 561 "missing chunk type flag, have 0x%llx one bit must be set in 0x%llx",
562 type, BTRFS_BLOCK_GROUP_TYPE_MASK); 562 type, BTRFS_BLOCK_GROUP_TYPE_MASK);
563 return -EIO; 563 return -EUCLEAN;
564 } 564 }
565 565
566 if ((type & BTRFS_BLOCK_GROUP_SYSTEM) && 566 if ((type & BTRFS_BLOCK_GROUP_SYSTEM) &&
@@ -568,7 +568,7 @@ int btrfs_check_chunk_valid(struct btrfs_fs_info *fs_info,
568 chunk_err(fs_info, leaf, chunk, logical, 568 chunk_err(fs_info, leaf, chunk, logical,
569 "system chunk with data or metadata type: 0x%llx", 569 "system chunk with data or metadata type: 0x%llx",
570 type); 570 type);
571 return -EIO; 571 return -EUCLEAN;
572 } 572 }
573 573
574 features = btrfs_super_incompat_flags(fs_info->super_copy); 574 features = btrfs_super_incompat_flags(fs_info->super_copy);
@@ -580,7 +580,7 @@ int btrfs_check_chunk_valid(struct btrfs_fs_info *fs_info,
580 (type & BTRFS_BLOCK_GROUP_DATA)) { 580 (type & BTRFS_BLOCK_GROUP_DATA)) {
581 chunk_err(fs_info, leaf, chunk, logical, 581 chunk_err(fs_info, leaf, chunk, logical,
582 "mixed chunk type in non-mixed mode: 0x%llx", type); 582 "mixed chunk type in non-mixed mode: 0x%llx", type);
583 return -EIO; 583 return -EUCLEAN;
584 } 584 }
585 } 585 }
586 586
@@ -594,7 +594,7 @@ int btrfs_check_chunk_valid(struct btrfs_fs_info *fs_info,
594 "invalid num_stripes:sub_stripes %u:%u for profile %llu", 594 "invalid num_stripes:sub_stripes %u:%u for profile %llu",
595 num_stripes, sub_stripes, 595 num_stripes, sub_stripes,
596 type & BTRFS_BLOCK_GROUP_PROFILE_MASK); 596 type & BTRFS_BLOCK_GROUP_PROFILE_MASK);
597 return -EIO; 597 return -EUCLEAN;
598 } 598 }
599 599
600 return 0; 600 return 0;