block: use memcpy_to_bvec in copy_to_high_bio_irq
Use memcpy_to_bvec instead of opencoding the logic. 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-12-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
f8b679a070
commit
f434cdc78e
|
@ -67,18 +67,6 @@ static __init int init_emergency_pool(void)
|
|||
|
||||
__initcall(init_emergency_pool);
|
||||
|
||||
/*
|
||||
* highmem version, map in to vec
|
||||
*/
|
||||
static void bounce_copy_vec(struct bio_vec *to, unsigned char *vfrom)
|
||||
{
|
||||
unsigned char *vto;
|
||||
|
||||
vto = kmap_atomic(to->bv_page);
|
||||
memcpy(vto + to->bv_offset, vfrom, to->bv_len);
|
||||
kunmap_atomic(vto);
|
||||
}
|
||||
|
||||
/*
|
||||
* Simple bounce buffer support for highmem pages. Depending on the
|
||||
* queue gfp mask set, *to may or may not be a highmem page. kmap it
|
||||
|
@ -86,7 +74,6 @@ static void bounce_copy_vec(struct bio_vec *to, unsigned char *vfrom)
|
|||
*/
|
||||
static void copy_to_high_bio_irq(struct bio *to, struct bio *from)
|
||||
{
|
||||
unsigned char *vfrom;
|
||||
struct bio_vec tovec, fromvec;
|
||||
struct bvec_iter iter;
|
||||
/*
|
||||
|
@ -104,11 +91,8 @@ static void copy_to_high_bio_irq(struct bio *to, struct bio *from)
|
|||
* been modified by the block layer, so use the original
|
||||
* copy, bounce_copy_vec already uses tovec->bv_len
|
||||
*/
|
||||
vfrom = page_address(fromvec.bv_page) +
|
||||
tovec.bv_offset;
|
||||
|
||||
bounce_copy_vec(&tovec, vfrom);
|
||||
flush_dcache_page(tovec.bv_page);
|
||||
memcpy_to_bvec(&tovec, page_address(fromvec.bv_page) +
|
||||
tovec.bv_offset);
|
||||
}
|
||||
bio_advance_iter(from, &from_iter, tovec.bv_len);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue