Commit 65019df8 authored by Johannes Thumshirn's avatar Johannes Thumshirn Committed by David Sterba

btrfs: resurrect btrfs_crc32c()

Commit 9678c543 ("btrfs: Remove custom crc32c init code") removed
the btrfs_crc32c() function, because it was a duplicate of the crc32c()
library function we already have in the kernel.

Resurrect it as a shim wrapper over crc32c() to make following
transformations of the checksumming code in btrfs easier.

Also provide a btrfs_crc32_final() to ease following transformations.
Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 5852c8b9
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <linux/kobject.h> #include <linux/kobject.h>
#include <trace/events/btrfs.h> #include <trace/events/btrfs.h>
#include <asm/kmap_types.h> #include <asm/kmap_types.h>
#include <asm/unaligned.h>
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/btrfs.h> #include <linux/btrfs.h>
#include <linux/btrfs_tree.h> #include <linux/btrfs_tree.h>
...@@ -2644,6 +2645,16 @@ BTRFS_SETGET_STACK_FUNCS(stack_dev_replace_cursor_right, ...@@ -2644,6 +2645,16 @@ BTRFS_SETGET_STACK_FUNCS(stack_dev_replace_cursor_right,
((unsigned long)(BTRFS_LEAF_DATA_OFFSET + \ ((unsigned long)(BTRFS_LEAF_DATA_OFFSET + \
btrfs_item_offset_nr(leaf, slot))) btrfs_item_offset_nr(leaf, slot)))
static inline u32 btrfs_crc32c(u32 crc, const void *address, unsigned length)
{
return crc32c(crc, address, length);
}
static inline void btrfs_crc32c_final(u32 crc, u8 *result)
{
put_unaligned_le32(~crc, result);
}
static inline u64 btrfs_name_hash(const char *name, int len) static inline u64 btrfs_name_hash(const char *name, int len)
{ {
return crc32c((u32)~1, name, len); return crc32c((u32)~1, name, len);
......
...@@ -1135,11 +1135,11 @@ static u64 hash_extent_data_ref(u64 root_objectid, u64 owner, u64 offset) ...@@ -1135,11 +1135,11 @@ static u64 hash_extent_data_ref(u64 root_objectid, u64 owner, u64 offset)
__le64 lenum; __le64 lenum;
lenum = cpu_to_le64(root_objectid); lenum = cpu_to_le64(root_objectid);
high_crc = crc32c(high_crc, &lenum, sizeof(lenum)); high_crc = btrfs_crc32c(high_crc, &lenum, sizeof(lenum));
lenum = cpu_to_le64(owner); lenum = cpu_to_le64(owner);
low_crc = crc32c(low_crc, &lenum, sizeof(lenum)); low_crc = btrfs_crc32c(low_crc, &lenum, sizeof(lenum));
lenum = cpu_to_le64(offset); lenum = cpu_to_le64(offset);
low_crc = crc32c(low_crc, &lenum, sizeof(lenum)); low_crc = btrfs_crc32c(low_crc, &lenum, sizeof(lenum));
return ((u64)high_crc << 31) ^ (u64)low_crc; return ((u64)high_crc << 31) ^ (u64)low_crc;
} }
......
...@@ -686,7 +686,7 @@ static int send_cmd(struct send_ctx *sctx) ...@@ -686,7 +686,7 @@ static int send_cmd(struct send_ctx *sctx)
hdr->len = cpu_to_le32(sctx->send_size - sizeof(*hdr)); hdr->len = cpu_to_le32(sctx->send_size - sizeof(*hdr));
hdr->crc = 0; hdr->crc = 0;
crc = crc32c(0, (unsigned char *)sctx->send_buf, sctx->send_size); crc = btrfs_crc32c(0, (unsigned char *)sctx->send_buf, sctx->send_size);
hdr->crc = cpu_to_le32(crc); hdr->crc = cpu_to_le32(crc);
ret = write_buf(sctx->send_filp, sctx->send_buf, sctx->send_size, ret = write_buf(sctx->send_filp, sctx->send_buf, sctx->send_size,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment