summaryrefslogtreecommitdiff
path: root/disk-io.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2007-10-15 16:25:43 -0400
committerDavid Woodhouse <dwmw2@hera.kernel.org>2007-10-15 16:25:43 -0400
commit167388ab2b97dd91580b88242825cdd5ee0cfa0a (patch)
tree465c0928e59064a1b9a4b38423df9a6daa20d6d6 /disk-io.c
parent28de03cb0aa69a75c51ee9dcf68942319eefed0b (diff)
Make the crc32c code match what the kernel modules are currently doing
Diffstat (limited to 'disk-io.c')
-rw-r--r--disk-io.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/disk-io.c b/disk-io.c
index f7c97fe4..76f7b64d 100644
--- a/disk-io.c
+++ b/disk-io.c
@@ -179,25 +179,27 @@ int clean_tree_block(struct btrfs_trans_handle *trans, struct btrfs_root *root,
int btrfs_csum_node(struct btrfs_root *root, struct btrfs_node *node)
{
- u32 crc;
+ u32 crc = ~(u32)0;
size_t len = btrfs_level_size(root, btrfs_header_level(&node->header)) -
BTRFS_CSUM_SIZE;
- crc = crc32c(0, (char *)(node) + BTRFS_CSUM_SIZE, len);
+ crc = crc32c(crc, (char *)(node) + BTRFS_CSUM_SIZE, len);
+ crc = ~cpu_to_le32(crc);
memcpy(node->header.csum, &crc, BTRFS_CRC32_SIZE);
return 0;
}
int btrfs_csum_super(struct btrfs_root *root, struct btrfs_super_block *super)
{
- u32 crc;
- char block[root->sectorsize];
- size_t len = root->sectorsize - BTRFS_CSUM_SIZE;
+ u32 crc = ~(u32)0;
+ char block[512];
+ size_t len = 512 - BTRFS_CSUM_SIZE;
- memset(block, 0, root->sectorsize);
+ memset(block, 0, 512);
memcpy(block, super, sizeof(*super));
- crc = crc32c(0, block + BTRFS_CSUM_SIZE, len);
+ crc = crc32c(crc, block + BTRFS_CSUM_SIZE, len);
+ crc = ~cpu_to_le32(crc);
memcpy(super->csum, &crc, BTRFS_CRC32_SIZE);
return 0;
}