* [PATCH 01/15] bvec: add a bvec_virt helper
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-05 6:19 ` Chaitanya Kulkarni
2021-08-06 2:38 ` Martin K. Petersen
2021-08-04 9:56 ` [PATCH 02/15] block: use bvec_virt in bio_integrity_{process,free} Christoph Hellwig
` (15 subsequent siblings)
16 siblings, 2 replies; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Add a helper to get the virtual address for a bvec. This avoids that
all callers need to know about the page + offset representation.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
include/linux/bvec.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/include/linux/bvec.h b/include/linux/bvec.h
index f9fa43b940ff..0e9bdd42dafb 100644
--- a/include/linux/bvec.h
+++ b/include/linux/bvec.h
@@ -229,4 +229,16 @@ static inline void memzero_bvec(struct bio_vec *bvec)
memzero_page(bvec->bv_page, bvec->bv_offset, bvec->bv_len);
}
+/**
+ * bvec_virt - return the virtual address for a bvec
+ * @bvec: bvec to return the virtual address for
+ *
+ * Note: the caller must ensure that @bvec->bv_page is not a highmem page.
+ */
+static inline void *bvec_virt(struct bio_vec *bvec)
+{
+ WARN_ON_ONCE(PageHighMem(bvec->bv_page));
+ return page_address(bvec->bv_page) + bvec->bv_offset;
+}
+
#endif /* __LINUX_BVEC_H */
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 01/15] bvec: add a bvec_virt helper
2021-08-04 9:56 ` [PATCH 01/15] bvec: " Christoph Hellwig
@ 2021-08-05 6:19 ` Chaitanya Kulkarni
2021-08-06 2:38 ` Martin K. Petersen
1 sibling, 0 replies; 30+ messages in thread
From: Chaitanya Kulkarni @ 2021-08-05 6:19 UTC (permalink / raw)
To: Christoph Hellwig, Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
On 8/4/2021 2:56 AM, Christoph Hellwig wrote:
> Add a helper to get the virtual address for a bvec. This avoids that
> all callers need to know about the page + offset representation.
>
> Signed-off-by: Christoph Hellwig<hch@lst.de>
Looks good.
Reviewed-by: Chaitanya Kulkarni <kch@kernel.org>
--
-ck
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 01/15] bvec: add a bvec_virt helper
2021-08-04 9:56 ` [PATCH 01/15] bvec: " Christoph Hellwig
2021-08-05 6:19 ` Chaitanya Kulkarni
@ 2021-08-06 2:38 ` Martin K. Petersen
1 sibling, 0 replies; 30+ messages in thread
From: Martin K. Petersen @ 2021-08-06 2:38 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Jens Axboe, Richard Weinberger, Anton Ivanov, Geoff Levand,
Ilya Dryomov, Paolo Bonzini, Stefan Hajnoczi, Song Liu,
Mike Snitzer, Coly Li, Stefan Haberland, Jan Hoeppner,
Martin K. Petersen, Phillip Lougher, linux-block, dm-devel,
linux-um, ceph-devel, virtualization, linux-raid, linux-bcache,
linux-nvme, linux-s390, linux-scsi
Christoph,
> Add a helper to get the virtual address for a bvec. This avoids that
> all callers need to know about the page + offset representation.
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 02/15] block: use bvec_virt in bio_integrity_{process,free}
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
2021-08-04 9:56 ` [PATCH 01/15] bvec: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-05 6:19 ` Chaitanya Kulkarni
2021-08-06 2:38 ` Martin K. Petersen
2021-08-04 9:56 ` [PATCH 03/15] dm: make EBS depend on !HIGHMEM Christoph Hellwig
` (14 subsequent siblings)
16 siblings, 2 replies; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use the bvec_virt helper to clean up the bio integrity processing a
little bit.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
block/bio-integrity.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/block/bio-integrity.c b/block/bio-integrity.c
index 8f54d49dc500..6b47cddbbca1 100644
--- a/block/bio-integrity.c
+++ b/block/bio-integrity.c
@@ -104,8 +104,7 @@ void bio_integrity_free(struct bio *bio)
struct bio_set *bs = bio->bi_pool;
if (bip->bip_flags & BIP_BLOCK_INTEGRITY)
- kfree(page_address(bip->bip_vec->bv_page) +
- bip->bip_vec->bv_offset);
+ kfree(bvec_virt(bip->bip_vec));
__bio_integrity_free(bs, bip);
bio->bi_integrity = NULL;
@@ -163,13 +162,11 @@ static blk_status_t bio_integrity_process(struct bio *bio,
struct bio_vec bv;
struct bio_integrity_payload *bip = bio_integrity(bio);
blk_status_t ret = BLK_STS_OK;
- void *prot_buf = page_address(bip->bip_vec->bv_page) +
- bip->bip_vec->bv_offset;
iter.disk_name = bio->bi_bdev->bd_disk->disk_name;
iter.interval = 1 << bi->interval_exp;
iter.seed = proc_iter->bi_sector;
- iter.prot_buf = prot_buf;
+ iter.prot_buf = bvec_virt(bip->bip_vec);
__bio_for_each_segment(bv, bio, bviter, *proc_iter) {
void *kaddr = bvec_kmap_local(&bv);
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 02/15] block: use bvec_virt in bio_integrity_{process,free}
2021-08-04 9:56 ` [PATCH 02/15] block: use bvec_virt in bio_integrity_{process,free} Christoph Hellwig
@ 2021-08-05 6:19 ` Chaitanya Kulkarni
2021-08-06 2:38 ` Martin K. Petersen
1 sibling, 0 replies; 30+ messages in thread
From: Chaitanya Kulkarni @ 2021-08-05 6:19 UTC (permalink / raw)
To: Christoph Hellwig, Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
On 8/4/2021 2:56 AM, Christoph Hellwig wrote:
> Use the bvec_virt helper to clean up the bio integrity processing a
> little bit.
>
> Signed-off-by: Christoph Hellwig<hch@lst.de>
Looks good.
Reviewed-by: Chaitanya Kulkarni <kch@kernel.org>
--
-ck
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 02/15] block: use bvec_virt in bio_integrity_{process,free}
2021-08-04 9:56 ` [PATCH 02/15] block: use bvec_virt in bio_integrity_{process,free} Christoph Hellwig
2021-08-05 6:19 ` Chaitanya Kulkarni
@ 2021-08-06 2:38 ` Martin K. Petersen
1 sibling, 0 replies; 30+ messages in thread
From: Martin K. Petersen @ 2021-08-06 2:38 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Jens Axboe, Richard Weinberger, Anton Ivanov, Geoff Levand,
Ilya Dryomov, Paolo Bonzini, Stefan Hajnoczi, Song Liu,
Mike Snitzer, Coly Li, Stefan Haberland, Jan Hoeppner,
Martin K. Petersen, Phillip Lougher, linux-block, dm-devel,
linux-um, ceph-devel, virtualization, linux-raid, linux-bcache,
linux-nvme, linux-s390, linux-scsi
Christoph,
> Use the bvec_virt helper to clean up the bio integrity processing a
> little bit.
Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 03/15] dm: make EBS depend on !HIGHMEM
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
2021-08-04 9:56 ` [PATCH 01/15] bvec: " Christoph Hellwig
2021-08-04 9:56 ` [PATCH 02/15] block: use bvec_virt in bio_integrity_{process,free} Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-04 9:56 ` [PATCH 04/15] dm-ebs: use bvec_virt Christoph Hellwig
` (13 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
__ebs_rw_bvec use page_address on the submitted bios data, and thus
can't deal with highmem. Disable the target on highmem configs.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/md/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
index 0602e82a9516..ecc559c60d40 100644
--- a/drivers/md/Kconfig
+++ b/drivers/md/Kconfig
@@ -340,7 +340,7 @@ config DM_WRITECACHE
config DM_EBS
tristate "Emulated block size target (EXPERIMENTAL)"
- depends on BLK_DEV_DM
+ depends on BLK_DEV_DM && !HIGHMEM
select DM_BUFIO
help
dm-ebs emulates smaller logical block size on backing devices
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 04/15] dm-ebs: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (2 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 03/15] dm: make EBS depend on !HIGHMEM Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-04 9:56 ` [PATCH 05/15] dm-integrity: " Christoph Hellwig
` (12 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/md/dm-ebs-target.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/md/dm-ebs-target.c b/drivers/md/dm-ebs-target.c
index 71475a2410be..0c509dae0ff8 100644
--- a/drivers/md/dm-ebs-target.c
+++ b/drivers/md/dm-ebs-target.c
@@ -74,7 +74,7 @@ static int __ebs_rw_bvec(struct ebs_c *ec, int rw, struct bio_vec *bv, struct bv
if (unlikely(!bv->bv_page || !bv_len))
return -EIO;
- pa = page_address(bv->bv_page) + bv->bv_offset;
+ pa = bvec_virt(bv);
/* Handle overlapping page <-> blocks */
while (bv_len) {
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 05/15] dm-integrity: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (3 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 04/15] dm-ebs: use bvec_virt Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-04 9:56 ` [PATCH 06/15] squashfs: " Christoph Hellwig
` (11 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
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 20f2510db1f6..a9ea361769a7 100644
--- a/drivers/md/dm-integrity.c
+++ b/drivers/md/dm-integrity.c
@@ -1819,7 +1819,7 @@ static void integrity_metadata(struct work_struct *w)
unsigned this_len;
BUG_ON(PageHighMem(biv.bv_page));
- tag = lowmem_page_address(biv.bv_page) + biv.bv_offset;
+ tag = bvec_virt(&biv);
this_len = min(biv.bv_len, data_to_process);
r = dm_integrity_rw_tag(ic, tag, &dio->metadata_block, &dio->metadata_offset,
this_len, dio->op == REQ_OP_READ ? TAG_READ : TAG_WRITE);
@@ -2006,7 +2006,7 @@ static bool __journal_read_write(struct dm_integrity_io *dio, struct bio *bio,
unsigned tag_now = min(biv.bv_len, tag_todo);
char *tag_addr;
BUG_ON(PageHighMem(biv.bv_page));
- tag_addr = lowmem_page_address(biv.bv_page) + biv.bv_offset;
+ tag_addr = bvec_virt(&biv);
if (likely(dio->op == REQ_OP_WRITE))
memcpy(tag_ptr, tag_addr, tag_now);
else
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 06/15] squashfs: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (4 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 05/15] dm-integrity: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-04 9:56 ` [PATCH 07/15] rbd: " Christoph Hellwig
` (10 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
fs/squashfs/block.c | 7 +++----
fs/squashfs/lz4_wrapper.c | 2 +-
fs/squashfs/lzo_wrapper.c | 2 +-
fs/squashfs/xz_wrapper.c | 2 +-
fs/squashfs/zlib_wrapper.c | 2 +-
fs/squashfs/zstd_wrapper.c | 2 +-
6 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/fs/squashfs/block.c b/fs/squashfs/block.c
index 855f0e87066d..2db8bcf7ff85 100644
--- a/fs/squashfs/block.c
+++ b/fs/squashfs/block.c
@@ -49,8 +49,7 @@ static int copy_bio_to_actor(struct bio *bio,
bytes_to_copy = min_t(int, bytes_to_copy,
req_length - copied_bytes);
- memcpy(actor_addr + actor_offset,
- page_address(bvec->bv_page) + bvec->bv_offset + offset,
+ memcpy(actor_addr + actor_offset, bvec_virt(bvec) + offset,
bytes_to_copy);
actor_offset += bytes_to_copy;
@@ -177,7 +176,7 @@ int squashfs_read_data(struct super_block *sb, u64 index, int length,
goto out_free_bio;
}
/* Extract the length of the metadata block */
- data = page_address(bvec->bv_page) + bvec->bv_offset;
+ data = bvec_virt(bvec);
length = data[offset];
if (offset < bvec->bv_len - 1) {
length |= data[offset + 1] << 8;
@@ -186,7 +185,7 @@ int squashfs_read_data(struct super_block *sb, u64 index, int length,
res = -EIO;
goto out_free_bio;
}
- data = page_address(bvec->bv_page) + bvec->bv_offset;
+ data = bvec_virt(bvec);
length |= data[0] << 8;
}
bio_free_pages(bio);
diff --git a/fs/squashfs/lz4_wrapper.c b/fs/squashfs/lz4_wrapper.c
index 233d5582fbee..b685b6238316 100644
--- a/fs/squashfs/lz4_wrapper.c
+++ b/fs/squashfs/lz4_wrapper.c
@@ -101,7 +101,7 @@ static int lz4_uncompress(struct squashfs_sb_info *msblk, void *strm,
while (bio_next_segment(bio, &iter_all)) {
int avail = min(bytes, ((int)bvec->bv_len) - offset);
- data = page_address(bvec->bv_page) + bvec->bv_offset;
+ data = bvec_virt(bvec);
memcpy(buff, data + offset, avail);
buff += avail;
bytes -= avail;
diff --git a/fs/squashfs/lzo_wrapper.c b/fs/squashfs/lzo_wrapper.c
index 97bb7d92ddcd..cb510a631968 100644
--- a/fs/squashfs/lzo_wrapper.c
+++ b/fs/squashfs/lzo_wrapper.c
@@ -76,7 +76,7 @@ static int lzo_uncompress(struct squashfs_sb_info *msblk, void *strm,
while (bio_next_segment(bio, &iter_all)) {
int avail = min(bytes, ((int)bvec->bv_len) - offset);
- data = page_address(bvec->bv_page) + bvec->bv_offset;
+ data = bvec_virt(bvec);
memcpy(buff, data + offset, avail);
buff += avail;
bytes -= avail;
diff --git a/fs/squashfs/xz_wrapper.c b/fs/squashfs/xz_wrapper.c
index e80419aed862..68f6d09bb3a2 100644
--- a/fs/squashfs/xz_wrapper.c
+++ b/fs/squashfs/xz_wrapper.c
@@ -146,7 +146,7 @@ static int squashfs_xz_uncompress(struct squashfs_sb_info *msblk, void *strm,
}
avail = min(length, ((int)bvec->bv_len) - offset);
- data = page_address(bvec->bv_page) + bvec->bv_offset;
+ data = bvec_virt(bvec);
length -= avail;
stream->buf.in = data + offset;
stream->buf.in_size = avail;
diff --git a/fs/squashfs/zlib_wrapper.c b/fs/squashfs/zlib_wrapper.c
index bcb881ec47f2..a20e9042146b 100644
--- a/fs/squashfs/zlib_wrapper.c
+++ b/fs/squashfs/zlib_wrapper.c
@@ -76,7 +76,7 @@ static int zlib_uncompress(struct squashfs_sb_info *msblk, void *strm,
}
avail = min(length, ((int)bvec->bv_len) - offset);
- data = page_address(bvec->bv_page) + bvec->bv_offset;
+ data = bvec_virt(bvec);
length -= avail;
stream->next_in = data + offset;
stream->avail_in = avail;
diff --git a/fs/squashfs/zstd_wrapper.c b/fs/squashfs/zstd_wrapper.c
index b7cb1faa652d..0015cf8b5582 100644
--- a/fs/squashfs/zstd_wrapper.c
+++ b/fs/squashfs/zstd_wrapper.c
@@ -94,7 +94,7 @@ static int zstd_uncompress(struct squashfs_sb_info *msblk, void *strm,
}
avail = min(length, ((int)bvec->bv_len) - offset);
- data = page_address(bvec->bv_page) + bvec->bv_offset;
+ data = bvec_virt(bvec);
length -= avail;
in_buf.src = data + offset;
in_buf.size = avail;
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 07/15] rbd: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (5 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 06/15] squashfs: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-05 12:01 ` Jeff Layton
2021-08-04 9:56 ` [PATCH 08/15] virtio_blk: " Christoph Hellwig
` (9 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/block/rbd.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 6d596c2c2cd6..e65c9d706f6f 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -2986,8 +2986,7 @@ static bool is_zero_bvecs(struct bio_vec *bvecs, u32 bytes)
};
ceph_bvec_iter_advance_step(&it, bytes, ({
- if (memchr_inv(page_address(bv.bv_page) + bv.bv_offset, 0,
- bv.bv_len))
+ if (memchr_inv(bvec_virt(&bv), 0, bv.bv_len))
return false;
}));
return true;
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 07/15] rbd: use bvec_virt
2021-08-04 9:56 ` [PATCH 07/15] rbd: " Christoph Hellwig
@ 2021-08-05 12:01 ` Jeff Layton
0 siblings, 0 replies; 30+ messages in thread
From: Jeff Layton @ 2021-08-05 12:01 UTC (permalink / raw)
To: Christoph Hellwig, Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
On Wed, 2021-08-04 at 11:56 +0200, Christoph Hellwig wrote:
> Use bvec_virt instead of open coding it.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> drivers/block/rbd.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index 6d596c2c2cd6..e65c9d706f6f 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -2986,8 +2986,7 @@ static bool is_zero_bvecs(struct bio_vec *bvecs, u32 bytes)
> };
>
> ceph_bvec_iter_advance_step(&it, bytes, ({
> - if (memchr_inv(page_address(bv.bv_page) + bv.bv_offset, 0,
> - bv.bv_len))
> + if (memchr_inv(bvec_virt(&bv), 0, bv.bv_len))
> return false;
> }));
> return true;
LGTM
Reviewed-by: Jeff Layton <jlayton@kernel.org>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 08/15] virtio_blk: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (6 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 07/15] rbd: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-05 14:17 ` Stefan Hajnoczi
2021-08-04 9:56 ` [PATCH 09/15] bcache: " Christoph Hellwig
` (8 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/block/virtio_blk.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 4b49df2dfd23..767b4f72a54d 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -166,11 +166,8 @@ static inline void virtblk_request_done(struct request *req)
{
struct virtblk_req *vbr = blk_mq_rq_to_pdu(req);
- if (req->rq_flags & RQF_SPECIAL_PAYLOAD) {
- kfree(page_address(req->special_vec.bv_page) +
- req->special_vec.bv_offset);
- }
-
+ if (req->rq_flags & RQF_SPECIAL_PAYLOAD)
+ kfree(bvec_virt(&req->special_vec));
blk_mq_end_request(req, virtblk_result(vbr));
}
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 08/15] virtio_blk: use bvec_virt
2021-08-04 9:56 ` [PATCH 08/15] virtio_blk: " Christoph Hellwig
@ 2021-08-05 14:17 ` Stefan Hajnoczi
0 siblings, 0 replies; 30+ messages in thread
From: Stefan Hajnoczi @ 2021-08-05 14:17 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Jens Axboe, Richard Weinberger, Anton Ivanov, Geoff Levand,
Ilya Dryomov, Paolo Bonzini, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
[-- Attachment #1: Type: text/plain, Size: 321 bytes --]
On Wed, Aug 04, 2021 at 11:56:27AM +0200, Christoph Hellwig wrote:
> Use bvec_virt instead of open coding it.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> drivers/block/virtio_blk.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 09/15] bcache: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (7 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 08/15] virtio_blk: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-04 17:05 ` Coly Li
2021-08-04 9:56 ` [PATCH 10/15] sd: " Christoph Hellwig
` (7 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it. Note that the existing code is
fine despite ignoring bv_offset as the bio is known to contain exactly
one page from the page allocator per bio_vec.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/md/bcache/btree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
index 183a58c89377..0595559de174 100644
--- a/drivers/md/bcache/btree.c
+++ b/drivers/md/bcache/btree.c
@@ -378,7 +378,7 @@ static void do_btree_node_write(struct btree *b)
struct bvec_iter_all iter_all;
bio_for_each_segment_all(bv, b->bio, iter_all) {
- memcpy(page_address(bv->bv_page), addr, PAGE_SIZE);
+ memcpy(bvec_virt(bv), addr, PAGE_SIZE);
addr += PAGE_SIZE;
}
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 09/15] bcache: use bvec_virt
2021-08-04 9:56 ` [PATCH 09/15] bcache: " Christoph Hellwig
@ 2021-08-04 17:05 ` Coly Li
0 siblings, 0 replies; 30+ messages in thread
From: Coly Li @ 2021-08-04 17:05 UTC (permalink / raw)
To: Christoph Hellwig, Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
On 8/4/21 5:56 PM, Christoph Hellwig wrote:
> Use bvec_virt instead of open coding it. Note that the existing code is
> fine despite ignoring bv_offset as the bio is known to contain exactly
> one page from the page allocator per bio_vec.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Looks good to me.
Reviewed-by: Coly Li <colyli@suse.de>
Thanks.
Coly Li
> ---
> drivers/md/bcache/btree.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
> index 183a58c89377..0595559de174 100644
> --- a/drivers/md/bcache/btree.c
> +++ b/drivers/md/bcache/btree.c
> @@ -378,7 +378,7 @@ static void do_btree_node_write(struct btree *b)
> struct bvec_iter_all iter_all;
>
> bio_for_each_segment_all(bv, b->bio, iter_all) {
> - memcpy(page_address(bv->bv_page), addr, PAGE_SIZE);
> + memcpy(bvec_virt(bv), addr, PAGE_SIZE);
> addr += PAGE_SIZE;
> }
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 10/15] sd: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (8 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 09/15] bcache: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-05 16:31 ` [dm-devel] " Bart Van Assche
2021-08-06 2:43 ` Martin K. Petersen
2021-08-04 9:56 ` [PATCH 11/15] ubd: " Christoph Hellwig
` (6 subsequent siblings)
16 siblings, 2 replies; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/scsi/sd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index b8d55af763f9..5b5b8266e142 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -886,7 +886,7 @@ static blk_status_t sd_setup_unmap_cmnd(struct scsi_cmnd *cmd)
cmd->cmnd[0] = UNMAP;
cmd->cmnd[8] = 24;
- buf = page_address(rq->special_vec.bv_page);
+ buf = bvec_virt(&rq->special_vec);
put_unaligned_be16(6 + 16, &buf[0]);
put_unaligned_be16(16, &buf[2]);
put_unaligned_be64(lba, &buf[8]);
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [dm-devel] [PATCH 10/15] sd: use bvec_virt
2021-08-04 9:56 ` [PATCH 10/15] sd: " Christoph Hellwig
@ 2021-08-05 16:31 ` Bart Van Assche
2021-08-06 2:43 ` Martin K. Petersen
1 sibling, 0 replies; 30+ messages in thread
From: Bart Van Assche @ 2021-08-05 16:31 UTC (permalink / raw)
To: Christoph Hellwig, Jens Axboe
Cc: Jan Hoeppner, Mike Snitzer, linux-nvme, virtualization, Song Liu,
dm-devel, Anton Ivanov, linux-s390, linux-scsi,
Richard Weinberger, Ilya Dryomov, linux-um, Coly Li, linux-raid,
linux-bcache, Stefan Haberland, Stefan Hajnoczi, Paolo Bonzini,
ceph-devel, linux-block, Martin K. Petersen, Geoff Levand,
Phillip Lougher
On 8/4/21 2:56 AM, Christoph Hellwig wrote:
> Use bvec_virt instead of open coding it.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> drivers/scsi/sd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
> index b8d55af763f9..5b5b8266e142 100644
> --- a/drivers/scsi/sd.c
> +++ b/drivers/scsi/sd.c
> @@ -886,7 +886,7 @@ static blk_status_t sd_setup_unmap_cmnd(struct scsi_cmnd *cmd)
> cmd->cmnd[0] = UNMAP;
> cmd->cmnd[8] = 24;
>
> - buf = page_address(rq->special_vec.bv_page);
> + buf = bvec_virt(&rq->special_vec);
> put_unaligned_be16(6 + 16, &buf[0]);
> put_unaligned_be16(16, &buf[2]);
> put_unaligned_be64(lba, &buf[8]);
The patch description is not correct. The above patch involves a
functional change while the patch description suggests that no
functionality has been changed.
Although the above patch looks fine to me, why has page_address() been
changed into bvec_virt() in the sd driver? My understanding is that the
sd driver always sets bv_offset to zero.
Thanks,
Bart.
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 10/15] sd: use bvec_virt
2021-08-04 9:56 ` [PATCH 10/15] sd: " Christoph Hellwig
2021-08-05 16:31 ` [dm-devel] " Bart Van Assche
@ 2021-08-06 2:43 ` Martin K. Petersen
1 sibling, 0 replies; 30+ messages in thread
From: Martin K. Petersen @ 2021-08-06 2:43 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Jens Axboe, Richard Weinberger, Anton Ivanov, Geoff Levand,
Ilya Dryomov, Paolo Bonzini, Stefan Hajnoczi, Song Liu,
Mike Snitzer, Coly Li, Stefan Haberland, Jan Hoeppner,
Martin K. Petersen, Phillip Lougher, linux-block, dm-devel,
linux-um, ceph-devel, virtualization, linux-raid, linux-bcache,
linux-nvme, linux-s390, linux-scsi
Christoph,
> Use bvec_virt instead of open coding it.
bv_offset is set to 0 right above but I'm OK with bvec_virt() for the
sake of consistency.
Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 11/15] ubd: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (9 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 10/15] sd: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-04 10:10 ` Anton Ivanov
2021-08-04 9:56 ` [PATCH 12/15] ps3vram: " Christoph Hellwig
` (5 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
arch/um/drivers/ubd_kern.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index e497185dd393..cd9dc0556e91 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -1268,8 +1268,7 @@ static void ubd_map_req(struct ubd *dev, struct io_thread_req *io_req,
rq_for_each_segment(bvec, req, iter) {
BUG_ON(i >= io_req->desc_cnt);
- io_req->io_desc[i].buffer =
- page_address(bvec.bv_page) + bvec.bv_offset;
+ io_req->io_desc[i].buffer = bvec_virt(&bvec);
io_req->io_desc[i].length = bvec.bv_len;
i++;
}
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 11/15] ubd: use bvec_virt
2021-08-04 9:56 ` [PATCH 11/15] ubd: " Christoph Hellwig
@ 2021-08-04 10:10 ` Anton Ivanov
0 siblings, 0 replies; 30+ messages in thread
From: Anton Ivanov @ 2021-08-04 10:10 UTC (permalink / raw)
To: Christoph Hellwig, Jens Axboe
Cc: Richard Weinberger, Geoff Levand, Ilya Dryomov, Paolo Bonzini,
Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
On 04/08/2021 10:56, Christoph Hellwig wrote:
> Use bvec_virt instead of open coding it.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> arch/um/drivers/ubd_kern.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
> index e497185dd393..cd9dc0556e91 100644
> --- a/arch/um/drivers/ubd_kern.c
> +++ b/arch/um/drivers/ubd_kern.c
> @@ -1268,8 +1268,7 @@ static void ubd_map_req(struct ubd *dev, struct io_thread_req *io_req,
> rq_for_each_segment(bvec, req, iter) {
> BUG_ON(i >= io_req->desc_cnt);
>
> - io_req->io_desc[i].buffer =
> - page_address(bvec.bv_page) + bvec.bv_offset;
> + io_req->io_desc[i].buffer = bvec_virt(&bvec);
> io_req->io_desc[i].length = bvec.bv_len;
> i++;
> }
>
Acked-By: Anton Ivanov <anton.ivanov@cambridgegreys.com>
--
Anton R. Ivanov
Cambridgegreys Limited. Registered in England. Company Number 10273661
https://www.cambridgegreys.com/
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 12/15] ps3vram: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (10 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 11/15] ubd: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-04 9:56 ` [PATCH 13/15] dasd: " Christoph Hellwig
` (4 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/block/ps3vram.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/block/ps3vram.c b/drivers/block/ps3vram.c
index 7fbf469651c4..c7b19e128b03 100644
--- a/drivers/block/ps3vram.c
+++ b/drivers/block/ps3vram.c
@@ -541,7 +541,7 @@ static struct bio *ps3vram_do_bio(struct ps3_system_bus_device *dev,
bio_for_each_segment(bvec, bio, iter) {
/* PS3 is ppc64, so we don't handle highmem */
- char *ptr = page_address(bvec.bv_page) + bvec.bv_offset;
+ char *ptr = bvec_virt(&bvec);
size_t len = bvec.bv_len, retlen;
dev_dbg(&dev->core, " %s %zu bytes at offset %llu\n", op,
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 13/15] dasd: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (11 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 12/15] ps3vram: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-04 20:20 ` Stefan Haberland
2021-08-04 9:56 ` [PATCH 14/15] dcssblk: " Christoph Hellwig
` (3 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/s390/block/dasd_diag.c | 2 +-
drivers/s390/block/dasd_eckd.c | 14 +++++++-------
drivers/s390/block/dasd_fba.c | 4 ++--
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c
index 6bb775236c16..db5987281010 100644
--- a/drivers/s390/block/dasd_diag.c
+++ b/drivers/s390/block/dasd_diag.c
@@ -552,7 +552,7 @@ static struct dasd_ccw_req *dasd_diag_build_cp(struct dasd_device *memdev,
dbio = dreq->bio;
recid = first_rec;
rq_for_each_segment(bv, req, iter) {
- dst = page_address(bv.bv_page) + bv.bv_offset;
+ dst = bvec_virt(&bv);
for (off = 0; off < bv.bv_len; off += blksize) {
memset(dbio, 0, sizeof (struct dasd_diag_bio));
dbio->type = rw_cmd;
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index 0de1a463c509..8610ea414322 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -3267,7 +3267,7 @@ static int dasd_eckd_ese_read(struct dasd_ccw_req *cqr, struct irb *irb)
end_blk = (curr_trk + 1) * recs_per_trk;
rq_for_each_segment(bv, req, iter) {
- dst = page_address(bv.bv_page) + bv.bv_offset;
+ dst = bvec_virt(&bv);
for (off = 0; off < bv.bv_len; off += blksize) {
if (first_blk + blk_count >= end_blk) {
cqr->proc_bytes = blk_count * blksize;
@@ -3999,7 +3999,7 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_cmd_single(
last_rec - recid + 1, cmd, basedev, blksize);
}
rq_for_each_segment(bv, req, iter) {
- dst = page_address(bv.bv_page) + bv.bv_offset;
+ dst = bvec_virt(&bv);
if (dasd_page_cache) {
char *copy = kmem_cache_alloc(dasd_page_cache,
GFP_DMA | __GFP_NOWARN);
@@ -4166,7 +4166,7 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_cmd_track(
idaw_dst = NULL;
idaw_len = 0;
rq_for_each_segment(bv, req, iter) {
- dst = page_address(bv.bv_page) + bv.bv_offset;
+ dst = bvec_virt(&bv);
seg_len = bv.bv_len;
while (seg_len) {
if (new_track) {
@@ -4509,7 +4509,7 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_tpm_track(
new_track = 1;
recid = first_rec;
rq_for_each_segment(bv, req, iter) {
- dst = page_address(bv.bv_page) + bv.bv_offset;
+ dst = bvec_virt(&bv);
seg_len = bv.bv_len;
while (seg_len) {
if (new_track) {
@@ -4542,7 +4542,7 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_tpm_track(
}
} else {
rq_for_each_segment(bv, req, iter) {
- dst = page_address(bv.bv_page) + bv.bv_offset;
+ dst = bvec_virt(&bv);
last_tidaw = itcw_add_tidaw(itcw, 0x00,
dst, bv.bv_len);
if (IS_ERR(last_tidaw)) {
@@ -4778,7 +4778,7 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_raw(struct dasd_device *startdev,
idaws = idal_create_words(idaws, rawpadpage, PAGE_SIZE);
}
rq_for_each_segment(bv, req, iter) {
- dst = page_address(bv.bv_page) + bv.bv_offset;
+ dst = bvec_virt(&bv);
seg_len = bv.bv_len;
if (cmd == DASD_ECKD_CCW_READ_TRACK)
memset(dst, 0, seg_len);
@@ -4839,7 +4839,7 @@ dasd_eckd_free_cp(struct dasd_ccw_req *cqr, struct request *req)
if (private->uses_cdl == 0 || recid > 2*blk_per_trk)
ccw++;
rq_for_each_segment(bv, req, iter) {
- dst = page_address(bv.bv_page) + bv.bv_offset;
+ dst = bvec_virt(&bv);
for (off = 0; off < bv.bv_len; off += blksize) {
/* Skip locate record. */
if (private->uses_cdl && recid <= 2*blk_per_trk)
diff --git a/drivers/s390/block/dasd_fba.c b/drivers/s390/block/dasd_fba.c
index 3ad319aee51e..e084f4dedddd 100644
--- a/drivers/s390/block/dasd_fba.c
+++ b/drivers/s390/block/dasd_fba.c
@@ -501,7 +501,7 @@ static struct dasd_ccw_req *dasd_fba_build_cp_regular(
}
recid = first_rec;
rq_for_each_segment(bv, req, iter) {
- dst = page_address(bv.bv_page) + bv.bv_offset;
+ dst = bvec_virt(&bv);
if (dasd_page_cache) {
char *copy = kmem_cache_alloc(dasd_page_cache,
GFP_DMA | __GFP_NOWARN);
@@ -583,7 +583,7 @@ dasd_fba_free_cp(struct dasd_ccw_req *cqr, struct request *req)
if (private->rdc_data.mode.bits.data_chain != 0)
ccw++;
rq_for_each_segment(bv, req, iter) {
- dst = page_address(bv.bv_page) + bv.bv_offset;
+ dst = bvec_virt(&bv);
for (off = 0; off < bv.bv_len; off += blksize) {
/* Skip locate record. */
if (private->rdc_data.mode.bits.data_chain == 0)
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 13/15] dasd: use bvec_virt
2021-08-04 9:56 ` [PATCH 13/15] dasd: " Christoph Hellwig
@ 2021-08-04 20:20 ` Stefan Haberland
0 siblings, 0 replies; 30+ messages in thread
From: Stefan Haberland @ 2021-08-04 20:20 UTC (permalink / raw)
To: Christoph Hellwig, Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Jan Hoeppner, Martin K. Petersen, Phillip Lougher, linux-block,
dm-devel, linux-um, ceph-devel, virtualization, linux-raid,
linux-bcache, linux-nvme, linux-s390, linux-scsi
Am 04.08.21 um 11:56 schrieb Christoph Hellwig:
> Use bvec_virt instead of open coding it.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Looks good.
Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 14/15] dcssblk: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (12 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 13/15] dasd: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-04 9:56 ` [PATCH 15/15] nvme: " Christoph Hellwig
` (2 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/s390/block/dcssblk.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/s390/block/dcssblk.c b/drivers/s390/block/dcssblk.c
index 29180bdf0977..5be3d1c39a78 100644
--- a/drivers/s390/block/dcssblk.c
+++ b/drivers/s390/block/dcssblk.c
@@ -892,8 +892,7 @@ dcssblk_submit_bio(struct bio *bio)
index = (bio->bi_iter.bi_sector >> 3);
bio_for_each_segment(bvec, bio, iter) {
- page_addr = (unsigned long)
- page_address(bvec.bv_page) + bvec.bv_offset;
+ page_addr = (unsigned long)bvec_virt(&bvec);
source_addr = dev_info->start + (index<<12) + bytes_done;
if (unlikely((page_addr & 4095) != 0) || (bvec.bv_len & 4095) != 0)
// More paranoia.
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 15/15] nvme: use bvec_virt
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (13 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 14/15] dcssblk: " Christoph Hellwig
@ 2021-08-04 9:56 ` Christoph Hellwig
2021-08-04 14:33 ` Keith Busch
2021-08-16 12:38 ` add a bvec_virt helper Christoph Hellwig
2021-08-16 16:51 ` Jens Axboe
16 siblings, 1 reply; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-04 9:56 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
Use bvec_virt instead of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/nvme/host/core.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index dfd9dec0c1f6..02ce94b2906b 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -968,12 +968,11 @@ void nvme_cleanup_cmd(struct request *req)
{
if (req->rq_flags & RQF_SPECIAL_PAYLOAD) {
struct nvme_ctrl *ctrl = nvme_req(req)->ctrl;
- struct page *page = req->special_vec.bv_page;
- if (page == ctrl->discard_page)
+ if (req->special_vec.bv_page == ctrl->discard_page)
clear_bit_unlock(0, &ctrl->discard_page_busy);
else
- kfree(page_address(page) + req->special_vec.bv_offset);
+ kfree(bvec_virt(&req->special_vec));
}
}
EXPORT_SYMBOL_GPL(nvme_cleanup_cmd);
--
2.30.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] nvme: use bvec_virt
2021-08-04 9:56 ` [PATCH 15/15] nvme: " Christoph Hellwig
@ 2021-08-04 14:33 ` Keith Busch
0 siblings, 0 replies; 30+ messages in thread
From: Keith Busch @ 2021-08-04 14:33 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Jens Axboe, Richard Weinberger, Anton Ivanov, Geoff Levand,
Ilya Dryomov, Paolo Bonzini, Stefan Hajnoczi, Song Liu,
Mike Snitzer, Coly Li, Stefan Haberland, Jan Hoeppner,
Martin K. Petersen, Phillip Lougher, linux-block, dm-devel,
linux-um, ceph-devel, virtualization, linux-raid, linux-bcache,
linux-nvme, linux-s390, linux-scsi
On Wed, Aug 04, 2021 at 11:56:34AM +0200, Christoph Hellwig wrote:
> Use bvec_virt instead of open coding it.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> drivers/nvme/host/core.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index dfd9dec0c1f6..02ce94b2906b 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -968,12 +968,11 @@ void nvme_cleanup_cmd(struct request *req)
> {
> if (req->rq_flags & RQF_SPECIAL_PAYLOAD) {
> struct nvme_ctrl *ctrl = nvme_req(req)->ctrl;
> - struct page *page = req->special_vec.bv_page;
>
> - if (page == ctrl->discard_page)
> + if (req->special_vec.bv_page == ctrl->discard_page)
> clear_bit_unlock(0, &ctrl->discard_page_busy);
> else
> - kfree(page_address(page) + req->special_vec.bv_offset);
> + kfree(bvec_virt(&req->special_vec));
> }
> }
> EXPORT_SYMBOL_GPL(nvme_cleanup_cmd);
Looks good.
Reviewed-by: Keith Busch <kbusch@kernel.org>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: add a bvec_virt helper
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (14 preceding siblings ...)
2021-08-04 9:56 ` [PATCH 15/15] nvme: " Christoph Hellwig
@ 2021-08-16 12:38 ` Christoph Hellwig
2021-08-16 16:51 ` Jens Axboe
16 siblings, 0 replies; 30+ messages in thread
From: Christoph Hellwig @ 2021-08-16 12:38 UTC (permalink / raw)
To: Jens Axboe
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
ping.
On Wed, Aug 04, 2021 at 11:56:19AM +0200, Christoph Hellwig wrote:
> Hi Jens,
>
> this series adds a bvec_virt helper to return the virtual address of the
> data in bvec to replace the open coded calculation, and as a reminder
> that generall bio/bvec data can be in high memory unless it is caller
> controller or in an architecture specific driver where highmem is
> impossible.
---end quoted text---
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: add a bvec_virt helper
2021-08-04 9:56 add a bvec_virt helper Christoph Hellwig
` (15 preceding siblings ...)
2021-08-16 12:38 ` add a bvec_virt helper Christoph Hellwig
@ 2021-08-16 16:51 ` Jens Axboe
16 siblings, 0 replies; 30+ messages in thread
From: Jens Axboe @ 2021-08-16 16:51 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Richard Weinberger, Anton Ivanov, Geoff Levand, Ilya Dryomov,
Paolo Bonzini, Stefan Hajnoczi, Song Liu, Mike Snitzer, Coly Li,
Stefan Haberland, Jan Hoeppner, Martin K. Petersen,
Phillip Lougher, linux-block, dm-devel, linux-um, ceph-devel,
virtualization, linux-raid, linux-bcache, linux-nvme, linux-s390,
linux-scsi
On 8/4/21 3:56 AM, Christoph Hellwig wrote:
> Hi Jens,
>
> this series adds a bvec_virt helper to return the virtual address of the
> data in bvec to replace the open coded calculation, and as a reminder
> that generall bio/bvec data can be in high memory unless it is caller
> controller or in an architecture specific driver where highmem is
> impossible.
Applied, thanks.
--
Jens Axboe
^ permalink raw reply [flat|nested] 30+ messages in thread