linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Niklas Cassel <Niklas.Cassel@wdc.com>
To: Bart Van Assche <bvanassche@acm.org>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>,
	Jens Axboe <axboe@kernel.dk>,
	"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
	"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
	"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	Christoph Hellwig <hch@lst.de>,
	Damien Le Moal <dlemoal@kernel.org>
Subject: Re: [PATCH 00/13] Pass data temperature information to zoned UFS devices
Date: Mon, 2 Oct 2023 19:19:31 +0000	[thread overview]
Message-ID: <ZRsXv4VULr82hKJP@x1-carbon> (raw)
In-Reply-To: <2fb20f41-ff84-4622-9d7c-7e88ff296509@acm.org>

On Mon, Oct 02, 2023 at 09:33:22AM -0700, Bart Van Assche wrote:
> On 10/2/23 04:53, Niklas Cassel wrote:
> > On Mon, Oct 02, 2023 at 01:37:59PM +0200, Niklas Cassel wrote:
> > > I don't know which user facing API Martin's I/O hinting series is intending
> > > to use.
> > > 
> > > However, while discussing this series at ALPSS, we did ask ourselves why this
> > > series is not reusing the already existing block layer API for providing I/O
> > > hints:
> > > https://github.com/torvalds/linux/blob/v6.6-rc4/include/uapi/linux/ioprio.h#L83-L103
> > > 
> > > We can have 1023 possible I/O hints, and so far we are only using 7, which
> > > means that there are 1016 possible hints left.
> > > This also enables you to define more than the 4 previous temperature hints
> > > (extreme, long, medium, short), if so desired.
> > > 
> > > There is also support in fio for these I/O hints:
> > > https://github.com/axboe/fio/blob/master/HOWTO.rst?plain=1#L2294-L2302
> > > 
> > > When this new I/O hint API has added, there was no other I/O hint API
> > > in the kernel (since the old fcntl() F_GET_FILE_RW_HINT / F_SET_FILE_RW_HINT
> > > API had already been removed when this new API was added).
> > > 
> > > So there should probably be a good argument why we would want to introduce
> > > yet another API for providing I/O hints, instead of extending the I/O hint
> > > API that we already have in the kernel right now.
> > > (Especially since it seems fairly easy to modify your patches to reuse the
> > > existing API.)
> > 
> > One argument might be that the current I/O hints API does not allow hints to
> > be stacked. So one would not e.g. be able to combine a command duration limit
> > with a temperature hint...
> 
> Hi Niklas,
> 
> Is your feedback about the user space API only or also about the
> mechanism that is used internally in the kernel?

The concern is only related to the user space API.

(However, if you do reuse the existing I/O prio hints, you will avoid
adding a new struct member to a lot of structs.)


> 
> Restoring the ability to pass data temperature information from a
> filesystem to a block device is much more important to me than
> restoring the ability to pass data temperature information from user
> space to a filesystem. Would it be sufficient to address your concern
> if patch 2/13 would be dropped from this series?

Right now 0 means no I/O hint.
Value 1-7 is used for CDL.
This means that bits 0-2 are currently used by CDL.

I guess we could define e.g. bits 3-5 to be used by temperature hints,
i.e. temperature hints could have values 0-7, where 0 would be no
temperature hint. (I guess we could still limit the temperature hints
to 1-4 if we want to keep the previous extreme/long/medium/short constants.)

This way, we can combine a CDL value with a temperature hint.
I.e. if user space has set bits in both bits 0-2 and 3-5, then both CDL
and temperature hints are used.

(And we would still have 4 bits left in 10 bit long I/O hints field that
can be used by some other I/O hint feature in the future.)

We could theoretically do this without changing the existing I/O prio hints
API, as all the existing hints (CDL descriptors 1-7) would keep their existing
values.

While I think this sounds quite nice, since it would avoid what your patches
currently do: adding a new "write_hint" struct member to the following structs:
struct kiocb, struct file, struct request, struct request, struct bio.

Instead it would rely on the existing ioprio struct members in these structs.
Additionally you would not need to add code that avoid merging of requests with
different write hints, as the current code already avoids merging of requests
with different ioprio (which thus extends to ioprio I/O hints).

Anyway, even if I do think that modifying your patch series to use the I/O prio
hints API would be a simpler and cleaner solution, including a smaller diffstat,
I do not care too strongly about this, and will leave the pondering to the very
wise maintainers.


