From: Kanchan Joshi <joshi.k@samsung.com>
To: Christoph Hellwig <hch@lst.de>
Cc: axboe@kernel.dk, kbusch@kernel.org, hare@suse.de,
sagi@grimberg.me, martin.petersen@oracle.com, brauner@kernel.org,
viro@zeniv.linux.org.uk, jack@suse.cz, jaegeuk@kernel.org,
bcrl@kvack.org, dhowells@redhat.com, bvanassche@acm.org,
asml.silence@gmail.com, linux-nvme@lists.infradead.org,
linux-fsdevel@vger.kernel.org, io-uring@vger.kernel.org,
linux-block@vger.kernel.org, linux-aio@kvack.org,
gost.dev@samsung.com, vishak.g@samsung.com,
javier.gonz@samsung.com
Subject: Re: [PATCH v7 0/3] FDP and per-io hints
Date: Thu, 17 Oct 2024 20:05:38 +0530 [thread overview]
Message-ID: <8be869a7-c858-459a-a34b-063bc81ce358@samsung.com> (raw)
In-Reply-To: <20241015055006.GA18759@lst.de>
Seems per-I/O hints are not getting the love they deserve.
Apart from the block device, the usecase is when all I/Os of VM (or
container) are to be grouped together or placed differently.
Per-IO hints are fine-granular (enough for userspace to build
per-process/vm/file/whatever etc.) and add the flexibility we have
lacked so far.
As for conflict, I doubt if that exists. Please see below:
> 2) A per-I/O interface to set these temperature hint conflicts badly
> with how placement works in file systems. If we have an urgent need
> for it on the block device it needs to be opt-in by the file operations
> so it can be enabled on block device, but not on file systems by
> default. This way you can implement it for block device, but not
> provide it on file systems by default. If a given file system finds
> a way to implement it it can still opt into implementing it of course.
Why do you see this as something that is so different across filesystems
that they would need to "find a way to implement"?
Both per-file and per-io hints are supplied by userspace. Inode and
kiocb only happen to be the mean to receive the hint information.
FS is free to use this information (iff it wants) or simply forward this
down.
Per-file hint just gets stored (within inode) without individual FS
involvement. Per-io hint follows the same model (i.e., it is set by
upper layer like io_uring/aio) and uses kiocb to store the hint. It does
not alter the stored inode hint value!
After patch #3, filesystems have both per-file and per-io information
available. And as before, they can use that hint info (from kiocb or
inode) and/or simply forward.
The generic code (like fs/direct-io.c, fs/iomap/direct-io.c etc.,)
already forwards the incoming hints, without any intelligence.
And we need just that because with user-passed hints, the onus of
intelligence is on the userspace. This is how hints work on
xfs/ext4/btrfs files at this point.
The owner of the file (filesystem, block, whatever) can still use the
incoming hints to do any custom/extra feature. Either from inode or from
kiocb depending on what information (per-file or per-io hint) it finds
more useful for that custom feature. For example, F2FS is using
per-inode information to do something custom and that part has not been
changed by these patches.
Overall, I do not see the conflict. It's all user-driven. No?
For the currently uncommon case when FS decides to generate its own
hints (as opposed to userspace hint consumer/forwarder), it can directly
put the hint value in bio.
next prev parent reply other threads:[~2024-10-17 14:35 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20240930182052epcas5p37edefa7556b87c3fbb543275756ac736@epcas5p3.samsung.com>
2024-09-30 18:13 ` [PATCH v7 0/3] FDP and per-io hints Kanchan Joshi
2024-09-30 18:13 ` [PATCH v7 1/3] nvme: enable FDP support Kanchan Joshi
2024-10-02 18:37 ` Bart Van Assche
2024-10-03 12:55 ` Christoph Hellwig
2024-09-30 18:13 ` [PATCH v7 2/3] block, fs: restore kiocb based write hint processing Kanchan Joshi
2024-09-30 18:13 ` [PATCH v7 3/3] io_uring: enable per-io hinting capability Kanchan Joshi
2024-10-02 14:26 ` Pavel Begunkov
2024-10-17 14:58 ` Kanchan Joshi
2024-10-02 18:29 ` Bart Van Assche
2024-10-01 9:20 ` [PATCH v7 0/3] FDP and per-io hints Christoph Hellwig
2024-10-01 15:58 ` James R. Bergsten
2024-10-01 16:18 ` Jens Axboe
2024-10-02 7:51 ` Christoph Hellwig
2024-10-02 15:03 ` Jens Axboe
2024-10-02 15:13 ` Christoph Hellwig
2024-10-02 15:17 ` Keith Busch
2024-10-02 15:19 ` Christoph Hellwig
2024-10-02 15:33 ` Keith Busch
2024-10-03 12:51 ` Christoph Hellwig
2024-10-02 15:47 ` Martin K. Petersen
2024-10-02 18:34 ` Bart Van Assche
2024-10-03 12:55 ` Christoph Hellwig
2024-10-03 21:48 ` Keith Busch
2024-10-03 22:00 ` Bart Van Assche
2024-10-03 22:12 ` Jens Axboe
2024-10-03 22:17 ` Keith Busch
2024-10-04 6:21 ` Javier González
2024-10-04 6:24 ` Christoph Hellwig
2024-10-04 6:59 ` Javier González
2024-10-04 12:32 ` Christoph Hellwig
2024-10-07 11:29 ` Javier González
2024-10-08 12:27 ` Christoph Hellwig
2024-10-03 12:54 ` Christoph Hellwig
2024-10-03 22:14 ` Jens Axboe
2024-10-04 5:31 ` Christoph Hellwig
2024-10-04 6:18 ` Javier González
2024-10-04 6:27 ` Christoph Hellwig
2024-10-04 6:52 ` Javier González
2024-10-04 12:30 ` Christoph Hellwig
2024-10-07 10:10 ` Javier González
2024-10-08 10:06 ` Hans Holmberg
2024-10-09 14:36 ` Javier Gonzalez
2024-10-10 6:40 ` Hans Holmberg
2024-10-10 7:13 ` Javier Gonzalez
2024-10-10 9:20 ` Christoph Hellwig
2024-10-10 12:22 ` Javier Gonzalez
2024-10-11 8:56 ` Christoph Hellwig
2024-10-11 12:21 ` Javier Gonzalez
2024-10-11 16:59 ` Keith Busch
2024-10-10 10:46 ` Hans Holmberg
2024-10-10 12:27 ` Javier Gonzalez
2024-10-11 8:59 ` Christoph Hellwig
2024-10-08 12:25 ` Christoph Hellwig
2024-10-08 14:44 ` Keith Busch
2024-10-09 9:28 ` Christoph Hellwig
2024-10-09 15:06 ` Keith Busch
2024-10-10 7:07 ` Javier González
2024-10-10 9:13 ` Christoph Hellwig
2024-10-10 11:59 ` Javier González
2024-10-11 9:02 ` Christoph Hellwig
2024-10-11 17:08 ` Jens Axboe
2024-10-14 6:21 ` Christoph Hellwig
2024-10-14 7:02 ` Javier Gonzalez
2024-10-14 7:47 ` Christoph Hellwig
2024-10-14 9:08 ` Javier Gonzalez
2024-10-14 11:50 ` Christoph Hellwig
2024-10-15 3:07 ` Javier Gonzalez
2024-10-15 5:30 ` Christoph Hellwig
2024-10-10 9:10 ` Christoph Hellwig
2024-10-09 16:28 ` Nitesh Shetty
2024-10-02 15:22 ` Jens Axboe
2024-10-01 16:23 ` Keith Busch
2024-10-02 7:49 ` Christoph Hellwig
2024-10-02 14:56 ` Keith Busch
2024-10-02 15:00 ` Jens Axboe
2024-10-03 0:20 ` Bart Van Assche
2024-10-15 5:50 ` Christoph Hellwig
2024-10-15 15:09 ` Keith Busch
2024-10-15 15:22 ` Christoph Hellwig
2024-10-17 14:35 ` Kanchan Joshi [this message]
2024-10-17 15:23 ` Christoph Hellwig
2024-10-17 15:44 ` Keith Busch
2024-10-17 15:46 ` Christoph Hellwig
2024-10-17 16:06 ` Keith Busch
2024-10-17 16:15 ` Bart Van Assche
2024-10-17 16:23 ` Keith Busch
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=8be869a7-c858-459a-a34b-063bc81ce358@samsung.com \
--to=joshi.k@samsung.com \
--cc=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=bcrl@kvack.org \
--cc=brauner@kernel.org \
--cc=bvanassche@acm.org \
--cc=dhowells@redhat.com \
--cc=gost.dev@samsung.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=io-uring@vger.kernel.org \
--cc=jack@suse.cz \
--cc=jaegeuk@kernel.org \
--cc=javier.gonz@samsung.com \
--cc=kbusch@kernel.org \
--cc=linux-aio@kvack.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=martin.petersen@oracle.com \
--cc=sagi@grimberg.me \
--cc=viro@zeniv.linux.org.uk \
--cc=vishak.g@samsung.com \
/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