diff options
author | Christoph Hellwig <hch@lst.de> | 2022-03-03 14:19:04 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-03-04 12:29:21 -0700 |
commit | 3eddaa60b8411c135d1c71090dea9b59ff3f2e26 (patch) | |
tree | 7daa9f6cbd491afdbdc8cc6bbb104e98322d0d35 /drivers/block | |
parent | 472278508dce25316e806e45778658c3e4b353b3 (diff) | |
download | lwn-3eddaa60b8411c135d1c71090dea9b59ff3f2e26.tar.gz lwn-3eddaa60b8411c135d1c71090dea9b59ff3f2e26.zip |
drbd: use bvec_kmap_local in recv_dless_read
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: Ira Weiny <ira.weiny@intel.com>
Link: https://lore.kernel.org/r/20220303111905.321089-10-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/drbd/drbd_receiver.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 04e3ec12d8b4..fa00cf2ea952 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c @@ -2017,10 +2017,10 @@ static int recv_dless_read(struct drbd_peer_device *peer_device, struct drbd_req D_ASSERT(peer_device->device, sector == bio->bi_iter.bi_sector); bio_for_each_segment(bvec, bio, iter) { - void *mapped = kmap(bvec.bv_page) + bvec.bv_offset; + void *mapped = bvec_kmap_local(&bvec); expect = min_t(int, data_size, bvec.bv_len); err = drbd_recv_all_warn(peer_device->connection, mapped, expect); - kunmap(bvec.bv_page); + kunmap_local(mapped); if (err) return err; data_size -= expect; |