block: rewrite bio_copy_data_iter to use bvec_kmap_local and memcpy_to_bvec
Use the proper helpers instead of open coding the copy. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Link: https://lore.kernel.org/r/20210727055646.118787-11-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
bda135d9c0
commit
f8b679a070
26
block/bio.c
26
block/bio.c
|
@ -1186,27 +1186,15 @@ EXPORT_SYMBOL(bio_advance);
|
||||||
void bio_copy_data_iter(struct bio *dst, struct bvec_iter *dst_iter,
|
void bio_copy_data_iter(struct bio *dst, struct bvec_iter *dst_iter,
|
||||||
struct bio *src, struct bvec_iter *src_iter)
|
struct bio *src, struct bvec_iter *src_iter)
|
||||||
{
|
{
|
||||||
struct bio_vec src_bv, dst_bv;
|
|
||||||
void *src_p, *dst_p;
|
|
||||||
unsigned bytes;
|
|
||||||
|
|
||||||
while (src_iter->bi_size && dst_iter->bi_size) {
|
while (src_iter->bi_size && dst_iter->bi_size) {
|
||||||
src_bv = bio_iter_iovec(src, *src_iter);
|
struct bio_vec src_bv = bio_iter_iovec(src, *src_iter);
|
||||||
dst_bv = bio_iter_iovec(dst, *dst_iter);
|
struct bio_vec dst_bv = bio_iter_iovec(dst, *dst_iter);
|
||||||
|
unsigned int bytes = min(src_bv.bv_len, dst_bv.bv_len);
|
||||||
|
void *src_buf;
|
||||||
|
|
||||||
bytes = min(src_bv.bv_len, dst_bv.bv_len);
|
src_buf = bvec_kmap_local(&src_bv);
|
||||||
|
memcpy_to_bvec(&dst_bv, src_buf);
|
||||||
src_p = kmap_atomic(src_bv.bv_page);
|
kunmap_local(src_buf);
|
||||||
dst_p = kmap_atomic(dst_bv.bv_page);
|
|
||||||
|
|
||||||
memcpy(dst_p + dst_bv.bv_offset,
|
|
||||||
src_p + src_bv.bv_offset,
|
|
||||||
bytes);
|
|
||||||
|
|
||||||
kunmap_atomic(dst_p);
|
|
||||||
kunmap_atomic(src_p);
|
|
||||||
|
|
||||||
flush_dcache_page(dst_bv.bv_page);
|
|
||||||
|
|
||||||
bio_advance_iter_single(src, src_iter, bytes);
|
bio_advance_iter_single(src, src_iter, bytes);
|
||||||
bio_advance_iter_single(dst, dst_iter, bytes);
|
bio_advance_iter_single(dst, dst_iter, bytes);
|
||||||
|
|
Loading…
Reference in New Issue