On Mon, Oct 28, 2024 at 12:59:32PM +0100, Christoph Hellwig wrote: > On Fri, Oct 25, 2024 at 02:36:42PM -0700, Keith Busch wrote: > > +static u16 blkdev_write_hint(struct kiocb *iocb, struct block_device *bdev) > > +{ > > + u16 hint = iocb->ki_write_hint; > > + > > + if (!hint) > > + return file_inode(iocb->ki_filp)->i_write_hint; > > + > > + if (hint > bdev_max_write_hints(bdev)) > > + return file_inode(iocb->ki_filp)->i_write_hint; > > + > > + if (bdev_is_partition(bdev) && > > + !test_bit(hint - 1, bdev->write_hint_mask)) > > + return file_inode(iocb->ki_filp)->i_write_hint; > > I would have expected an error when using an invalid stream identifier. It's a hint. fcntl doesn't error if you give an unusable hint, so neither should this. You get sane default behavior.