btrfs: use bvec_kmap_local in btrfs_csum_one_bio

Using local kmaps slightly reduces the chances to stray writes, and
the bvec interface cleans up the code a little bit.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Christoph Hellwig 2021-10-12 08:31:53 +02:00 committed by David Sterba
parent 11b66fa6ee
commit 3dcfbcce1b

View File

@ -708,12 +708,12 @@ blk_status_t btrfs_csum_one_bio(struct btrfs_inode *inode, struct bio *bio,
index = 0; index = 0;
} }
data = kmap_atomic(bvec.bv_page); data = bvec_kmap_local(&bvec);
crypto_shash_digest(shash, data + bvec.bv_offset crypto_shash_digest(shash,
+ (i * fs_info->sectorsize), data + (i * fs_info->sectorsize),
fs_info->sectorsize, fs_info->sectorsize,
sums->sums + index); sums->sums + index);
kunmap_atomic(data); kunmap_local(data);
index += fs_info->csum_size; index += fs_info->csum_size;
offset += fs_info->sectorsize; offset += fs_info->sectorsize;
this_sum_bytes += fs_info->sectorsize; this_sum_bytes += fs_info->sectorsize;