Message ID | 20190522081910.7689-9-jthumshirn@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for other checksums | expand |
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@suse.de> > Reviewed-by: Nikolay Borisov <nborisov@suse.com> > > --- > 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
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)) { + btrfs_err(fs_info, "unsupported checksum algorithm: %d", + 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).