* [dm-devel] use bio kmap helpers in device mapper
@ 2021-10-19 13:44 Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 1/4] dm-integrity: use bvec_kmap_local in integrity_metadata Christoph Hellwig
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Christoph Hellwig @ 2021-10-19 13:44 UTC (permalink / raw)
To: Mike Snitzer; +Cc: dm-devel
Hi Mike,
this series converts device mapper to use the bio kmap
helpers instead of the direct use of kmap_atomic.
Diffstat:
dm-integrity.c | 10 +++++-----
dm-log-writes.c | 6 ++----
dm-verity-target.c | 6 +++---
3 files changed, 10 insertions(+), 12 deletions(-)
--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dm-devel] [PATCH 1/4] dm-integrity: use bvec_kmap_local in integrity_metadata
2021-10-19 13:44 [dm-devel] use bio kmap helpers in device mapper Christoph Hellwig
@ 2021-10-19 13:44 ` Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 2/4] dm-integrity: use bvec_kmap_local in __journal_read_write Christoph Hellwig
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2021-10-19 13:44 UTC (permalink / raw)
To: Mike Snitzer; +Cc: dm-devel
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>
---
drivers/md/dm-integrity.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c
index dc03b70f6e65c..77c1f645f8438 100644
--- a/drivers/md/dm-integrity.c
+++ b/drivers/md/dm-integrity.c
@@ -1765,7 +1765,7 @@ static void integrity_metadata(struct work_struct *w)
char *mem, *checksums_ptr;
again:
- mem = (char *)kmap_atomic(bv.bv_page) + bv.bv_offset;
+ mem = bvec_kmap_local(&bv);
pos = 0;
checksums_ptr = checksums;
do {
@@ -1775,7 +1775,7 @@ static void integrity_metadata(struct work_struct *w)
pos += ic->sectors_per_block << SECTOR_SHIFT;
sector += ic->sectors_per_block;
} while (pos < bv.bv_len && sectors_to_process && checksums != checksums_onstack);
- kunmap_atomic(mem);
+ kunmap_local(mem);
r = dm_integrity_rw_tag(ic, checksums, &dio->metadata_block, &dio->metadata_offset,
checksums_ptr - checksums, dio->op == REQ_OP_READ ? TAG_CMP : TAG_WRITE);
--
2.30.2
--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [dm-devel] [PATCH 2/4] dm-integrity: use bvec_kmap_local in __journal_read_write
2021-10-19 13:44 [dm-devel] use bio kmap helpers in device mapper Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 1/4] dm-integrity: use bvec_kmap_local in integrity_metadata Christoph Hellwig
@ 2021-10-19 13:44 ` Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 3/4] dm-log-writes: use memcpy_from_bvec in log_writes_map Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 4/4] dm-verity: use bvec_kmap_local in verity_for_bv_block Christoph Hellwig
3 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2021-10-19 13:44 UTC (permalink / raw)
To: Mike Snitzer; +Cc: dm-devel
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>
---
drivers/md/dm-integrity.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c
index 77c1f645f8438..86350d7c1175f 100644
--- a/drivers/md/dm-integrity.c
+++ b/drivers/md/dm-integrity.c
@@ -1953,7 +1953,7 @@ static bool __journal_read_write(struct dm_integrity_io *dio, struct bio *bio,
n_sectors -= bv.bv_len >> SECTOR_SHIFT;
bio_advance_iter(bio, &bio->bi_iter, bv.bv_len);
retry_kmap:
- mem = kmap_atomic(bv.bv_page);
+ mem = bvec_kmap_local(&bv);
if (likely(dio->op == REQ_OP_WRITE))
flush_dcache_page(bv.bv_page);
@@ -1967,7 +1967,7 @@ static bool __journal_read_write(struct dm_integrity_io *dio, struct bio *bio,
if (unlikely(journal_entry_is_inprogress(je))) {
flush_dcache_page(bv.bv_page);
- kunmap_atomic(mem);
+ kunmap_local(mem);
__io_wait_event(ic->copy_to_journal_wait, !journal_entry_is_inprogress(je));
goto retry_kmap;
@@ -2058,7 +2058,7 @@ static bool __journal_read_write(struct dm_integrity_io *dio, struct bio *bio,
if (unlikely(dio->op == REQ_OP_READ))
flush_dcache_page(bv.bv_page);
- kunmap_atomic(mem);
+ kunmap_local(mem);
} while (n_sectors);
if (likely(dio->op == REQ_OP_WRITE)) {
--
2.30.2
--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [dm-devel] [PATCH 3/4] dm-log-writes: use memcpy_from_bvec in log_writes_map
2021-10-19 13:44 [dm-devel] use bio kmap helpers in device mapper Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 1/4] dm-integrity: use bvec_kmap_local in integrity_metadata Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 2/4] dm-integrity: use bvec_kmap_local in __journal_read_write Christoph Hellwig
@ 2021-10-19 13:44 ` Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 4/4] dm-verity: use bvec_kmap_local in verity_for_bv_block Christoph Hellwig
3 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2021-10-19 13:44 UTC (permalink / raw)
To: Mike Snitzer; +Cc: dm-devel
Use memcpy_from_bvec instead of open coding the logic.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/md/dm-log-writes.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/md/dm-log-writes.c b/drivers/md/dm-log-writes.c
index d93a4db235124..eeaf729287f06 100644
--- a/drivers/md/dm-log-writes.c
+++ b/drivers/md/dm-log-writes.c
@@ -753,7 +753,7 @@ static int log_writes_map(struct dm_target *ti, struct bio *bio)
*/
bio_for_each_segment(bv, bio, iter) {
struct page *page;
- void *src, *dst;
+ void *dst;
page = alloc_page(GFP_NOIO);
if (!page) {
@@ -765,11 +765,9 @@ static int log_writes_map(struct dm_target *ti, struct bio *bio)
return DM_MAPIO_KILL;
}
- src = kmap_atomic(bv.bv_page);
dst = kmap_atomic(page);
- memcpy(dst, src + bv.bv_offset, bv.bv_len);
+ memcpy_from_bvec(dst, &bv);
kunmap_atomic(dst);
- kunmap_atomic(src);
block->vecs[i].bv_page = page;
block->vecs[i].bv_len = bv.bv_len;
block->vec_cnt++;
--
2.30.2
--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [dm-devel] [PATCH 4/4] dm-verity: use bvec_kmap_local in verity_for_bv_block
2021-10-19 13:44 [dm-devel] use bio kmap helpers in device mapper Christoph Hellwig
` (2 preceding siblings ...)
2021-10-19 13:44 ` [dm-devel] [PATCH 3/4] dm-log-writes: use memcpy_from_bvec in log_writes_map Christoph Hellwig
@ 2021-10-19 13:44 ` Christoph Hellwig
3 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2021-10-19 13:44 UTC (permalink / raw)
To: Mike Snitzer; +Cc: dm-devel
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>
---
drivers/md/dm-verity-target.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
index aae48a8b1a048..c1403d3e9d1ea 100644
--- a/drivers/md/dm-verity-target.c
+++ b/drivers/md/dm-verity-target.c
@@ -428,14 +428,14 @@ int verity_for_bv_block(struct dm_verity *v, struct dm_verity_io *io,
unsigned len;
struct bio_vec bv = bio_iter_iovec(bio, *iter);
- page = kmap_atomic(bv.bv_page);
+ page = bvec_kmap_local(&bv);
len = bv.bv_len;
if (likely(len >= todo))
len = todo;
- r = process(v, io, page + bv.bv_offset, len);
- kunmap_atomic(page);
+ r = process(v, io, page, len);
+ kunmap_local(page);
if (r < 0)
return r;
--
2.30.2
--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-10-19 13:52 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-19 13:44 [dm-devel] use bio kmap helpers in device mapper Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 1/4] dm-integrity: use bvec_kmap_local in integrity_metadata Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 2/4] dm-integrity: use bvec_kmap_local in __journal_read_write Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 3/4] dm-log-writes: use memcpy_from_bvec in log_writes_map Christoph Hellwig
2021-10-19 13:44 ` [dm-devel] [PATCH 4/4] dm-verity: use bvec_kmap_local in verity_for_bv_block Christoph Hellwig
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.