On Fri, Oct 13, 2023 at 02:20:23PM -0700, Bart Van Assche wrote: > On 10/13/23 02:33, Niklas Cassel wrote: > > In commit c75e707fe1aa ("block: remove the per-bio/request write hint") > > this line from fs/direct-io.c was removed: > > - bio->bi_write_hint = dio->iocb->ki_hint; > > > > I'm not sure why this series does not readd a similar line to set the > > lifetime (using bio_set_data_lifetime()) also for fs/direct-io.c. > > It depends on how we want the user to specify the data lifetime for > direct I/O. This assignment is not modified by this patch series and > copies the data lifetime information from the ioprio bitfield from user > space into the bio: > > bio->bi_ioprio = dio->iocb->ki_ioprio; Before per-bio/request write hints were removed, things looked like this: io_uring.c: req->rw.kiocb.ki_hint = ki_hint_validate(file_write_hint(req->file)); fs/fcntl.c: static inline enum rw_hint file_write_hint(struct file *file) { if (file->f_write_hint != WRITE_LIFE_NOT_SET) return file->f_write_hint; return file_inode(file)->i_write_hint; } direct-io.c: bio->bi_write_hint = dio->iocb->ki_hint; buffered-io.c: bio->bi_write_hint = inode->i_write_hint; After this series, things instead look like this: direct-io.c: bio->bi_ioprio = dio->iocb->ki_ioprio; buffered-io.c: bio_set_data_lifetime(bio, inode->i_write_hint); So when you say: "It depends on how we want the user to specify the data lifetime for direct I/O.", do you mean that buffered I/O should use fcntl() to specify data lifetime, but direct I/O should used Linux IO priority API to specify the same? Because, to me that seems to be how the series is currently working. (I am sorry if I am missing something.) Kind regards, Niklas