From: Youling Tang <youling.tang@linux.dev>
To: Kent Overstreet <kent.overstreet@linux.dev>
Cc: linux-bcachefs@vger.kernel.org, linux-kernel@vger.kernel.org,
youling.tang@linux.dev, Youling Tang <tangyouling@kylinos.cn>
Subject: [PATCH 1/2] bcachefs: Simplify bch2_bio_map()
Date: Thu, 5 Jun 2025 10:06:38 +0800 [thread overview]
Message-ID: <20250605020639.6868-1-youling.tang@linux.dev> (raw)
From: Youling Tang <tangyouling@kylinos.cn>
For the part of directly mapping the kernel virtual address, there is no
need to increase to bio page-by-page. It can be directly replaced by
bio_add_virt_nofail().
For the address part of the vmalloc region, its physical address is
discontinuous and needs to be increased page-by-page to bio. The helper
function bio_add_vmalloc() can be used to simplify the implementation of
bch2_bio_map().
Signed-off-by: Youling Tang <tangyouling@kylinos.cn>
---
NOTE:
The following patch needs to be applied (because the bcachefs.git repository
has not been synchronized to the latest):
commit 850e210d5ad2 ("block: add a bio_add_virt_nofail helper")
commit 8dd16f5e3469 ("block: add a bio_add_vmalloc helpers")
fs/bcachefs/util.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/fs/bcachefs/util.c b/fs/bcachefs/util.c
index dc3817f545fa..5e5075630bc6 100644
--- a/fs/bcachefs/util.c
+++ b/fs/bcachefs/util.c
@@ -623,17 +623,10 @@ void bch2_pd_controller_debug_to_text(struct printbuf *out, struct bch_pd_contro
void bch2_bio_map(struct bio *bio, void *base, size_t size)
{
- while (size) {
- struct page *page = is_vmalloc_addr(base)
- ? vmalloc_to_page(base)
- : virt_to_page(base);
- unsigned offset = offset_in_page(base);
- unsigned len = min_t(size_t, PAGE_SIZE - offset, size);
-
- BUG_ON(!bio_add_page(bio, page, len, offset));
- size -= len;
- base += len;
- }
+ if (is_vmalloc_addr(base))
+ bio_add_vmalloc(bio, base, size);
+ else
+ bio_add_virt_nofail(bio, base, size);
}
int bch2_bio_alloc_pages(struct bio *bio, size_t size, gfp_t gfp_mask)
--
2.34.1
next reply other threads:[~2025-06-05 2:07 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-05 2:06 Youling Tang [this message]
2025-06-05 2:06 ` [PATCH 2/2] bcachefs: Use bio_add_folio_nofail() for unfailable operations Youling Tang
2025-06-05 2:14 ` [PATCH 1/2] bcachefs: Simplify bch2_bio_map() Kent Overstreet
2025-06-27 2:16 ` Kent Overstreet
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=20250605020639.6868-1-youling.tang@linux.dev \
--to=youling.tang@linux.dev \
--cc=kent.overstreet@linux.dev \
--cc=linux-bcachefs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tangyouling@kylinos.cn \
/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.