From: Joanne Koong <joannelkoong@gmail.com>
To: brauner@kernel.org, miklos@szeredi.hu
Cc: hch@infradead.org, djwong@kernel.org,
hsiangkao@linux.alibaba.com, linux-block@vger.kernel.org,
gfs2@lists.linux.dev, linux-fsdevel@vger.kernel.org,
kernel-team@meta.com, linux-xfs@vger.kernel.org,
linux-doc@vger.kernel.org
Subject: [PATCH v2 03/16] iomap: rename cur_folio_in_bio to folio_owned
Date: Mon, 8 Sep 2025 11:51:09 -0700 [thread overview]
Message-ID: <20250908185122.3199171-4-joannelkoong@gmail.com> (raw)
In-Reply-To: <20250908185122.3199171-1-joannelkoong@gmail.com>
The purpose of struct iomap_readpage_ctx's cur_folio_in_bio is to track
whether the folio is owned by the bio (where thus the bio is responsible
for unlocking the folio) or if it needs to be unlocked by iomap. Rename
this to folio_owned to make the purpose more clear and so that when
iomap read/readahead logic is made generic, the name also makes sense
for filesystems that don't use bios.
Signed-off-by: Joanne Koong <joannelkoong@gmail.com>
---
fs/iomap/buffered-io.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c
index a3b02ed5328f..598998269107 100644
--- a/fs/iomap/buffered-io.c
+++ b/fs/iomap/buffered-io.c
@@ -352,7 +352,12 @@ static void iomap_read_end_io(struct bio *bio)
struct iomap_readpage_ctx {
struct folio *cur_folio;
- bool cur_folio_in_bio;
+ /*
+ * Is the folio owned by this readpage context, or by some
+ * external IO helper? Either way, the owner of the folio is
+ * responsible for unlocking it when the read completes.
+ */
+ bool folio_owned;
struct bio *bio;
struct readahead_control *rac;
};
@@ -381,7 +386,7 @@ static void iomap_read_folio_range_bio_async(const struct iomap_iter *iter,
loff_t length = iomap_length(iter);
sector_t sector;
- ctx->cur_folio_in_bio = true;
+ ctx->folio_owned = true;
if (ifs) {
spin_lock_irq(&ifs->state_lock);
ifs->read_bytes_pending += plen;
@@ -493,7 +498,7 @@ int iomap_read_folio(struct folio *folio, const struct iomap_ops *ops)
iomap_submit_read_bio(&ctx);
- if (!ctx.cur_folio_in_bio)
+ if (!ctx.folio_owned)
folio_unlock(folio);
/*
@@ -513,13 +518,13 @@ static int iomap_readahead_iter(struct iomap_iter *iter,
while (iomap_length(iter)) {
if (ctx->cur_folio &&
offset_in_folio(ctx->cur_folio, iter->pos) == 0) {
- if (!ctx->cur_folio_in_bio)
+ if (!ctx->folio_owned)
folio_unlock(ctx->cur_folio);
ctx->cur_folio = NULL;
}
if (!ctx->cur_folio) {
ctx->cur_folio = readahead_folio(ctx->rac);
- ctx->cur_folio_in_bio = false;
+ ctx->folio_owned = false;
}
ret = iomap_readpage_iter(iter, ctx);
if (ret)
@@ -562,7 +567,7 @@ void iomap_readahead(struct readahead_control *rac, const struct iomap_ops *ops)
iomap_submit_read_bio(&ctx);
- if (ctx.cur_folio && !ctx.cur_folio_in_bio)
+ if (ctx.cur_folio && !ctx.folio_owned)
folio_unlock(ctx.cur_folio);
}
EXPORT_SYMBOL_GPL(iomap_readahead);
--
2.47.3
next prev parent reply other threads:[~2025-09-08 18:52 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-08 18:51 [PATCH v2 00/16] fuse: use iomap for buffered reads + readahead Joanne Koong
2025-09-08 18:51 ` [PATCH v2 01/16] iomap: move async bio read logic into helper function Joanne Koong
2025-09-11 11:09 ` Christoph Hellwig
2025-09-12 16:01 ` Joanne Koong
2025-09-08 18:51 ` [PATCH v2 02/16] iomap: move read/readahead bio submission " Joanne Koong
2025-09-11 11:09 ` Christoph Hellwig
2025-09-08 18:51 ` Joanne Koong [this message]
2025-09-11 11:10 ` [PATCH v2 03/16] iomap: rename cur_folio_in_bio to folio_owned Christoph Hellwig
2025-09-08 18:51 ` [PATCH v2 04/16] iomap: store read/readahead bio generically Joanne Koong
2025-09-11 11:11 ` Christoph Hellwig
2025-09-12 16:10 ` Joanne Koong
2025-09-08 18:51 ` [PATCH v2 05/16] iomap: propagate iomap_read_folio() error to caller Joanne Koong
2025-09-11 11:13 ` Christoph Hellwig
2025-09-12 16:28 ` Joanne Koong
2025-09-15 16:05 ` Christoph Hellwig
2025-09-08 18:51 ` [PATCH v2 06/16] iomap: iterate over entire folio in iomap_readpage_iter() Joanne Koong
2025-09-11 11:15 ` Christoph Hellwig
2025-09-08 18:51 ` [PATCH v2 07/16] iomap: rename iomap_readpage_iter() to iomap_read_folio_iter() Joanne Koong
2025-09-11 11:16 ` Christoph Hellwig
2025-09-08 18:51 ` [PATCH v2 08/16] iomap: rename iomap_readpage_ctx struct to iomap_read_folio_ctx Joanne Koong
2025-09-11 11:16 ` Christoph Hellwig
2025-09-08 18:51 ` [PATCH v2 09/16] iomap: add public start/finish folio read helpers Joanne Koong
2025-09-11 11:16 ` Christoph Hellwig
2025-09-08 18:51 ` [PATCH v2 10/16] iomap: make iomap_read_folio_ctx->folio_owned internal Joanne Koong
2025-09-11 11:17 ` Christoph Hellwig
2025-09-08 18:51 ` [PATCH v2 11/16] iomap: add caller-provided callbacks for read and readahead Joanne Koong
2025-09-09 0:14 ` Gao Xiang
2025-09-09 0:40 ` Gao Xiang
2025-09-09 15:24 ` Joanne Koong
2025-09-09 23:21 ` Gao Xiang
2025-09-10 17:41 ` Joanne Koong
2025-09-11 11:19 ` Christoph Hellwig
2025-09-11 11:26 ` Christoph Hellwig
2025-09-12 17:36 ` Joanne Koong
2025-09-08 18:51 ` [PATCH v2 12/16] iomap: add bias for async read requests Joanne Koong
2025-09-11 11:31 ` Christoph Hellwig
2025-09-12 17:30 ` Joanne Koong
2025-09-15 16:05 ` Christoph Hellwig
2025-09-16 19:14 ` Joanne Koong
2025-09-19 15:04 ` Christoph Hellwig
2025-09-19 17:58 ` Joanne Koong
2025-09-08 18:51 ` [PATCH v2 13/16] iomap: move read/readahead logic out of CONFIG_BLOCK guard Joanne Koong
2025-09-09 2:14 ` Gao Xiang
2025-09-09 15:33 ` Joanne Koong
2025-09-10 4:59 ` Gao Xiang
2025-09-11 11:37 ` Christoph Hellwig
2025-09-11 12:29 ` Gao Xiang
2025-09-11 19:45 ` Joanne Koong
2025-09-12 0:06 ` Gao Xiang
2025-09-12 1:09 ` Gao Xiang
2025-09-12 1:10 ` Gao Xiang
2025-09-12 19:56 ` Joanne Koong
2025-09-12 20:09 ` Joanne Koong
2025-09-12 23:35 ` Gao Xiang
2025-09-12 23:20 ` Gao Xiang
2025-09-11 11:44 ` Christoph Hellwig
2025-09-16 23:23 ` Joanne Koong
2025-09-08 18:51 ` [PATCH v2 14/16] fuse: use iomap for read_folio Joanne Koong
2025-09-08 18:51 ` [PATCH v2 15/16] fuse: use iomap for readahead Joanne Koong
2025-09-08 18:51 ` [PATCH v2 16/16] fuse: remove fc->blkbits workaround for partial writes Joanne Koong
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=20250908185122.3199171-4-joannelkoong@gmail.com \
--to=joannelkoong@gmail.com \
--cc=brauner@kernel.org \
--cc=djwong@kernel.org \
--cc=gfs2@lists.linux.dev \
--cc=hch@infradead.org \
--cc=hsiangkao@linux.alibaba.com \
--cc=kernel-team@meta.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=miklos@szeredi.hu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).