From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org,
"Md. Haris Iqbal" <haris.iqbal@ionos.com>,
Jack Wang <jinpu.wang@ionos.com>, Coly Li <colyli@kernel.org>,
Kent Overstreet <kent.overstreet@linux.dev>,
Mike Snitzer <snitzer@kernel.org>,
Mikulas Patocka <mpatocka@redhat.com>, Chris Mason <clm@fb.com>,
Josef Bacik <josef@toxicpanda.com>,
David Sterba <dsterba@suse.com>,
Andreas Gruenbacher <agruenba@redhat.com>,
Carlos Maiolino <cem@kernel.org>,
Damien Le Moal <dlemoal@kernel.org>,
Naohiro Aota <naohiro.aota@wdc.com>,
Johannes Thumshirn <jth@kernel.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Pavel Machek <pavel@kernel.org>,
slava@dubeyko.com, glaubitz@physik.fu-berlin.de,
frank.li@vivo.com, linux-bcache@vger.kernel.org,
dm-devel@lists.linux.dev, linux-btrfs@vger.kernel.org,
gfs2@lists.linux.dev, linux-fsdevel@vger.kernel.org,
linux-xfs@vger.kernel.org, linux-pm@vger.kernel.org,
Hannes Reinecke <hare@suse.de>,
Johannes Thumshirn <johannes.thumshirn@wdc.com>
Subject: [PATCH 01/19] block: add a bio_add_virt_nofail helper
Date: Wed, 7 May 2025 14:04:25 +0200 [thread overview]
Message-ID: <20250507120451.4000627-2-hch@lst.de> (raw)
In-Reply-To: <20250507120451.4000627-1-hch@lst.de>
Add a helper to add a directly mapped kernel virtual address to a
bio so that callers don't have to convert to pages or folios.
For now only the _nofail variant is provided as that is what all the
obvious callers want.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
---
block/bio.c | 16 ++++++++++++++++
include/linux/bio.h | 2 ++
2 files changed, 18 insertions(+)
diff --git a/block/bio.c b/block/bio.c
index 1e42aefc7377..bd3d048d0a72 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -991,6 +991,22 @@ void __bio_add_page(struct bio *bio, struct page *page,
}
EXPORT_SYMBOL_GPL(__bio_add_page);
+/**
+ * bio_add_virt_nofail - add data in the direct kernel mapping to a bio
+ * @bio: destination bio
+ * @vaddr: data to add
+ * @len: length of the data to add, may cross pages
+ *
+ * Add the data at @vaddr to @bio. The caller must have ensure a segment
+ * is available for the added data. No merging into an existing segment
+ * will be performed.
+ */
+void bio_add_virt_nofail(struct bio *bio, void *vaddr, unsigned len)
+{
+ __bio_add_page(bio, virt_to_page(vaddr), len, offset_in_page(vaddr));
+}
+EXPORT_SYMBOL_GPL(bio_add_virt_nofail);
+
/**
* bio_add_page - attempt to add page(s) to bio
* @bio: destination bio
diff --git a/include/linux/bio.h b/include/linux/bio.h
index cafc7c215de8..acca7464080c 100644
--- a/include/linux/bio.h
+++ b/include/linux/bio.h
@@ -417,6 +417,8 @@ void __bio_add_page(struct bio *bio, struct page *page,
unsigned int len, unsigned int off);
void bio_add_folio_nofail(struct bio *bio, struct folio *folio, size_t len,
size_t off);
+void bio_add_virt_nofail(struct bio *bio, void *vaddr, unsigned len);
+
int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter);
void bio_iov_bvec_set(struct bio *bio, const struct iov_iter *iter);
void __bio_release_pages(struct bio *bio, bool mark_dirty);
--
2.47.2
next prev parent reply other threads:[~2025-05-07 12:04 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-07 12:04 add more bio helpers v3 Christoph Hellwig
2025-05-07 12:04 ` Christoph Hellwig [this message]
2025-05-07 12:04 ` [PATCH 02/19] block: add a bdev_rw_virt helper Christoph Hellwig
2025-05-07 14:01 ` Jens Axboe
2025-05-08 12:52 ` Matthew Wilcox
2025-05-08 13:10 ` Jens Axboe
2025-05-08 13:23 ` Johannes Thumshirn
2025-05-07 12:04 ` [PATCH 03/19] block: add a bio_add_max_vecs helper Christoph Hellwig
2025-05-07 12:04 ` [PATCH 04/19] block: add a bio_add_vmalloc helpers Christoph Hellwig
2025-05-07 12:04 ` [PATCH 05/19] block: remove the q argument from blk_rq_map_kern Christoph Hellwig
2025-05-07 12:04 ` [PATCH 06/19] block: pass the operation to bio_{map,copy}_kern Christoph Hellwig
2025-05-07 12:04 ` [PATCH 07/19] block: simplify bio_map_kern Christoph Hellwig
2025-05-07 12:04 ` [PATCH 08/19] bcache: use bio_add_virt_nofail Christoph Hellwig
2025-05-07 12:04 ` [PATCH 09/19] rnbd-srv: " Christoph Hellwig
2025-05-07 12:04 ` [PATCH 10/19] gfs2: use bdev_rw_virt in gfs2_read_super Christoph Hellwig
2025-05-07 12:04 ` [PATCH 11/19] zonefs: use bdev_rw_virt in zonefs_read_super Christoph Hellwig
2025-05-07 12:04 ` [PATCH 12/19] PM: hibernate: split and simplify hib_submit_io Christoph Hellwig
2025-05-07 12:04 ` [PATCH 13/19] dm-bufio: use bio_add_virt_nofail Christoph Hellwig
2025-05-07 12:04 ` [PATCH 14/19] dm-integrity: " Christoph Hellwig
2025-05-07 12:04 ` [PATCH 15/19] xfs: simplify xfs_buf_submit_bio Christoph Hellwig
2025-05-07 12:04 ` [PATCH 16/19] xfs: simplify xfs_rw_bdev Christoph Hellwig
2025-05-07 12:04 ` [PATCH 17/19] xfs: simplify building the bio in xlog_write_iclog Christoph Hellwig
2025-05-07 12:04 ` [PATCH 18/19] btrfs: use bdev_rw_virt in scrub_one_super Christoph Hellwig
2025-05-07 12:04 ` [PATCH 19/19] hfsplus: use bdev_rw_virt in hfsplus_submit_bio Christoph Hellwig
2025-05-07 14:02 ` add more bio helpers v3 Jens Axboe
-- strict thread matches above, loose matches on Subject: below --
2025-04-30 21:21 add more bio helpers v2 Christoph Hellwig
2025-04-30 21:21 ` [PATCH 01/19] block: add a bio_add_virt_nofail helper Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250507120451.4000627-2-hch@lst.de \
--to=hch@lst.de \
--cc=agruenba@redhat.com \
--cc=axboe@kernel.dk \
--cc=cem@kernel.org \
--cc=clm@fb.com \
--cc=colyli@kernel.org \
--cc=dlemoal@kernel.org \
--cc=dm-devel@lists.linux.dev \
--cc=dsterba@suse.com \
--cc=frank.li@vivo.com \
--cc=gfs2@lists.linux.dev \
--cc=glaubitz@physik.fu-berlin.de \
--cc=hare@suse.de \
--cc=haris.iqbal@ionos.com \
--cc=jinpu.wang@ionos.com \
--cc=johannes.thumshirn@wdc.com \
--cc=josef@toxicpanda.com \
--cc=jth@kernel.org \
--cc=kent.overstreet@linux.dev \
--cc=linux-bcache@vger.kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=naohiro.aota@wdc.com \
--cc=pavel@kernel.org \
--cc=rafael@kernel.org \
--cc=slava@dubeyko.com \
--cc=snitzer@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.