Commit 8dc3f22c authored by Johannes Thumshirn's avatar Johannes Thumshirn Committed by David Sterba

btrfs: check for supported superblock checksum type before checksum validation

Now that we have factorerd out the superblock checksum type validation,
we can check for supported superblock checksum types before doing the
actual validation of the superblock read from disk.

This leads the path to further simplifications of
btrfs_check_super_csum() later on.
Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
[ add comment ]
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent e7e16f48
...@@ -2816,6 +2816,20 @@ int open_ctree(struct super_block *sb, ...@@ -2816,6 +2816,20 @@ int open_ctree(struct super_block *sb,
goto fail_alloc; goto fail_alloc;
} }
/*
* Verify the type first, if that or the the checksum value are
* corrupted, we'll find out
*/
if (!btrfs_supported_super_csum(btrfs_super_csum_type(
(struct btrfs_super_block *) bh->b_data))) {
btrfs_err(fs_info, "unsupported checksum algorithm: %u",
btrfs_super_csum_type((struct btrfs_super_block *)
bh->b_data));
err = -EINVAL;
brelse(bh);
goto fail_alloc;
}
/* /*
* We want to check superblock checksum, the type is stored inside. * We want to check superblock checksum, the type is stored inside.
* Pass the whole disk block of size BTRFS_SUPER_INFO_SIZE (4k). * Pass the whole disk block of size BTRFS_SUPER_INFO_SIZE (4k).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment