From: Gao Xiang <hsiangkao@linux.alibaba.com>
To: Joanne Koong <joannelkoong@gmail.com>
Cc: Christoph Hellwig <hch@infradead.org>,
brauner@kernel.org, miklos@szeredi.hu, djwong@kernel.org,
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: Re: [PATCH v2 13/16] iomap: move read/readahead logic out of CONFIG_BLOCK guard
Date: Fri, 12 Sep 2025 09:09:08 +0800 [thread overview]
Message-ID: <66971d07-2c1a-4632-bc9e-e0fc0ae2bd04@linux.alibaba.com> (raw)
In-Reply-To: <6609e444-5210-42aa-b655-8ed8309aae75@linux.alibaba.com>
On 2025/9/12 08:06, Gao Xiang wrote:
>
>
> On 2025/9/12 03:45, Joanne Koong wrote:
>> On Thu, Sep 11, 2025 at 8:29 AM Gao Xiang <hsiangkao@linux.alibaba.com> wrote:
>
> ...
>
>>> ```
>>>
>>> But if FUSE or some other fs later needs to request L2P information
>>> in their .iomap_begin() and need to send L2P requests to userspace
>>> daemon to confirm where to get the physical data (maybe somewhat
>>> like Darrick's work but I don't have extra time to dig into that
>>> either) rather than just something totally bypass iomap-L2P logic
>>> as above, then I'm not sure the current `iomap_iter->private` is
>>> quite seperate to `struct iomap_read_folio_ctx->private`, it seems
>>
>> If in the future this case arises, the L2P mapping info is accessible
>> by the read callback in the current design. `.read_folio_range()`
>> passes the iomap iter to the filesystem and they can access
>> iter->private to get the L2P mapping data they need.
>
> The question is what exposes to `iter->private` then, take
> an example:
>
> ```
> struct file *file;
> ```
>
> your .read_folio_range() needs `file->private_data` to get
> `struct fuse_file` so `file` is kept into
> `struct iomap_read_folio_ctx`.
>
> If `file->private_data` will be used for `.iomap_begin()`
> as well, what's your proposal then?
>
> Duplicate the same `file` pointer in both
> `struct iomap_read_folio_ctx` and `iter->private` context?
It's just an not-so-appropriate example because
`struct file *` and `struct fuse_file *` are widely used
in the (buffer/direct) read/write flow but Darrick's work
doesn't use `file` in .iomap_{begin/end}.
But you may find out `file` pointer is already used for
both FUSE buffer write and your proposal, e.g.
buffer write:
/*
* Use iomap so that we can do granular uptodate reads
* and granular dirty tracking for large folios.
*/
written = iomap_file_buffered_write(iocb, from,
&fuse_iomap_ops,
&fuse_iomap_write_ops,
file);
I just try to say if there is a case/feature which needs
something previously in `struct iomap_read_folio_ctx` to
be available in .iomap_{begin,end} too, you have to either:
- duplicate this in `iter->private` as well;
- move this to `iter->private` entirely.
The problem is that both `iter->private` and
`struct iomap_read_folio_ctx` are filesystem-specific,
I can only see there is no clear boundary to leave something
in which one. It seems just like an artificial choice.
Thanks,
Gao Xiang
>
>
>>
>>> both needs fs-specific extra contexts for the same I/O flow.
>>>
>>> I think the reason why `struct iomap_read_folio_ctx->private` is
>>> introduced is basically previous iomap filesystems are all
>>> bio-based, and they shares `bio` concept in common but
>>> `iter->private` was not designed for this usage.
>>>
>>> But fuse `struct iomap_read_folio_ctx` and
>>> `struct fuse_fill_read_data` are too FUSE-specific, I cannot
>>> see it could be shared by other filesystems in the near future,
>>> which is much like a single-filesystem specific concept, and
>>> unlike to `bio` at all.
>>
>> Currently fuse is the only non-block-based filesystem using iomap but
>> I don't see why there wouldn't be more in the future. For example,
>> while looking at some of the netfs code, a lot of the core
>> functionality looks the same between that and iomap and I think it
>> might be a good idea to have netfs in the future use iomap's interface
>> so that it can get the large folio dirty/uptodate tracking stuff and
>> any other large folio stuff like more granular writeback stats
>> accounting for free.
>
> I think you need to ask David on this idea, I've told him to
> switch fscache to use iomap in 2022 before netfs is fully out [1],
> but I don't see it will happen.
>
> [1] https://lore.kernel.org/linux-fsdevel/YfivxC9S52FlyKoL@B-P7TQMD6M-0146/
>
> Thanks,
> Gao Xiang
next prev parent reply other threads:[~2025-09-12 1:09 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 ` [PATCH v2 03/16] iomap: rename cur_folio_in_bio to folio_owned Joanne Koong
2025-09-11 11:10 ` 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 [this message]
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=66971d07-2c1a-4632-bc9e-e0fc0ae2bd04@linux.alibaba.com \
--to=hsiangkao@linux.alibaba.com \
--cc=brauner@kernel.org \
--cc=djwong@kernel.org \
--cc=gfs2@lists.linux.dev \
--cc=hch@infradead.org \
--cc=joannelkoong@gmail.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 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.