btrfs-progs: volumes: Use new raid5_gen_result to calculate raid5 parity

Use thew raid5_gen_result() function to calculate raid5 parity.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
master
Qu Wenruo 2016-09-30 13:04:57 +08:00 committed by David Sterba
parent ef67f448c7
commit c00278a9e8
1 changed files with 6 additions and 13 deletions

View File

@ -2136,7 +2136,6 @@ int write_raid56_with_parity(struct btrfs_fs_info *info,
{
struct extent_buffer **ebs, *p_eb = NULL, *q_eb = NULL;
int i;
int j;
int ret;
int alloc_size = eb->len;
void **pointers;
@ -2194,18 +2193,12 @@ int write_raid56_with_parity(struct btrfs_fs_info *info,
raid6_gen_syndrome(multi->num_stripes, stripe_len, pointers);
} else {
ebs[multi->num_stripes - 1] = p_eb;
memcpy(p_eb->data, ebs[0]->data, stripe_len);
for (j = 1; j < multi->num_stripes - 1; j++) {
for (i = 0; i < stripe_len; i += sizeof(u64)) {
u64 p_eb_data;
u64 ebs_data;
p_eb_data = get_unaligned_64(p_eb->data + i);
ebs_data = get_unaligned_64(ebs[j]->data + i);
p_eb_data ^= ebs_data;
put_unaligned_64(p_eb_data, p_eb->data + i);
}
}
for (i = 0; i < multi->num_stripes; i++)
pointers[i] = ebs[i]->data;
ret = raid5_gen_result(multi->num_stripes, stripe_len,
multi->num_stripes - 1, pointers);
if (ret < 0)
goto out_free_split;
}
for (i = 0; i < multi->num_stripes; i++) {