Message ID | 20190510111547.15310-8-jthumshirn@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for SHA-256 checksums | expand |
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 <jthumshirn@suse.de> Reviewed-by: Nikolay Borisov <nborisov@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"); >
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");
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 <jthumshirn@suse.de> --- fs/btrfs/free-space-cache.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)