btrfs: use btrfs_crc32c{,_final}() in for free space cache
authorJohannes Thumshirn <jthumshirn@suse.de>
Wed, 22 May 2019 08:19:00 +0000 (10:19 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 1 Jul 2019 11:35:00 +0000 (13:35 +0200)
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.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/free-space-cache.c

index db53ac88e1594683ddfe5c73fb9fc0141861ad3e..6814fa42eba3ccf8a2f47cb1e6bc73591b75075a 100644 (file)
@@ -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");