diff options
author | Christoph Hellwig <hch@lst.de> | 2021-07-27 07:56:45 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-08-02 21:37:28 +0200 |
commit | 8aec120a9ca80c14ce002505cea1e1639f8e9ea5 (patch) | |
tree | 81789fbf5239cf8da124a4d2a68f4076e1548fe4 /block/t10-pi.c | |
parent | block: use memcpy_from_bvec in __blk_queue_bounce (diff) | |
download | linux-8aec120a9ca80c14ce002505cea1e1639f8e9ea5.tar.xz linux-8aec120a9ca80c14ce002505cea1e1639f8e9ea5.zip |
block: use bvec_kmap_local in t10_pi_type1_{prepare,complete}
Using local kmaps slightly reduces the chances to stray writes, and
the bvec interface cleans up the code a little bit.
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-15-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/t10-pi.c')
-rw-r--r-- | block/t10-pi.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/block/t10-pi.c b/block/t10-pi.c index d910534b3a41..00c203b2a921 100644 --- a/block/t10-pi.c +++ b/block/t10-pi.c @@ -147,11 +147,10 @@ static void t10_pi_type1_prepare(struct request *rq) break; bip_for_each_vec(iv, bip, iter) { - void *p, *pmap; unsigned int j; + void *p; - pmap = kmap_atomic(iv.bv_page); - p = pmap + iv.bv_offset; + p = bvec_kmap_local(&iv); for (j = 0; j < iv.bv_len; j += tuple_sz) { struct t10_pi_tuple *pi = p; @@ -161,8 +160,7 @@ static void t10_pi_type1_prepare(struct request *rq) ref_tag++; p += tuple_sz; } - - kunmap_atomic(pmap); + kunmap_local(p); } bip->bip_flags |= BIP_MAPPED_INTEGRITY; @@ -195,11 +193,10 @@ static void t10_pi_type1_complete(struct request *rq, unsigned int nr_bytes) struct bvec_iter iter; bip_for_each_vec(iv, bip, iter) { - void *p, *pmap; unsigned int j; + void *p; - pmap = kmap_atomic(iv.bv_page); - p = pmap + iv.bv_offset; + p = bvec_kmap_local(&iv); for (j = 0; j < iv.bv_len && intervals; j += tuple_sz) { struct t10_pi_tuple *pi = p; @@ -210,8 +207,7 @@ static void t10_pi_type1_complete(struct request *rq, unsigned int nr_bytes) intervals--; p += tuple_sz; } - - kunmap_atomic(pmap); + kunmap_local(p); } } } |