On 10.05.19 г. 14:15 ч., Johannes Thumshirn wrote:
> The CRC checksum in the free space cache is not dependant on the super
> block's csum_type field but always a CRC32C.
> 
> So use btrfs_crc32c() and btrfs_crc32c_final() instead of btrfs_csum_data()
> and btrfs_csum_final() for computing these checksums.
> 
> Signed-off-by: Johannes Thumshirn <jthumsh...@suse.de>

Reviewed-by: Nikolay Borisov <nbori...@suse.com>

> ---
>  fs/btrfs/free-space-cache.c | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
> index f74dc259307b..26ed8ed60722 100644
> --- a/fs/btrfs/free-space-cache.c
> +++ b/fs/btrfs/free-space-cache.c
> @@ -465,9 +465,8 @@ static void io_ctl_set_crc(struct btrfs_io_ctl *io_ctl, 
> int index)
>       if (index == 0)
>               offset = sizeof(u32) * io_ctl->num_pages;
>  
> -     crc = btrfs_csum_data(io_ctl->orig + offset, crc,
> -                           PAGE_SIZE - offset);
> -     btrfs_csum_final(crc, (u8 *)&crc);
> +     crc = btrfs_crc32c(crc, io_ctl->orig + offset, PAGE_SIZE - offset);
> +     btrfs_crc32c_final(crc, (u8 *)&crc);
>       io_ctl_unmap_page(io_ctl);
>       tmp = page_address(io_ctl->pages[0]);
>       tmp += index;
> @@ -493,9 +492,8 @@ static int io_ctl_check_crc(struct btrfs_io_ctl *io_ctl, 
> int index)
>       val = *tmp;
>  
>       io_ctl_map_page(io_ctl, 0);
> -     crc = btrfs_csum_data(io_ctl->orig + offset, crc,
> -                           PAGE_SIZE - offset);
> -     btrfs_csum_final(crc, (u8 *)&crc);
> +     crc = btrfs_crc32c(crc, io_ctl->orig + offset, PAGE_SIZE - offset);
> +     btrfs_crc32c_final(crc, (u8 *)&crc);
>       if (val != crc) {
>               btrfs_err_rl(io_ctl->fs_info,
>                       "csum mismatch on free space cache");
> 

Reply via email to