Kind regards,
Niklas

  reply	other threads:[~2023-10-02 19:19 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-20 19:14 [PATCH 00/13] Pass data temperature information to zoned UFS devices Bart Van Assche
2023-09-20 19:14 ` [PATCH 01/13] fs/f2fs: Restore the whint_mode mount option Bart Van Assche
2023-10-02 10:32   ` Avri Altman
2023-10-03 19:33   ` Bean Huo
2023-09-20 19:14 ` [PATCH 02/13] fs: Restore support for F_GET_FILE_RW_HINT and F_SET_FILE_RW_HINT Bart Van Assche
2023-10-02 10:35   ` Avri Altman
2023-10-03 19:42   ` Bean Huo
2023-09-20 19:14 ` [PATCH 03/13] fs: Restore kiocb.ki_hint Bart Van Assche
2023-10-02 10:45   ` Avri Altman
2023-10-02 16:39     ` Bart Van Assche
2023-09-20 19:14 ` [PATCH 04/13] block: Restore write hint support Bart Van Assche
2023-10-02 11:23   ` Avri Altman
2023-10-02 17:02     ` Bart Van Assche
2023-10-02 18:08   ` Avri Altman
2023-10-03 19:52   ` Bean Huo
2023-09-20 19:14 ` [PATCH 05/13] scsi: core: Query the Block Limits Extension VPD page Bart Van Assche
2023-10-02 11:29   ` Avri Altman
2023-09-20 19:14 ` [PATCH 06/13] scsi_proto: Add struct io_group_descriptor Bart Van Assche
2023-10-02 11:41   ` Avri Altman
2023-10-02 17:16     ` Bart Van Assche
2023-10-02 18:16   ` Avri Altman
2023-09-20 19:14 ` [PATCH 07/13] sd: Translate data lifetime information Bart Van Assche
2023-10-02 13:11   ` Avri Altman
2023-10-02 17:42     ` Bart Van Assche
2023-10-03  5:48       ` Avri Altman
2023-10-03 16:58         ` Bart Van Assche
2023-10-03 16:59           ` Bart Van Assche
2023-09-20 19:14 ` [PATCH 08/13] scsi_debug: Reduce code duplication Bart Van Assche
2023-10-03  6:49   ` Avri Altman
2023-09-20 19:14 ` [PATCH 09/13] scsi_debug: Support the block limits extension VPD page Bart Van Assche
2023-09-20 19:14 ` [PATCH 10/13] scsi_debug: Rework page code error handling Bart Van Assche
2023-09-20 19:14 ` [PATCH 11/13] scsi_debug: Rework subpage " Bart Van Assche
2023-09-20 19:14 ` [PATCH 12/13] scsi_debug: Implement the IO Advice Hints Grouping mode page Bart Van Assche
2023-09-20 19:14 ` [PATCH 13/13] scsi_debug: Maintain write statistics per group number Bart Van Assche
2023-09-20 19:28 ` [PATCH 00/13] Pass data temperature information to zoned UFS devices Matthew Wilcox
2023-09-20 20:46   ` Bart Van Assche
2023-09-21  7:46     ` Niklas Cassel
2023-09-21 14:27       ` Bart Van Assche
2023-09-21 15:34         ` Niklas Cassel
2023-09-21 17:00           ` Bart Van Assche
2023-09-21 19:27         ` Matthew Wilcox
2023-09-21 19:39           ` Bart Van Assche
2023-09-21 19:46             ` Matthew Wilcox
2023-09-21 20:11               ` Bart Van Assche
2023-09-21 20:47               ` Jaegeuk Kim
2023-09-27 19:14 ` Martin K. Petersen
2023-09-27 20:49   ` Bart Van Assche
2023-10-02 11:38   ` Niklas Cassel
2023-10-02 11:53     ` Niklas Cassel
2023-10-02 16:33       ` Bart Van Assche
2023-10-02 19:19         ` Niklas Cassel [this message]
2023-10-02 17:20     ` Bart Van Assche
2023-10-03  1:40     ` Martin K. Petersen
2023-10-03 17:26       ` Bart Van Assche
2023-10-03 18:45         ` Niklas Cassel
2023-10-04  3:17         ` Martin K. Petersen
     [not found] ` <CGME20230920191557epcas2p34a114957acf221c0d8f60acbb3107c77@epcms2p6>
2023-10-05 11:41   ` [PATCH 01/13] fs/f2fs: Restore the whint_mode mount option Daejun Park
     [not found] ` <CGME20230920191549epcas2p35174687f1bebe87c42a658fa6aa57bff@epcms2p7>
2023-10-05 11:43   ` [PATCH 02/13] fs: Restore support for F_GET_FILE_RW_HINT and F_SET_FILE_RW_HINT Daejun Park
     [not found] ` <CGME20230920191556epcas2p39b150e6715248b625588a50b333e82e2@epcms2p1>
2023-10-05 11:46   ` [PATCH 04/13] block: Restore write hint support Daejun Park
     [not found] ` <CGME20230920191816epcas2p1b30d19aa41e51ffaf7c95f9100ee6311@epcms2p3>
2023-10-05 11:58   ` [PATCH 05/13] scsi: core: Query the Block Limits Extension VPD page Daejun Park
     [not found] ` <CGME20230920191554epcas2p2280a25d6b2a7fa81563bd6cf1e75549d@epcms2p8>
2023-10-05 11:59   ` [PATCH 06/13] scsi_proto: Add struct io_group_descriptor Daejun Park

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=ZRsXv4VULr82hKJP@x1-carbon \
    --to=niklas.cassel@wdc.com \
    --cc=axboe@kernel.dk \
    --cc=bvanassche@acm.org \
    --cc=dlemoal@kernel.org \
    --cc=hch@lst.de \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.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;
as well as URLs for NNTP newsgroup(s).