On 1/23/24 02:36, Christoph Hellwig wrote: > Factor out a blk_apply_bdi_limits limits helper that can be used with > an explicit queue_limits argument, which will be useful later. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > block/blk-settings.c | 21 ++++++++++++--------- > 1 file changed, 12 insertions(+), 9 deletions(-) > > diff --git a/block/blk-settings.c b/block/blk-settings.c > index 06ea91e51b8b2e..e872b0e168525e 100644 > --- a/block/blk-settings.c > +++ b/block/blk-settings.c > @@ -85,6 +85,17 @@ void blk_set_stacking_limits(struct queue_limits *lim) > } > EXPORT_SYMBOL(blk_set_stacking_limits); > > +static void blk_apply_bdi_limits(struct backing_dev_info *bdi, > + struct queue_limits *lim) > +{ > + /* > + * For read-ahead of large files to be effective, we need to read ahead > + * at least twice the optimal I/O size. > + */ > + bdi->ra_pages = max(lim->io_opt * 2 / PAGE_SIZE, VM_READAHEAD_PAGES); Nit: while at it, you could replace that division by PAGE_SIZE with a right shift by PAGE_SHIFT. Other than that, looks good to me. Reviewed-by: Damien Le Moal <dlemoal@xxxxxxxxxx> > + bdi->io_pages = lim->max_sectors >> (PAGE_SHIFT - 9); > +} > + > /** > * blk_queue_bounce_limit - set bounce buffer limit for queue > * @q: the request queue for the device > @@ -393,15 +404,7 @@ EXPORT_SYMBOL(blk_queue_alignment_offset); > > void disk_update_readahead(struct gendisk *disk) > { > - struct request_queue *q = disk->queue; > - > - /* > - * For read-ahead of large files to be effective, we need to read ahead > - * at least twice the optimal I/O size. > - */ > - disk->bdi->ra_pages = > - max(queue_io_opt(q) * 2 / PAGE_SIZE, VM_READAHEAD_PAGES); > - disk->bdi->io_pages = queue_max_sectors(q) >> (PAGE_SHIFT - 9); > + blk_apply_bdi_limits(disk->bdi, &disk->queue->limits); > } > EXPORT_SYMBOL_GPL(disk_update_readahead); > -- Damien Le Moal Western Digital Research