summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/tree-checker.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/tree-checker.c')
-rw-r--r--fs/btrfs/tree-checker.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/fs/btrfs/tree-checker.c b/fs/btrfs/tree-checker.c
index 1dac957eaf35..03bee2b0e1d5 100644
--- a/fs/btrfs/tree-checker.c
+++ b/fs/btrfs/tree-checker.c
@@ -606,10 +606,9 @@ int btrfs_check_chunk_valid(struct btrfs_fs_info *fs_info,
606 return 0; 606 return 0;
607} 607}
608 608
609__printf(4, 5) 609__printf(3, 4)
610__cold 610__cold
611static void dev_item_err(const struct btrfs_fs_info *fs_info, 611static void dev_item_err(const struct extent_buffer *eb, int slot,
612 const struct extent_buffer *eb, int slot,
613 const char *fmt, ...) 612 const char *fmt, ...)
614{ 613{
615 struct btrfs_key key; 614 struct btrfs_key key;
@@ -622,7 +621,7 @@ static void dev_item_err(const struct btrfs_fs_info *fs_info,
622 vaf.fmt = fmt; 621 vaf.fmt = fmt;
623 vaf.va = &args; 622 vaf.va = &args;
624 623
625 btrfs_crit(fs_info, 624 btrfs_crit(eb->fs_info,
626 "corrupt %s: root=%llu block=%llu slot=%d devid=%llu %pV", 625 "corrupt %s: root=%llu block=%llu slot=%d devid=%llu %pV",
627 btrfs_header_level(eb) == 0 ? "leaf" : "node", 626 btrfs_header_level(eb) == 0 ? "leaf" : "node",
628 btrfs_header_owner(eb), btrfs_header_bytenr(eb), slot, 627 btrfs_header_owner(eb), btrfs_header_bytenr(eb), slot,
@@ -638,20 +637,20 @@ static int check_dev_item(struct btrfs_fs_info *fs_info,
638 u64 max_devid = max(BTRFS_MAX_DEVS(fs_info), BTRFS_MAX_DEVS_SYS_CHUNK); 637 u64 max_devid = max(BTRFS_MAX_DEVS(fs_info), BTRFS_MAX_DEVS_SYS_CHUNK);
639 638
640 if (key->objectid != BTRFS_DEV_ITEMS_OBJECTID) { 639 if (key->objectid != BTRFS_DEV_ITEMS_OBJECTID) {
641 dev_item_err(fs_info, leaf, slot, 640 dev_item_err(leaf, slot,
642 "invalid objectid: has=%llu expect=%llu", 641 "invalid objectid: has=%llu expect=%llu",
643 key->objectid, BTRFS_DEV_ITEMS_OBJECTID); 642 key->objectid, BTRFS_DEV_ITEMS_OBJECTID);
644 return -EUCLEAN; 643 return -EUCLEAN;
645 } 644 }
646 if (key->offset > max_devid) { 645 if (key->offset > max_devid) {
647 dev_item_err(fs_info, leaf, slot, 646 dev_item_err(leaf, slot,
648 "invalid devid: has=%llu expect=[0, %llu]", 647 "invalid devid: has=%llu expect=[0, %llu]",
649 key->offset, max_devid); 648 key->offset, max_devid);
650 return -EUCLEAN; 649 return -EUCLEAN;
651 } 650 }
652 ditem = btrfs_item_ptr(leaf, slot, struct btrfs_dev_item); 651 ditem = btrfs_item_ptr(leaf, slot, struct btrfs_dev_item);
653 if (btrfs_device_id(leaf, ditem) != key->offset) { 652 if (btrfs_device_id(leaf, ditem) != key->offset) {
654 dev_item_err(fs_info, leaf, slot, 653 dev_item_err(leaf, slot,
655 "devid mismatch: key has=%llu item has=%llu", 654 "devid mismatch: key has=%llu item has=%llu",
656 key->offset, btrfs_device_id(leaf, ditem)); 655 key->offset, btrfs_device_id(leaf, ditem));
657 return -EUCLEAN; 656 return -EUCLEAN;
@@ -664,7 +663,7 @@ static int check_dev_item(struct btrfs_fs_info *fs_info,
664 */ 663 */
665 if (btrfs_device_bytes_used(leaf, ditem) > 664 if (btrfs_device_bytes_used(leaf, ditem) >
666 btrfs_device_total_bytes(leaf, ditem)) { 665 btrfs_device_total_bytes(leaf, ditem)) {
667 dev_item_err(fs_info, leaf, slot, 666 dev_item_err(leaf, slot,
668 "invalid bytes used: have %llu expect [0, %llu]", 667 "invalid bytes used: have %llu expect [0, %llu]",
669 btrfs_device_bytes_used(leaf, ditem), 668 btrfs_device_bytes_used(leaf, ditem),
670 btrfs_device_total_bytes(leaf, ditem)); 669 btrfs_device_total_bytes(leaf, ditem));