提交 b06660b5 编写于 作者: Q Qu Wenruo 提交者: David Sterba

btrfs: replace memset with memzero_page in data checksum verification

The original code resets the page to 0x1 for not apparent reason, it's
been like that since the initial 2007 code added in commit 07157aac
("Btrfs: Add file data csums back in via hooks in the extent map code").

It could mean that a failed buffer can be detected from the data but
that's just a guess and any value is good.
Reviewed-by: NJohannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: NQu Wenruo <wqu@suse.com>
Reviewed-by: NDavid Sterba <dsterba@suse.com>
[ update changelog ]
Signed-off-by: NDavid Sterba <dsterba@suse.com>
上级 d4135134
...@@ -3275,11 +3275,11 @@ static int check_data_csum(struct inode *inode, struct btrfs_bio *bbio, ...@@ -3275,11 +3275,11 @@ static int check_data_csum(struct inode *inode, struct btrfs_bio *bbio,
shash->tfm = fs_info->csum_shash; shash->tfm = fs_info->csum_shash;
crypto_shash_digest(shash, kaddr + pgoff, len, csum); crypto_shash_digest(shash, kaddr + pgoff, len, csum);
kunmap_atomic(kaddr);
if (memcmp(csum, csum_expected, csum_size)) if (memcmp(csum, csum_expected, csum_size))
goto zeroit; goto zeroit;
kunmap_atomic(kaddr);
return 0; return 0;
zeroit: zeroit:
btrfs_print_data_csum_error(BTRFS_I(inode), start, csum, csum_expected, btrfs_print_data_csum_error(BTRFS_I(inode), start, csum, csum_expected,
...@@ -3287,9 +3287,7 @@ static int check_data_csum(struct inode *inode, struct btrfs_bio *bbio, ...@@ -3287,9 +3287,7 @@ static int check_data_csum(struct inode *inode, struct btrfs_bio *bbio,
if (bbio->device) if (bbio->device)
btrfs_dev_stat_inc_and_print(bbio->device, btrfs_dev_stat_inc_and_print(bbio->device,
BTRFS_DEV_STAT_CORRUPTION_ERRS); BTRFS_DEV_STAT_CORRUPTION_ERRS);
memset(kaddr + pgoff, 1, len); memzero_page(page, pgoff, len);
flush_dcache_page(page);
kunmap_atomic(kaddr);
return -EIO; return -EIO;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册