On Wed, May 22, 2019 at 10:19:05AM +0200, Johannes Thumshirn wrote:
> 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.
>
> Signed-off-by: Johannes Thumshirn <jthumshirn@xxxxxxx>
> Reviewed-by: Nikolay Borisov <nborisov@xxxxxxxx>
>
> ---
> Changes to v2:
> - Print on-disk checksum type if we encounter an unsupported type (David)
> ---
> fs/btrfs/disk-io.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
> index 594583273782..f541d3c15d99 100644
> --- a/fs/btrfs/disk-io.c
> +++ b/fs/btrfs/disk-io.c
> @@ -2821,6 +2821,16 @@ int open_ctree(struct super_block *sb,
> goto fail_alloc;
> }
>
> + if (!btrfs_supported_super_csum((struct btrfs_super_block *)
> + bh->b_data)) {
Previous patch changed this to u16
> + btrfs_err(fs_info, "unsupported checksum algorithm: %d",
that's %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.
> * Pass the whole disk block of size BTRFS_SUPER_INFO_SIZE (4k).
> --
> 2.16.4